MySQL: process list to find blocking

 mysqladm-myhvrdb602.tmw.com::/usr/opt/app/mysql/home>mysql -uroot -pDaKua#Ma0zi



mysql> show processlist;

Check for Blocking Queries: 
Use the SHOW PROCESSLIST command to identify any long-running or blocking queries. 

SHOW PROCESSLIST; 

Identify the blocking process and kill it if necessary. 

KILL <process_id>;



Analyze InnoDB Status: Use SHOW ENGINE INNODB STATUS

 to get detailed information about the locks and transactions. SHOW ENGINE INNODB STATUS\G;


1. Increase Lock Wait Timeout

You can increase the innodb_lock_wait_timeout value to give transactions more time to complete.

SET GLOBAL innodb_lock_wait_timeout = 100;


2. Optimize Queries and Indexes

Ensure that your queries are optimized and that appropriate indexes are in place to reduce lock contention

CREATE INDEX idx_customer_account_import_id ON customer (account_import_id);



3. Adjust Transaction Isolation Level

Changing the transaction isolation level can help reduce lock contention. Consider using READ COMMITTED instead of REPEATABLE READ.

SET GLOBAL transaction_isolation = 'READ-COMMITTED';


4. Use Smaller Transactions

Break down large transactions into smaller ones to reduce the time locks are held

By following these steps, you can effectively diagnose and resolve the "Lock wait timeout exceeded" error in MySQL.




Comments

Popular posts from this blog

Oracle: To clean up WRI$_ADV_OBJECTS