扫码关注官方订阅号
MyIsam 引擎,一张表最多能存多少条记录,在什么样的数据规模下会考虑分表?
人生最曼妙的风景,竟是内心的淡定与从容!
见官方文档:
There is a limit of (2^32)^2 (1.844E+19) rows in a MyISAM table.
这是MyISAM的理论上限,实践上是达不到的。
实际行数上限还受myisam_data_pointer_size限制,64位的mysql的myisam_data_pointer_size通常是6,即48位,行数是2^48 - 1 = 281474976710655。
myisam_data_pointer_size
mysql的myisam_data_pointer_size
第二个上限是表的存储空间大小限制(Storage limits):256TB。
所以只要知道最小一行需要的空间,就能求出最多能存的记录数。
单表上限的话不怎么好确定,基于自己的业务和服务器性能,做些单表的压力测试,有很多现成的测试工具,如sysbench。什么时候考虑分库分表,这个时候肯定会感觉到查询已经很慢了,数据量肯定很大了起码千万量级。即使建立了有效的索引,查询也很慢。可以分析慢查询日志,也可以用一些监控工具如Nagios实时监控mysql的状态。什么时候分库分表心里就能有个数了
理论上没有限制,遇见过,上亿的不过,不建议这样干操作大表太操心了,
不用考虑上限的,因为一般项目达不到上限就需要分表分区等其他操作,不然查询速度是无法忍受的。
没有必要去考虑你存储的数据达到了表的存储上限。在数据库性能和业务上也不会允许你打到上限。举个例子:myisam引擎,在支持并发性能上不是很好(支持表锁,不支持行锁)。建议是不要在一张表上插入过多的数据。后果很严重。分库分表也是只根据数据量来判定,结合具体业务等。
提供一个项目参考:据我所知,phpcms v9 是100W数据分表;
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
见官方文档:
这是MyISAM的理论上限,实践上是达不到的。
实际行数上限还受
myisam_data_pointer_size限制,64位的mysql的myisam_data_pointer_size通常是6,即48位,行数是2^48 - 1 = 281474976710655。第二个上限是表的存储空间大小限制(Storage limits):256TB。
所以只要知道最小一行需要的空间,就能求出最多能存的记录数。
单表上限的话不怎么好确定,基于自己的业务和服务器性能,做些单表的压力测试,有很多现成的测试工具,如sysbench。什么时候考虑分库分表,这个时候肯定会感觉到查询已经很慢了,数据量肯定很大了起码千万量级。即使建立了有效的索引,查询也很慢。可以分析慢查询日志,也可以用一些监控工具如Nagios实时监控mysql的状态。什么时候分库分表心里就能有个数了
理论上没有限制,
遇见过,上亿的
不过,不建议这样干
操作大表太操心了,
不用考虑上限的,因为一般项目达不到上限就需要分表分区等其他操作,不然查询速度是无法忍受的。
没有必要去考虑你存储的数据达到了表的存储上限。在数据库性能和业务上也不会允许你打到上限。
举个例子:myisam引擎,在支持并发性能上不是很好(支持表锁,不支持行锁)。建议是不要在一张表上插入过多的数据。后果很严重。
分库分表也是只根据数据量来判定,结合具体业务等。
提供一个项目参考:据我所知,phpcms v9 是100W数据分表;