MySQL
1、行级的典型代表引擎为INNODB(常用)
2、表级的典型代表引擎为MyISAM,MEMORY
3、页级的典型代表引擎为BDB
查询
查询是否锁表
show OPEN TABLES where In_use > 0;
查询连接进程
show processlist
查看当前的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
查看当前等锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
查看当前锁定的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
解锁
杀掉连接进程
kill id
杀掉锁定的事务
kill trx_mysql_thread_id
数据库层面的加锁和解锁
给表tb_user加读锁
lock table tb_user read;
给表tb_user加写入锁(适用于备份表)
lock table tb_user write;
释放锁
unlock tables;
Oracle
查询
查询被锁定的表
SELECT object_name, machine, s.sid, s.serial#
FROM gv$locked_object l, dba_objects o, gv$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid;
查询正在执行的sql
SELECT b.sid oracleID,
b.username 登录Oracle用户名,
b.serial#,
spid 操作系统ID,
paddr,
sql_text 正在执行的SQL,
b.machine 计算机名
FROM v$process a, v$session b, v$sqlarea c
WHERE a.addr = b.paddr
AND b.sql_hash_value = c.hash_value
解锁
杀掉被锁定的表进程
ALTER SYSTEM KILL SESSION 'sid,serial#';
加锁
查询时加上for update来加锁,提交可释放锁