码迷,mamicode.com
首页 > 数据库 > 详细

detecting locked tables mysql (locked by LOCK TABLE)

时间:2014-10-27 21:09:44      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:des   blog   http   io   os   ar   for   sp   strong   

bubuko.com,布布扣bubuko.com,布布扣

I would like to know whether there is an option to detect locked tables in mysql or not. I mean locked by LOCK TABLE table WRITE/READ command?

share|improve this question
 
    
Why don‘t you unlock the table first ? –  David V. Mar 23 ‘10 at 13:07
6  
@David V.: I guess because he needs to know it is locked first? Or maybe he want‘s to avoid ‘touching‘ the table when/if it is locked? –  lexu Mar 23 ‘10 at 13:11
    
O_O Ooooh my bad, I read that as "delete" (and deleting in the title) locked tables. –  David V. Mar 23 ‘10 at 13:42

5 Answers

You can‘t for non-named locks!

More info: http://forums.mysql.com/read.php?21,222363,223774#msg-223774

Not unless you use an advisory lock first. You might also want to look into using INSERT DELAYED instead.

share|improve this answer
 

You can use SHOW OPEN TABLES to show each table‘s lock status. More details on the command‘s doc page are here.

share|improve this answer
 

Use SHOW OPEN TABLEShttp://dev.mysql.com/doc/refman/5.1/en/show-open-tables.html

You can do something like this

SHOW OPEN TABLES WHERE `Table` LIKE ‘%foo%‘ AND Database LIKE ‘[DBNAME]‘ AND In_use > 0;

to check any locked tables in a database.

share|improve this answer
 
3  
Note: I can only get this query to work if I use `Database` instead of just Database –  rinogo Feb 11 at 23:06 

You can create your own lock with GET_LOCK(lockName,timeOut)

If you do a GET_LOCK(lockName, 0) with a 0 time out before you lock the tables and then follow that with a RELEASE_LOCK(lockName) then all other threads performing a GET_LOCK() will get a value of 0 which will tell them that the lock is being held by another thread.

However this won‘t work if you don‘t have all threads calling GET_LOCK() before locking tables. The documentation for locking tables is here

Hope that helps!

share|improve this answer
 
    
this only works for named locks what about non named locks? –  Marcin Apr 5 ‘10 at 12:32
    
You can‘t for non named locks –  Giles Smith Apr 6 ‘10 at 16:31

This article describes how to get information about locked MySQL resources. mysqladmin debugmight also be of some use.

share|improve this answer
 
1  
its fine but what about MyISAM being locked ? cheers –  Marcin Mar 23 ‘10 at 13:56
    
Sorry, can‘t help you there. –  Tomislav Nakic-Alfirevic Mar 23 ‘10 at 15:02

detecting locked tables mysql (locked by LOCK TABLE)

标签:des   blog   http   io   os   ar   for   sp   strong   

原文地址:http://www.cnblogs.com/seasonzone/p/4055068.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!