做物流网站的图片素材,网站怎么修改好之后再上线,公司建立网站的步骤,浏阳做网站公司读锁又称为共享锁#xff0c;简称S锁#xff0c;共享锁就是多个事务对于同一数据可以共享一把锁#xff0c;都能访问到数据#xff0c;但是只能读不能修改。
写锁又称为排他锁#xff0c;简称X锁#xff0c;排他锁就是不能与其他所并存#xff0c;如一个事务获取了一个…读锁又称为共享锁简称S锁共享锁就是多个事务对于同一数据可以共享一把锁都能访问到数据但是只能读不能修改。
写锁又称为排他锁简称X锁排他锁就是不能与其他所并存如一个事务获取了一个数据行的排他锁其他事务就不能再获取该行的其他锁包括共享锁和排他锁但是获取排他锁的事务是可以对数据就行读取和修改。
共享锁就是多个事务只能读数据不能改数据,如果有其他的update操作需要等其他事务的读锁释放,才能加写锁(排他锁).
排他锁指的是一个事务在一行数据加上排他锁后其他事务不能再在其上加其他的锁。
mysql InnoDB引擎默认的修改数据语句update,delete,insert 都会自动给涉及到的数据加上排他锁select 语句默认不会加任何锁类型。
如果加排他锁可以使用select ...for update 语句加共享锁可以使用select ... lock in share mode语句。所以加过排他锁的数据行在其他事务种是不能修改数据的也不能通过for update和lock in share mode锁的方式查询数据但可以直接通过select ...from...查询数据因为普通查询没有任何锁机制
锁释放数据库在事务提交之后锁才会释放。
下面开始验证
查看事务是否自动提交
SHOW VARIABLES LIKE autocommit;设置事务不自动提交
SET autocommit 0开启事务1
start transaction;
读操作默认没有添加锁
select * from sys_user where id1
UPDATE sys_user set avatar头像1 where id1;提交事务
commit work;开启事务2
start transaction;
查数据操作的时候添加读锁 共享锁 读操作默认没有
select * from sys_user where id1 LOCK IN SHARE MODE;
UPDATE sys_user set avatar头像1 where id1;提交事务
commit work;开启事务3
start transaction;
查数据操作的时候添加读锁 共享锁 读操作默认没有
select * from sys_user where id1 LOCK IN SHARE MODE;
UPDATE sys_user set avatar头像2 where id1commit work;
数据库的事务基本时默认的 不可重复读
开启事务1的时候 对其他事务没有任何影响
开启事务2 执行读操作,开启事务3 执行更新操作,在事务2提交前事务3不允许提交事务,当2提交后,3更新操作成功 事务可以提交.
开启事务2 执行读操作,开启事务3 读操作并且执行更新操作, 这时3的更新操作在等待, 如果这时再执行事务2的更新操作,事务2会报死锁回滚事务.