MySQL-mysql 海量数据不分分表影响吗?

发布于 2017-08-23 03:23:11 字数 215 浏览 1325 评论 3

我有个记录日志的数据库表已经有几千万的数据了。结构如下:
请输入图片描述

因为每次查询都是有固定的条件,id=? 这样速度非常快。
但是日志量不停的增大,是否分表影响查询速度吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

甜柠檬 2017-10-28 20:10:57

如果你的查询是固定的id=?,那就比较好办了,目前还不用分。到达1亿以后再考虑分吧,我试了一下,一个有1亿数据的表里,通用id查询一条记录不到1毫秒。

有二种分的办法:

1.根据用户ID大小分表,比如1千万一个表
2.根据用户ID做表分区

甜柠檬 2017-09-29 15:15:57

分分表把一些经常查询的字段做成一张表,查询速度是会提高的,但会增加更新和删除操作时间,需要权衡。除了分分表,提高查询速度还有以下方法:
1.把经常查找的字段(如id)做个冗余表,保存到memcache里面,直接从memcache里存取。
2.开启MySQL的查询缓存,监视MySQL的select、updata、delete语句使用百分比,若select占很大比例,开启查询缓存是值得的。
3.日志表“按时间分区”保存。

泛泛之交 2017-09-22 22:36:18

日志文件表,可以按照时间端来分表存放,虽然你只使用id=?这样的条件来查询,感觉不出速度受多少影响,但分表的目的在于:
1.减小数据库的负担,缩短查询时间,如果以后查询要使用更多的条件,查询速度的区别就会很明显;
2.提供数据插入及更新速度,mysql在插入数据时会锁定表或者锁定行,这个会影响到其他读写队列,而且有的读锁也会影响到更新队列,这些大量的读写都集中在一个表上,势必会影响速度,增加服务器负担;
3.分表存放数据有利于以后使用集群来处理这些数据

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文