MySQL-mysql 海量数据不分分表影响吗?
我有个记录日志的数据库表已经有几千万的数据了。结构如下:
因为每次查询都是有固定的条件,id=? 这样速度非常快。
但是日志量不停的增大,是否分表影响查询速度吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我有个记录日志的数据库表已经有几千万的数据了。结构如下:
因为每次查询都是有固定的条件,id=? 这样速度非常快。
但是日志量不停的增大,是否分表影响查询速度吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
如果你的查询是固定的id=?,那就比较好办了,目前还不用分。到达1亿以后再考虑分吧,我试了一下,一个有1亿数据的表里,通用id查询一条记录不到1毫秒。
有二种分的办法:
1.根据用户ID大小分表,比如1千万一个表
2.根据用户ID做表分区
分分表把一些经常查询的字段做成一张表,查询速度是会提高的,但会增加更新和删除操作时间,需要权衡。除了分分表,提高查询速度还有以下方法:
1.把经常查找的字段(如id)做个冗余表,保存到memcache里面,直接从memcache里存取。
2.开启MySQL的查询缓存,监视MySQL的select、updata、delete语句使用百分比,若select占很大比例,开启查询缓存是值得的。
3.日志表“按时间分区”保存。
日志文件表,可以按照时间端来分表存放,虽然你只使用id=?这样的条件来查询,感觉不出速度受多少影响,但分表的目的在于:
1.减小数据库的负担,缩短查询时间,如果以后查询要使用更多的条件,查询速度的区别就会很明显;
2.提供数据插入及更新速度,mysql在插入数据时会锁定表或者锁定行,这个会影响到其他读写队列,而且有的读锁也会影响到更新队列,这些大量的读写都集中在一个表上,势必会影响速度,增加服务器负担;
3.分表存放数据有利于以后使用集群来处理这些数据