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; 

 
posted @ 2025-05-15 16:02  杨吃羊  阅读(7)  评论(0)    收藏  举报