mysql 锁表与解锁

Posted 高级盘丝洞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 锁表与解锁相关的知识,希望对你有一定的参考价值。

show processlist;
kill 6924
show full processlist;  #列出全部进程
select * from information_schema.PROCESSLIST t;
kill 6911
SELECT * FROM information_schema.innodb_trx ORDER BY trx_started ;
SELECT * FROM information_schema.innodb_locks;
SELECT * FROM information_schema.innodb_trx t where t.trx_state = 'LOCK WAIT';
select * from information_schema.PROCESSLIST t where t.id = lock_trx_id

#状态一直在休眠,关闭事件调节器[7]:
SET GLOBAL event_scheduler = OFF;
 #查看是否开启定时器
SHOW  VARIABLES  LIKE 'event_scheduler'; SHOW  VARIABLES  LIKE 'event_scheduler';   #查看是否开启定时器

mysql 解锁与锁表和批解锁

第一种

show processlist;

找到锁进程,kill id ;

第二种

mysql>UNLOCK TABLES;

锁表

锁定数据表,避免在备份过程中,表被更新

mysql>LOCK TABLES tbl_name READ;

为表增加一个写锁定:

mysql>LOCK TABLES tbl_name WRITE;

查询是否锁表

show OPEN TABLES where In_use > 0;

SHOW OPEN TABLES;

// 解锁

UNLOCK TABLES;

查看表的状态

SHOW STATUS LIKE 'table%';

SHOW STATUS LIKE 'innodb_row_lock%';

第三种

SELECT concat('KILL ',id,';') FROM information_schema.processlist WHERE user='root';

KILL 755;

KILL 756;

Oracle锁表与解锁

锁表与解锁

查看锁表进程SQL语句

select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID; 

 

解锁

杀掉锁表进程: 
记录下SID和serial# ,分别替换掉下面的1155,39095,即可解除锁表

alter system kill session \'1155,39095\'; 

对象锁与解锁

这里以包为PKG_ZLGL_BASEDATA为例

注意name为包或者存储过程等;

SELECT * FROM V$DB_OBJECT_CACHE WHERE name=\'PKG_ZLGL_BASEDATA\' AND LOCKS!=\'0\';

查看sid    注意object为包或者存储过程等;

SELECT SID from V$ACCESS WHERE object=\'PKG_ZLGL_BASEDATA\';

查看查看SID和SERIAL#  in后面的条件为上述查的sid

SELECT SID,SERIAL#,PADDR,STATUS FROM V$SESSION WHERE SID IN(\'283\',\'343\');

杀进程 实例如下:  alter system kill session \'sid,SERIAL\'

alter system kill session \'283,50673\'

 

以上是关于mysql 锁表与解锁的主要内容,如果未能解决你的问题,请参考以下文章

MsSqlserver 查看锁表与解锁

Oracle锁表与解锁

Oracle的锁表与解锁

Oracle的锁表与解锁

SqlServer查看锁表与解锁

Oracle系列-锁表与解锁解决方案(基础版)