当前位置:   article > 正文

MySQL 锁表与解锁步骤_mysql解锁表

mysql解锁表
  1. -- 1.使用大于0
  2. SHOW OPEN TABLES WHERE `Database` = 'test' AND In_use > 0 ;
  3. -- 2.request_trx_id请求锁 与 blocking_trx_id产生锁原因
  4. SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
  5. SELECT trx_id,trx_mysql_thread_id FROM information_schema.innodb_trx ;
  6. -- 3.被锁语句id
  7. SELECT
  8. NOW(),
  9. (
  10. UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(a.trx_started)
  11. ) diff_sec,
  12. b.id,-- 被锁语句id
  13. b.user,
  14. b.host,
  15. b.db,
  16. c.lock_type,
  17. c.lock_table,
  18. c.lock_index
  19. FROM
  20. information_schema.innodb_trx a
  21. INNER JOIN information_schema.PROCESSLIST b
  22. ON a.TRX_MYSQL_THREAD_ID = b.id
  23. INNER JOIN information_schema.INNODB_LOCKS c
  24. ON a.trx_requested_lock_id = c.lock_id ;
  25. -- 4.查看正在锁的事务,表名,锁状态
  26. SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
  27. -- 5.查看id对应的SQL
  28. SHOW FULL PROCESSLIST;
  29. SELECT b.processlist_id,a.thread_id,a.sql_text FROM
  30. performance_schema.events_statements_current a, performance_schema.threads b
  31. WHERE a.thread_id=b.thread_id
  32. -- 6.杀掉进程
  33. KILL ??
  34. -- 一步到位
  35. SELECT * FROM sys.`innodb_lock_waits`;
  36. -- 以下语句适用5.6(含有performance_schema.events_statements_current)以上版本
  37. SELECT
  38. b.`trx_mysql_thread_id` 被锁id,
  39. (SELECT
  40. a.sql_text
  41. FROM
  42. performance_schema.events_statements_current a,
  43. performance_schema.threads b
  44. WHERE a.thread_id = b.thread_id
  45. AND b.processlist_id = b.`trx_mysql_thread_id`) 被锁SQL,
  46. d.`lock_table` 被锁表,
  47. c.`trx_mysql_thread_id` 锁表id, -- 杀掉 kill ??
  48. (SELECT
  49. a.sql_text
  50. FROM
  51. performance_schema.events_statements_current a,
  52. performance_schema.threads b
  53. WHERE a.thread_id = b.thread_id
  54. AND b.processlist_id = c.`trx_mysql_thread_id`) 锁表SQL,
  55. e.`lock_table` 锁表
  56. FROM
  57. INFORMATION_SCHEMA.INNODB_LOCK_WAITS a
  58. LEFT JOIN information_schema.innodb_trx b
  59. ON a.`requesting_trx_id` = b.`trx_id`
  60. LEFT JOIN information_schema.innodb_trx c
  61. ON a.`blocking_trx_id` = c.`trx_id`
  62. LEFT JOIN information_schema.INNODB_LOCKS d
  63. ON a.`requesting_trx_id` = d.`lock_trx_id`
  64. LEFT JOIN information_schema.INNODB_LOCKS e
  65. ON a.`blocking_trx_id` = e.`lock_trx_id` ;
  66. --适用于5.7及以上版本
  67. select t2.PROCESSLIST_ID,from_unixtime(unix_timestamp(now())-t4.time) START_TIME,t1.*,t3.sql_text from
  68. (
  69. SELECT
  70. OBJECT_SCHEMA,OBJECT_NAME,LOCK_STATUS,OWNER_THREAD_ID
  71. FROM
  72. `performance_schema`.metadata_locks
  73. WHERE
  74. OWNER_THREAD_ID != sys.ps_thread_id (CONNECTION_id())
  75. and OBJECT_SCHEMA='test'
  76. ) t1
  77. left join `performance_schema`.threads t2 on t1.OWNER_THREAD_ID=t2.THREAD_ID
  78. left join performance_schema.events_statements_current t3 on t1.OWNER_THREAD_ID=t3.THREAD_ID
  79. left join information_schema.`PROCESSLIST` t4 on t4.ID=t2.PROCESSLIST_ID
  80. order by t1.OBJECT_NAME

MySQL 5.7版本
锁状态LOCK_STATUS:PENDING
全局读锁、MDL锁、表级锁
select * from performance_schema.metadata_locks where owner_thread_id!=sys.ps_thread_id(connetion_id());
--语句
select * from performance_schema.events_statements_current where thread_id=?;

MySQL 8.0版本
锁状态LOCK_STATUS:WAITING
行级锁
select * from performance_schema.data_locks 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/641867
推荐阅读
相关标签
  

闽ICP备14008679号