
本日,讨论一个风趣的话题:MySQL 单表数据抵达若干时才须要斟酌分库分表?有人说 2000 万行,也有人说 500 万行。那末,你以为这个数值若干才适宜呢?
曾经在中国互联网技术圈广为流传着这么一个说法:MySQL 单表数据量大于 2000 万行,机能会显著下落。事实上,这个听说听说最早起源于百度。细致状况大概是如许的,昔时的 DBA 测试 MySQL机能时发明,当单表的量在 2000 万行量级的时刻,SQL 操纵的机能急剧下落,因而,结论由此而来。然后又听说百度的工程师流动到业界的别的公司,也带去了这个信息,所以,就在业界流传开这么一个说法。
再厥后,阿里巴巴《Java 开辟手册》提出单表行数凌驾 500 万行或许单表容量凌驾 2GB,才引荐举行分库分表。对此,有阿里的黄金铁律支持,所以,很多人设想大数据存储时,多会以此为规范,举行分表操纵。
那末,你以为这个数值若干才适宜呢?为何不是 300 万行,或许是 800 万行,而是 500 万行?或许你会说这个能够就是阿里的最好实战的数值吧?那末,题目又来了,这个数值是怎样评价出来的呢?稍等片刻,请你小小思索一会儿。
事实上,这个数值和现实纪录的条数无关,而与 MySQL 的设置以及机械的硬件有关。由于,MySQL 为了进步机能,会将表的索引装载到内存中。InnoDB buffer size 充足的状况下,其能完玉成加载进内存,查询不会有题目。然则,当单表数据库抵达某个量级的上限时,致使内存没法存储其索引,使得以后的 SQL 查询会发生磁盘 IO,从而致使机能下落。固然,这个另有细致的表构造的设想有关,终究致使的题目都是内存限定。这里,增添硬件设置,能够会带来吹糠见米的机能提拔哈。
那末,我关于分库分表的看法是,须要结合现实需求,不宜过分设想,在项目一开始不采纳分库与分表设想,而是跟着营业的增进,在没法继承优化的状况下,再斟酌分库与分表进步体系的机能。对此,阿里巴巴《Java 开辟手册》补充到:假如估计三年后的数据量基础达不到这个级别,请不要在建立表时就分库分表。那末,回到一开始的题目,你以为这个数值若干才适宜呢?我的发起是,依据本身的机械的状况综合评价,假如内心没有规范,那末临时以 500 万行作为一个一致的规范,相对而言算是一个比较折衷的数值。
更多MySQL相干技术文章,请接见MySQL教程栏目举行进修!
以上就是MySQL单表数据不要凌驾500万行:是履历数值,照样黄金铁律?的细致内容,更多请关注ki4网别的相干文章!