mysql鎖占用後,表無法操作,解決辦法
原因: 未提交事物,阻塞ddl,繼而阻塞所有同表的後續操作
通過 select * frominformation_schema.innodb_trx\g, 找到未提交事物的sid, 然後 kill 掉,讓其回滾。
mysql查詢當前鎖狀況:
-- 檢視mysql 事務處理列表
select * from information_schema.innodb_trx
innodb_trx ## 當前執行的所有事務
innodb_locks ## 當前出現的鎖
innodb_lock_waits ## 鎖等待的對應關係
-- 檢視 所有mysql 程序id
show full processlist;
各個列的含義:
①.id列,使用者登入mysql時,系統分配的"connection_id",可以使用函式connection_id()檢視
②.user列,顯示當前使用者。如果不是root,這個命令就只顯示使用者許可權範圍的sql語句
③.host列,顯示這個語句是從哪個ip的哪個埠上發的,可以用來跟蹤出現問題語句的使用者
④.db列,顯示這個程序目前連線的是哪個資料庫
⑤.command列,顯示當前連線的執行的命令,一般取值為休眠(sleep),查詢(query),連線(connect)等
⑥.time列,顯示這個狀態持續的時間,單位是秒
⑦.state列,顯示使用當前連線的sql語句的狀態,很重要的列。state描述的是語句執行中的某乙個狀態。乙個sql語句,以查詢為例,可能需要經過copying to tmp table、sorting result、sending data等狀態才可以完成
⑧.info列,顯示這個sql語句,是判斷問題語句的乙個重要依據
### kill 掉 指定的第一列執行緒id
mysql>kill thread_id;
mysql查詢效能優化 MySQL 查詢效能優化
在日常開發中,程式設計師寫的最多的除了bug之外,應該算是sql語句了。sql的質量影響了程式的響應速度,只有利用mysql的特性,才能讓mysql更有效的執行查詢sql,充分發揮mysql的優勢,並避開它的弱點。為什麼查詢速度會慢?在編寫sql之前,需要清楚一點 真正重要的是響應時間。如果我們把查...
mysql子查詢效能 MySQL子查詢效能
1 語法 子查詢有in和exists兩種,哪種速度更快呢?主要取決於兩張表的大小關係。select from a where cc in select cc from b select from a where exists select cc from b where b.cc a.cc in會先...
mysql查詢效能
業務效能測試中,如果乙個查詢介面,譬如根據使用者id去查詢乙個使用者的詳細資訊,jmeter指令碼中是否需要將使用者id進行變數化,系統中不涉及redis之類的快取 使用者資訊都是從資料庫直接查詢的 如果jmeter指令碼中將使用者id寫死,就併發查詢同乙個使用者的資訊,吞吐量會不會有什麼不同 使用...