Innodb:Undo 表空間巨大

gaopengtttt發表於2019-04-04

這是一個朋友問我的,簡單記錄一下

一、問題

我用的5.7的Mysql undo清理引數已經開啟了。為什麼undo tablespace沒有清理。

Innodb:Undo 表空間巨大
image.png

二、分析

這種問題應該是有大查詢的存在,朋友幹掉了大查詢後,undo 依然沒有清理。

------------
TRANSACTIONS
------------
Trx id counter 33083158036
Purge done for trx's n:o < 31961212290 undo n:o < 0 state: running
History list length 560689581
作者微信:**gp_22389860**

我們可以大約理解為560689581個事物的UNDO沒有釋放。
我們知道undo的分配是迴圈分配的,清理操作應該等到釋放操作完成之後 可以大概從從函式trx_purge_truncate_history看到(我只是初略的看了一眼),只有當所有的undo header,rollback header。之後才能清理整個表空間。

我叫朋友查了一下當前purge執行緒的壓力如下:

Innodb:Undo 表空間巨大
image.png
Innodb:Undo 表空間巨大
image.png
Innodb:Undo 表空間巨大
image.png

雖然沒有做pstack,可以猜測purge執行緒正在清理這些undo記錄。等到清理完成後應該可以釋放undo tablespace的。然後又看了一下show engine中關於undo的資訊如下:

Innodb:Undo 表空間巨大
image.png

明顯已經開始減少了。再等等吧。

作者微信: gp_22389860


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-2640462/,如需轉載,請註明出處,否則將追究法律責任。

相關文章