下文主要給大家帶來MySQL查不到導入的數據是什么原因,希望這些內容能夠帶給大家實際用處,這也是我編輯MySQL查不到導入的數據是什么原因這篇文章的主要目的。好了,廢話不多說,大家直接看下文吧。
先執行COUNT(*)統計總數
[root@yejr.me]> select count(*) from t1; +----------+ | count(*) | +----------+ | 0 | +----------+ 1 row in set (1 min 25.85 sec)
SQL運行的有點慢,結果的確是空的。
再任意查詢一條記錄看看:
[root@yejr.me]> select * from t1 limit 1; Empty set (13.63 sec)
只查一條記錄而已,這SQL運行的也忒慢了點,結果也還是空的。
好吧,再看看表的狀態:
[root@yejr.me]> show table status G *************************** 1. row *************************** Name: t1 Engine: InnoDB Version: 10 Row_format: Dynamic Rows: 28159173 Avg_row_length: 45 Data_length: 1269825536 Max_data_length: 0 Index_length: 1308606464 Data_free: 1063256064 Auto_increment: 12851381 Create_time: 2019-06-04 10:49:44 Update_time: NULL Check_time: NULL Collation: utf8mb4_general_ci Checksum: NULL Create_options: Comment: 1 row in set (0.00 sec) [root@yejr.me]# ll -rw-r----- 1 mysql mysql 67 Jun 4 10:34 db.opt -rw-r----- 1 mysql mysql 8732 Jun 4 10:49 t1.frm -rw-r----- 1 mysql mysql 2931818496 Jun 4 13:09 t1.ibd
看著明明是有數據的呀,真特么邪門,下巴都快掉了。
再看看執行SELECT時的線程狀態,發現是正常的Sending data,沒啥特別的。
好吧,要真的放大招了,再看看InnoDB事務狀態:
------------ TRANSACTIONS ------------ Trx id counter 41220 Purge done for trx's n:o < 40288 undo n:o < 0 state: running but idle History list length 44 LIST OF TRANSACTIONS FOR EACH SESSION: ---TRANSACTION 422164356356832, not started 0 lock struct(s), heap size 1136, 0 row lock(s) ---TRANSACTION 40199, ACTIVE 1361 sec recovered trx ROLLING BACK 1 lock struct(s), heap size 1136, 0 row lock(s), undo log entries 3637207
注意到事務 40199 的狀態是正在回滾中"ROLLING BACK",影響的undo log有3637207之多。
經過確認,原因確定了,事務 40199 在導入數據過程中,導入過程發生了啥問題,對導入線程賤賤的按了CTRL+C。
就問你意不意外,驚不驚喜吧。。。
結果就悲劇了,導入線程的事務被回滾,所以才看到了那么多的undo log entries,總共是幾千萬數據啊,只不過我們看到的時候還剩下300多萬。
后來,又做了一次導入,這次又悲劇了,因為公司斷網了,導入線程又一次被回滾(畫外音,論遠程操作時用screen的重要性)。
在上面這個例子中,可能有同學會奇怪,為什么導入還沒結束,但卻能看到表空間文件已經挺大的了,而且show table status也能看到rows值比較大。
和本案類似的場景還有,一個大表被執行全表delete了(不是直接truncate),這個事務產生的undo log還沒被purge完畢,或者這個事務也被回滾了,在這個過程中,執行 COUNT(*) 的結果可能和預期的不一樣。
對于以上關于MySQL查不到導入的數據是什么原因,大家是不是覺得非常有幫助。如果需要了解更多內容,請繼續關注我們的行業資訊,相信你會喜歡上這些內容的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。