本文共 4256 字,大约阅读时间需要 14 分钟。
偏向MyISAM存储引擎, 开销小 , 加锁快,不会出现死锁 ; 锁定力度大 ,发生锁冲突概率高, 并发度最低 。
#加锁方式lock table 表名1 read(write),表名2 read(write);#查看表上加过的锁 0表示未上锁show open tables;#释放锁unlock tables;
create table mylock ( id int not null primary key auto_increment, name varchar(20) default '') engine myisam;insert into mylock(name) values('a');insert into mylock(name) values('b');insert into mylock(name) values('c');insert into mylock(name) values('d');insert into mylock(name) values('e');select * from mylock;
#给mylock表加读锁lock table mylock read;#查询mylock表 可以展示所有数据select * from mylock;#在当前会话中不能读取别的表:Table 'tbl_emp' was not locked with LOCK TABLESselect * from tbl_emp;
#可以查询select * from mylock;#修改mylock表会出先等待,直到mylock表释放锁update mylock set name='aaa' where id = 1;
#给mylock表加写锁lock table mylock write;#查询mylock表 可以展示所有数据select * from mylock;#在当前会话中不能读取别的表:Table 'tbl_emp' was not locked with LOCK TABLESselect * from tbl_emp;
#在session 2中无法读取数据和更新数据,一直阻塞;直到session中unlock tables解锁select * from mylock;
事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性。
MySQL查看事务隔离级别:show variables like 'tx_isolation';
CREATE TABLE test_innodb_lock (a INT(11),b VARCHAR(16))ENGINE=INNODB;INSERT INTO test_innodb_lock VALUES(1,'b2');INSERT INTO test_innodb_lock VALUES(3,'3');INSERT INTO test_innodb_lock VALUES(4, '4000');INSERT INTO test_innodb_lock VALUES(5,'5000');INSERT INTO test_innodb_lock VALUES(6, '6000');INSERT INTO test_innodb_lock VALUES(7,'7000');INSERT INTO test_innodb_lock VALUES(8, '8000');INSERT INTO test_innodb_lock VALUES(9,'9000');INSERT INTO test_innodb_lock VALUES(1,'b1');CREATE INDEX test_innodb_a_ind ON test_innodb_lock(a);CREATE INDEX test_innodb_lock_b_ind ON test_innodb_lock(b);
操作同一行数据时:当上一个事务 修改未提交 时,第二个事务也去修改会 处于阻塞 。
操作不同行时:即使上一个事务修 改未提交 ,第二个事务也能修改, 互不影响 。
修改 test_innodb_lock 中的数据, varchar 不用 ’ ’ ,导致系统自动转换类型,导致 索引失效,会出现 表锁 。
select xxx ... for update 锁定某一行后,其它的操作会被阻塞,直到锁定行的会话提交commit。
show status like 'innodb_row_lock%'
原文链接:http://www.cnblogs.com/bbgs-xc/p/14302996.html
如果觉得本文对你有帮助,可以关注一下我公众号,回复关键字【面试】即可得到一份Java核心知识点整理与一份面试大礼包!另有更多技术干货文章以及相关资料共享,大家一起学习进步!