鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)/ Mysql的表狀態(tài)顯示有2萬(wàn)多條記錄,但是count(*)顯示0

Mysql的表狀態(tài)顯示有2萬(wàn)多條記錄,但是count(*)顯示0

如下圖,表中明明有2萬(wàn)多條記錄,但是使用count(*)顯示0條?被鎖住了么?如何解鎖?

mysql> show table status like 'md_org' \G
*************************** 1. row ***************************
           Name: MD_ORG
         Engine: InnoDB
        Version: 10
     Row_format: Dynamic
           Rows: 26553
 Avg_row_length: 337
    Data_length: 8962048
Max_data_length: 0
   Index_length: 5832704
      Data_free: 4194304
 Auto_increment: NULL
    Create_time: 2018-08-27 11:09:17
    Update_time: NULL
     Check_time: NULL
      Collation: utf8_general_ci
       Checksum: NULL
 Create_options:
        Comment:
1 row in set (0.01 sec)

mysql> select count(*) from md_org;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.04 sec)
回答
編輯回答
涼薄

謝邀。
這個(gè)select count(*) from md_org 只是個(gè)查詢,和鎖沒(méi)有關(guān)系,沒(méi)有被鎖。

Rows:26553 是個(gè)粗略的統(tǒng)計(jì)數(shù)據(jù),并不保證準(zhǔn)確,具體的行數(shù)使用selct count(xxx)獲得。

如果查出來(lái)為0,就表示表中實(shí)際行數(shù)就是0了。


你的這種情況我還原下:
你開(kāi)啟事務(wù),然后不停的插入數(shù)據(jù),插入2萬(wàn)多條的數(shù)據(jù),這個(gè)時(shí)候show table status中的rows 就看到你插入的2萬(wàn)多條數(shù)據(jù),但是你不小心關(guān)掉了x掉了窗口,導(dǎo)致事務(wù)沒(méi)有提交,實(shí)際表中是沒(méi)有這些數(shù)據(jù)的(mysql 不會(huì)很智能的更新rows的條數(shù),它只是一個(gè)粗略的統(tǒng)計(jì)而已,沒(méi)有必要)。

2017年5月16日 19:08