表锁和行锁

1  表锁需要维护的数量比行锁少,所以行锁所需的成本高。但对于同一个表的操作来说 比如先要在最后一行添加一行数据,然后再修改其他行的数据。这就得用行锁。所以说行锁和表锁不能说那个好那个不好,只能根据情况定。

2 但是加了行锁 还得加意向锁 但是表锁不需要。  对于比较锁的快慢没有意义。应该比较的是不同粒度锁的情况下插入更新删除的速度。

3  锁定对象的大小叫做锁的粒度。所对象可以是逻辑单元(如数据库,表,记录,列,索引) 也可以是物理单元(如数据页,索引页)。

  锁定的粒度 与系统的并发度和并发控制的开销密切相关。一般锁的粒度越大 ,锁定的对象就小,可选择性小,开销就笑 并发度就小。反之 粒度越小,对象就多 ,可选择性大,开销大 并发大。

4 :所以在锁定粒度的同时应该考虑并发度 和开销,以求最优效果。一般需要处理大量记录的事物可以是表的锁定粒度。需要多个表中的大量记录的事物可以以数据库为锁定粒度。如果需要处理某个表中的少量记录则一记录为锁定粒度。

5 多粒度锁协议是指,允许对多粒度树中的节点单独地加锁,另外对一个节点加锁意味着对这个节点的各个子节点也加同样的锁。

因此可以用俩中方式对多粒度树中的节点加锁 :显式锁定和隐式锁定。显示锁定是在事物明确指定的节点上加锁。  隐式锁是由于在其上级节点中加显示锁时而使该节点获得锁。

一般对一个节点加锁时,先检查该节点上是否有无显示锁定与之冲突,检查上级节点是否有无锁与之冲突。 检查下级 节点是否有无锁冲突。

时间: 2024-10-07 21:06:22

表锁和行锁的相关文章

Mysql表锁、行锁、页锁

参考 http://www.jb51.net/article/50047.htm <MySQL行级锁.表级锁.页级锁详细介绍> 页级:引擎 BDB.表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行行级:引擎 INNODB , 单独的一行记录加锁 (更详细的行锁.表锁,可以参考:http://www.cnblogs.com/charlesblc/p/5935326.html) 表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作.如果你是写锁,则其它进程则读也不允许

MySQL表锁和行锁详解

这篇文章主要介绍表锁和行锁 一. 表锁 1. 查看表锁的竞争情况 show status like 'table_locks%' 如果Table_locks_waited很大,则说明表锁竞争很激烈,并发性能低下.

MySQL中的锁(表锁、行锁)

锁是计算机协调多个进程或纯线程并发访问某一资源的机制.在数据库中,除传统的计算资源(CPU.RAM.I/O)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素.从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂. 概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制. MySQL大致可归纳为以下3种锁: 表级锁:开销小,加锁快:不会出

MySQL中的锁(表锁、行锁,共享锁,排它锁,间隙锁)

本文参考: http://mysqlpub.com/thread-5383-1-1.html http://blog.csdn.net/c466254931/article/details/53463596 有很多是转载合并过来. 锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的 计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所有数据库必须解决的一 个问题,锁冲突也是影响数据库并发访问性能的一个重

MySQL 表锁和行锁 问题

概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制. MySQL大致可归纳为以下3种锁: 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最低,并发度也最高. 页面锁:开销和加锁时间界于表锁和行锁之间:会出现死锁:锁定粒度界于表锁和行锁之间,并发度一般 ----------------------------------------------

乐观锁,悲观锁,表锁,行锁,共享锁,排他锁

乐观锁 乐观锁是指操作数据库时(更新操作),想法很乐观,认为这次的操作不会导致冲突,在操作数据时,并不进行任何其他的特殊处理(也就是不加锁),而在进行更新后,再去判断是否有冲突了. 实现方式1:在表中的数据进行操作时(更新),先给数据表加一个版本(version)字段,每操作一次,将那条记录的版本号加1.也就是先查询出那条记录,获取出version字段,如果要对那条记录进行操作(更新),则先判断此刻version的值是否与刚刚查询出来时的version的值相等,如果相等,则说明这段期间,没有其他

全局锁、表锁、行锁

根据加锁的范围,MySQL 里面的锁大致可以分成全局锁.表级锁和行锁三类. 一.全局锁 全局锁就是对整个数据库实例加锁.MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL).当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改).数据定义语句(包括建表.修改表结构等)和更新类事务的提交语句.增删改数据(DML),还有可能是加字段等修改表结构的操作(DDL),一个库被全局锁

锁,表锁,行锁,页锁,共享锁,排他锁

一,概述 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则.对于任何一种数据库来说都需要有相应的锁定机制,所以MySQL自然也不能例外.MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样,为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各自所面对的特定场景而优化设计,所以各存储引擎的锁定机制也有较大区别.MySQL各存储引擎使用了三种类型(级别)的锁定机制:表级锁定,行级锁

共享锁、排他锁、互斥锁、悲观锁、乐观锁、行锁、表锁、页面锁、不可重复读、丢失修改、读脏数据

共享锁(S锁):又称为读锁,可以查看但无法修改和删除的一种数据锁.如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排它锁.获准共享锁的事务只能读数据,不能修改数据. 共享锁下其它用户可以并发读取,查询数据.但不能修改,增加,删除数据.资源共享. 排它锁(X锁):又称为写锁.独占锁,若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁.这就保证了其他事务在T释放A上的锁之前不能再读取和修改A 互斥锁:在编程中,引入了对