区别:
1、表级锁,一般是指表结构共享锁锁,是不可对该表执行DDL *** 作,但对DML *** 作都不限制。 行级锁之前需要先加表结构共享锁。锁定整个表,限制对于其他用户对表的访问。
2、行级锁,一般是指排它锁,即被锁定行不可进行修改,删除,只可以被其他会话select。行级锁之前需要先加表结构共享锁。对目前被修改的行进行锁定,其它用户可访问被锁定的行以外的行。
基本说明:
1、行级锁是MySQL中锁定粒度最细的一种锁,表示只针对当前 *** 作的行进行加锁。行级锁能大大减少数据库 *** 作的冲突,其加锁粒度最小,但加锁的开销也最大。行级锁分为共享锁和排他锁。开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率低,并发度高;
2、表级锁是MySQL中锁定粒度最大的一种锁,表示对当前 *** 作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。最常使用的MyISAM与InnoDB都支持表级锁定。表级锁定分为表共享读锁与表独占写锁。不会出现死锁;锁定粒度大,发出锁冲突的概率最高,并发度最低。
有两种模式的行锁:1)共享锁:允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。
( Select * from table_name where ......lock in share mode)
2)排他锁:允许获得排他锁的事务更新数据,阻止其他事务取得相同数据集的共享读锁和 排他写锁。(select * from table_name where.....for update)
oracle数据库分行级锁和表级锁。用select * from table-name for update完成行级锁。用delete或update完成表级锁。你锁定的资源 别人会等待你的提交语句或回退语句完成以后再继续进行。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)