2 customer yuan customer_yuan 于 2017.04.01 12:36 提问

[mysql数据库]10万张表和1张亿级的表该怎样选择呢?请求高手给个建议

mysql数据库
1、每张表2000左右的数据,10万张表;2、一张表2亿的数据
对表的操作频率(平每1-3分钟操作一次,高频时3-10秒操作一次)
这两种场景,哪种效率高呢?

请求高手给个建议

5个回答

caozhy
caozhy   Ds   Rxr 2017.04.02 00:32

这种规模的数据,考虑的重点不是在一台服务器上哪个效率高的问题,因为都hold不住。考虑的是哪个方案的伸缩性更好。所以伸缩性,就是可以部署到n个服务器上做群集,得到的性能是单台服务器的x倍。最理想的情况,x=n,当然这是不可能,但是x尽可能趋向于n,并且随着n的增长,x能保持线性增长,这个才是你要考虑的。

qq123zzz
qq123zzz   2017.04.02 23:37

做集群是个比较好的选择,临时处理建议使用你所描述的第一种情况,多表

morgerton
morgerton   2017.04.01 12:59

你想提高效率,可以试试统计下,哪个表用的比较频繁,哪次查询操作用的多,如果查询的好多次都是局部一小段的数据,肯定10w张的好。

customer_yuan
customer_yuan 这些数据都是正常的业务数据,查询都很频繁,不过程序里面针对查询频率高的都做了分布式缓存的。主要就是更新数据。
大约 2 个月之前 回复
oyljerry
oyljerry   Ds   Rxr 2017.04.01 12:58

一般是数据分离,对于热点数据单独一个表或几个,而冷数据可以放到一个大表,然后热点数据表定期把一些数据转移

oyljerry
oyljerry 回复customer_yuan: 太频繁就应该把数据存缓存等,然后再定期写数据库
大约 2 个月之前 回复
customer_yuan
customer_yuan 表里面的数据已经精简了,都是热点数据。 这些数据都是正常的业务数据,查询都很频繁,不过程序里面针对查询频率高的都做了分布式缓存的。主要就是更新数据。
大约 2 个月之前 回复
youcaihuahy
youcaihuahy   2017.04.01 12:50

从效率上将,肯定是第一种方案速度要快,表和表里面的数据相当于已经做了一个索引,所以查询和操作都会快一点,但是表的数量太多了,不利于管理;第二种所有的数据都在一张表的话,表管理更方便,但是一旦用了全表扫描,这么大的数据量是查不出结果的(响应太差,可能请求都超时了)。
所以最好针对第二种方案做一些优化,根据自己的业务逻辑,选择一些字段设置索引,并且对表做一些读写分离的措施,不到万不得已尽量不要锁表。

customer_yuan
customer_yuan 这些数据都是正常的业务数据,查询都很频繁,不过程序里面针对查询频率高的都做了分布式缓存的。主要就是更新数据。
大约 2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片