index merge導致MySql死鎖問題

2022-06-24 16:51:10 字數 491 閱讀 5967

index-merge 導致線上死鎖問題

問題造成條件:

兩個事務分別執行兩次update操作 

每個用到了兩個及以上索引 由於兩邊索引順序不一致導致

造成原因:

innodb使用索引來實現行級別的鎖,

事務a 通過index1 對某個欄位加了鎖  

事務b 通過index2 對另乙個欄位加了鎖

兩個事務都持有自己的鎖 並想鎖對方已經加了鎖的字段  ——造成死鎖

解決方案:

1. 修改sql邏輯  現根據一條索引的條件查出主鍵,update操作都基於主鍵gid去操作

2. 使兩個事務的update 的where條件只用一條索引 (或者將合成聯合索引)

3. index_merge : off

詳細案例:

另乙個案例分析

Python PyMySQL模組讀寫MySQL資料

安裝 pip install pymysqlpymysql 操作和mysqldb 類似,可參考 python程式設計 mysqldb模組對資料庫的基本增刪改查操作 import pymysql 連線 conn pymysql.connect host 127.0.0.1 port 3306 user...

powerdesigner正向生成mysql

選擇database genarate database選單,在開啟的視窗中選擇options頁籤,找到key選項,系統預設為outside,如圖 生成的建表指令碼是 create table test action id int 32 not null auto increment,action ...

mysqli connect不能連線mysql8

mysqli conenct,不能連線。加上mysqli connect error 之後,很快查到原因 原因是新版本mysql8 的密碼加密方式已經改變,而php 的加密方式沒有公升級。所以造成密碼識別不了。暫時,只能不用mysql8 的高階加密方式,而用原來的加密方式。方法 進入mysql控制台...