innodb常见锁
表锁:
锁整张表,分读锁,写锁两种
对于读锁,事务1给表a加了读锁,事务1可以读,不能写,其他事务也只能查询不能更改数据; 对于写锁,事务1给表a加了写锁,事务1可以对表a进行读写操作,其他事务读写都不能操作
加锁语法: lock tables 表名 read/write
解锁语法: unlock tables / 断开客户端连接
行锁:
分为共享锁(S),排他锁(X),共享锁与共享锁兼容, 排他锁和共享锁,排他锁和排他锁都互斥
insert,update,delete语句会自动加排他锁,select 不加锁, select ... lock in share mode 会加共享锁, select ... for update 会加排他锁
innodb的行锁是对索引加的锁, 不通过索引条件检索的数据(比如update/delete的where条件没有用索引),innodb会升级为表锁.
如何查询当前数据库哪些表上有哪些锁: performance_schema是MySQL中的一个系统数据库,用于监控服务器运行时的性能数据,data_locks表应该记录了当前数据库的锁信息
select object_schema,obeject_name,index_name,lock_type,lock_mode,lock_data from performance_schema.data_locks;
浙公网安备 33010602011771号