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控制台...