国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql的死鎖問題分析與處理方法

2024-07-24 12:38:46
字體:
來源:轉載
供稿:網友

前幾天我的mysql突然出現大量死鎖,全部需要一個個Kill id才能完成,下面我總結一下我最終解決死鎖方法吧.

myISAM和MEMORY存儲引擎采用的是表級鎖table-level locking

死鎖:所謂死鎖<DeadLock>:是指兩個或兩個以上的進程在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去.此時稱系統處于死鎖狀態或系統產生了死鎖,這些永遠在互相等竺的進程稱為死鎖進程.

表級鎖不會產生死鎖.所以解決死鎖主要還是真對于最常用的InnoDB.在遇到問題時,先執行show processlist找到死鎖線程號.然后Kil processNo.

當然主要解決還是需要去看一下具體的操作,可能產生死鎖.

Show innodb status檢查引擎狀態,可以看到哪些語句產生死鎖.

SHOW PROCESSLIST查看數據庫中表的狀態,是否被鎖.

kill id //殺掉被鎖的表,代碼如下:

  1. set autocommit=0; 
  2. select * from t1  where uid='xxxx' for update    //在有索引(例如uid)的情況下是行鎖,否則是表鎖 
  3. insert into t1 values(1,'xxxxx'); 
  4. commit; 
  5. ===================================================== 
  6. lock tables t1 write|read; 
  7. insert into t1 values(2,'xxxxx'); //只有insert 
  8. unlock tables; //Vevb.com 

解決辦法:

1、全表掃描,沒有可用的索引.

2、解決把你程序中的SQL,把IN改成JOIN.

3、在mysql中的my.ini中把數據庫連接時間改小點.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镇巴县| 泗洪县| 扶风县| 延川县| 东至县| 三河市| 田林县| 米脂县| 新乐市| 南澳县| 共和县| 巴里| 阜阳市| 鹤壁市| 逊克县| 玛纳斯县| 南华县| 桃源县| 大悟县| 浮梁县| 朔州市| 临沭县| 曲周县| 苏尼特左旗| 阿巴嘎旗| 北流市| 平远县| 博白县| 西畴县| 沙湾县| 蒙自县| 嘉禾县| 赣州市| 香河县| 班戈县| 惠水县| 奇台县| 永嘉县| 十堰市| 同心县| 景泰县|