[mysql] 2024-04-25 圈点293
摘要:mysql的数据量达到多少才分表?一般来说,卡了才会想到分表,但也不一定就要用分表处理。首先要分析实际情况,从数据库周边的情况来分析
mysql的数据量达到多少才分表?有人说500万,有人说1000万,也有人说300万...我觉得这个问题要具体分析,不能盲目。一般来说,卡了才会想到分表,但也不一定就要用分表处理。首先要分析实际情况,从数据库周边的情况来分析。
具体分析的情况有如下几点(暂时整理)
1,cpu百分比
2,内存占用率
3,硬盘IO数
4,数据库配置参数的优化
5,表结构的优化,及索引的优化
6,SQL执行语句的优化
7,程序的优化
8,应用场景
...
卡了,一般就要分析卡的原因。上面这些因素很多都是相互关联的。
下面的实例是在比较理想和假设某些因字数问题没有明的状态下的一些问题:
比如1:设置的缓存小了,而实际上内存足够,造成硬盘I/O升高,硬盘利用率经常100%,CPU百分比又低。实际只要设置加大缓存就可以了,这是最常遇到的问题。
比如2:数据量稍大又没有设置索引,但实际的sql语句又复杂,造成经常遍历全表,也会非常卡。
比如3:数据量非常大,如某表数据量有近2亿条记录,占用硬盘23G,正常情况,只要遍历表肯定卡,但优化后,其实simple的sql语句也会在0.几秒。
那数据量达到多少才分表呢。
我觉得在忽视配置参数和各种优化的情况下有几个主要的因素可以考虑,
1,表占磁盘空间的大小占内存的一半为限;
2,表索引大小为内存的八分之一;
3,能升硬件先升硬件,然后再考虑分表。
更多的是硬件和优化的结合才更完美!