mysql单表数据达2000万,为什么性能严重下降
明确一点
不一定是2000万,还是得看数据大小,阿里巴巴《Java开发手册》提出:单表行数超过500万行或者单表容量超过2GB,才推荐进行分库分表。
索引结构
索引是一棵B+树,聚簇索引既是索引,也是数据,B+树上的一个节点,也就是存储引擎中的一个页,大小是16K。
原因
假设一个数据页可以存放100条数据记录,一个目录页可以存1000条目录项记录,2层就是10w,3层就是1亿,四层就是1000亿,当然没有单表会存这么多数据。
所以通常一般这个B+树是三层,由于使用innodb存储引擎,根节点(也就是目录页)是常驻内存的,这个时候只需两次磁盘IO就可以找到目标数据。
如果数据量达到一定程度,B+树的高度达到4层,IO次数增加,这个时候性能就会下降。
版权声明:本文所有权归作者! 商业用途转载请联系作者授权! 非商业用途转载,请标明本文链接及出处!
赞成、反驳、不解的小伙伴,欢迎一起交流!

浙公网安备 33010602011771号