Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does my InnoDB table have a weird value for record count?

Below is the ammount of rows for 2 tables in my mysql DB
1 is myisam the other innodb,

can someone tell me why the innodb one has this ~ in front of the number?

These numbers came from phpmyadmin

10,308      MyISAM  
~118,011    InnoDB
like image 717
JasonDavis Avatar asked Dec 07 '22 06:12

JasonDavis


1 Answers

phpMyAdmin uses SHOW TABLE STATUS to get information for your tables.

From the documentation:

Rows

The number of rows. Some storage engines, such as MyISAM, store the exact count. For other storage engines, such as InnoDB, this value is an approximation, and may vary from the actual value by as much as 40 to 50%. In such cases, use SELECT COUNT(*) to obtain an accurate count.

This is due to InnoDB being an ACID compliant storage engine. InnoDB implements MVCC using row-level locking. In short, there can be multiple copies of a given row at a given time. I suggest reading this article: Understanding InnoDB MVCC.

like image 126
hobodave Avatar answered Dec 10 '22 12:12

hobodave