亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

MySQL添加索引導致表鎖死解決方案

2023-05-29 02:07:48
74
0

場景:在給一張有幾萬條記錄的表添加索引時,進度非常慢,導致其它查詢無法進行

處理方式:

  1. 命令行模式下,執行以下命令:
show processlist;

這時會看到有哪些線程正在執行,也可以查看鎖表的線程。你會發現alter table * add key ****那個線程狀態是Waiting for table metadata lock,后面有個這個表的所有操作都是這個狀態,很明顯是這條加索引的語句把表給鎖了。

  1. 查看線程ID,執行
kill 線程ID;

這樣被鎖住的表就能立即被使用了。

拓展2:

如果數據庫中有鎖的話,我們可以使用這條語句來查看運行的所有事務:

select * from information_schema.innodb_trx;

也能得到 trx_mysql_thread_id 為線程ID;

結論:

  1. 當一張表數據量很大時,不要輕易添加索引,會導致表被鎖死!
  2. 如果非要添加,那么應該先把數據表進行備份,然后進行空表添加索引。
0條評論
0 / 1000
邱****先
5文章數
0粉絲數
邱****先
5 文章 | 0 粉絲
原創

MySQL添加索引導致表鎖死解決方案

2023-05-29 02:07:48
74
0

場景:在給一張有幾萬條記錄的表添加索引時,進度非常慢,導致其它查詢無法進行

處理方式:

  1. 命令行模式下,執行以下命令:
show processlist;

這時會看到有哪些線程正在執行,也可以查看鎖表的線程。你會發現alter table * add key ****那個線程狀態是Waiting for table metadata lock,后面有個這個表的所有操作都是這個狀態,很明顯是這條加索引的語句把表給鎖了。

  1. 查看線程ID,執行
kill 線程ID;

這樣被鎖住的表就能立即被使用了。

拓展2:

如果數據庫中有鎖的話,我們可以使用這條語句來查看運行的所有事務:

select * from information_schema.innodb_trx;

也能得到 trx_mysql_thread_id 為線程ID;

結論:

  1. 當一張表數據量很大時,不要輕易添加索引,會導致表被鎖死!
  2. 如果非要添加,那么應該先把數據表進行備份,然后進行空表添加索引。
文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0