MySQL处理记录数的极限是多少

2011-04-07 09:51:37 +08:00
 dongsheng
最近处理一个大学的课程管理系统数据库,他们的一个日志表达到2000万行记录的水平,已经有了严重的性能问题,mysql有很多死掉的查询,请问MySQL何时会在记录数上出现瓶颈,有什么合适的解决办法吗?(这里不可能使用NoSQL)
23496 次点击
所在节点    MySQL
56 条回复
areless
2011-04-07 14:06:18 +08:00
SELECT * FROM log WHERE time>* && time<* && ...。
每个查询都提前缩小要查询的范围。

定期OPTIMIZE TABLE。

my.cnf
concurrent_insert=2
Platinum
2011-04-07 14:17:29 +08:00
@dongsheng 说的就是你这标题,再配合提问内容,感觉有点不知天高地厚了。碰到问题先想的是不是自己的问题,而是 MySQL 的问题,习惯做这种假设的人实在是不着人喜欢

你要是写成“现在有2000万条记录的表,该如何优化”,我自然也不会提会不会用 MySQL
areless
2011-04-07 14:21:12 +08:00
一般来说索引跟SQL语句都没问题的话。MySQL的瓶颈在磁盘IO上。可以用RAID 0来提升磁盘读写速度。或者,设从服务在第二块第三块硬盘。通过mysql proxy分别用不同的从服务去处理查询。当mysql操作swap了,那查询效率肯定下来了,所以内存首先要富裕。
dongsheng
2011-04-07 14:22:21 +08:00
@Platinum 您不喜欢就不劳您指点了。
kingwkb
2011-04-07 14:34:28 +08:00
争吵没意思,按时间分区应该管用
TheOnly92
2011-04-07 14:37:55 +08:00
目前楼主能做的是什么?可以暂时让网站的作业停顿下来吗?4~5 小时?
bigbrother
2011-04-07 14:43:02 +08:00
根据业务对某个字段进行分区就OK了。一般是时间。

我处理过一个亿级的表,分区后查起来飕飕的,而且还有连表查询
lianghai
2011-04-07 14:44:20 +08:00
@e6nian 想到了 P 大的选课系统……这个星球上有没有让人舒心一点的选课系统可以瞻仰呢?
dongsheng
2011-04-07 14:50:53 +08:00
@kingwkb @areless 不吵,只是有点不好意思我这些愚笨且不知天高地厚的问题惊动了上面的大神,以后问问题一定先读上一斗书再考虑是否该问 :D

@areless:程序里面的query都是有条件,我上面举的select例子其实也不完全,不光是有course module action的约束也有时间的约束,因为这个表的主要功能就是显示最近的课程活动。刚才跟联系上那个大学的sysadmin,那个服务器的配置确实不佳,内存就挺紧张,以至于不得不用脚本监控进程,达到一定数量就需要重启。我再多研究下数据库,也得建议他们对内存进行升级,谢谢。

我并不是质疑mysql处理不了2000万的数据,而是怀疑我可能错过某些可能很简单的问题导致mysql表现如此槽糕。不管怎么说,感谢楼上所有提出建设性意见的朋友。
yiyang
2011-04-07 15:51:06 +08:00
@Platinum apache 和 缓存方面的看什么书?
magic22cn
2011-04-07 17:19:20 +08:00
大表好解决:Partitioning,单表2000万不算什么,选择好合适的键分区就好了。不过mysql的分区功能很弱,不是所有想法都能实现的
no2x
2011-04-07 18:16:10 +08:00
Try this: SELECT COUNT(id) FROM log;
darasion
2011-04-07 18:22:59 +08:00
唉。这样的问题太像上次要我回答的面试题了。。。可惜我只知道原理,不知道术语以及具体如何去做。没说好。
bruce
2011-04-07 19:29:09 +08:00
按时间分表分库,分磁盘
xmbaozi
2017-06-02 15:43:03 +08:00
这个全表 count 可以单独用计数器
xmbaozi
2017-06-02 15:44:23 +08:00
刚刚在处理一个 5 亿条记录的表。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/11090

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX