为什么我的InnoDB表有一个奇怪的记录计数值?

Jas*_*vis 4 mysql myisam innodb

下面是我的mysql DB中的2个表的行数
是1 myisam是另一个innodb,

谁能告诉我为什么innodb有这个在数字前?

这些数字来自phpmyadmin

10,308      MyISAM  
~118,011    InnoDB
Run Code Online (Sandbox Code Playgroud)

hob*_*ave 11

phpMyAdmin用于SHOW TABLE STATUS获取表的信息.

文档:

行数.某些存储引擎(如MyISAM)会存储确切的计数.对于其他存储引擎,例如InnoDB,此值是近似值,并且可能与实际值相差多达40%到50%.在这种情况下,使用SELECT COUNT(*)来获得准确的计数.

这是因为InnoDB是一个符合ACID标准的存储引擎.InnoDB 使用行级锁定实现MVCC.简而言之,在给定时间可以存在给定行的多个副本.我建议阅读这篇文章:了解InnoDB MVCC.