mysql5.x中 MyISAM只支持表级锁,InnoDB支持行级锁
转载:详情参考http://www.jb51.net/article/50047.htm
1) 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
2) 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
3) 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
三种锁各有各的特点,若仅从锁的角度来说,表级锁更适合于以查询为主,只有少量按索引条件更新数据的应用,如WEB应用;行级锁更适合于有大量按索引条件并发更新少量不同数据,同时又有并发查询的应用,如一些在线事务处理(OLTP)系统。
InnoDB锁与MyISAM锁的最大不同在于:一是支持事务(TRANCSACTION),二是采用了行级锁;事务是由一组SQL语句组成的逻辑处理单元,其有四个属性(简称ACID属性),分别为:
原子性(Atomicity)一致性(Consistent)隔离性(Isolation)持久性(Durable)
InnoDB行锁是通过给索引项加锁来实现的,即只有通过索引条件检索数据,InnoDB才使用行级锁,否则将使用表锁!例子:http://keshion.iteye.com/blog/1409563
锁定查询SQL语句:
show OPEN TABLES where In_use > 0;
show processlist;
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
相关推荐
在多用户环境中,为了保证数据的一致性和完整性,MySQL 提供了多种锁定机制,包括全局锁、表级锁和行级锁。这些锁机制是数据库事务处理中的核心组成部分,下面我们将详细探讨这些锁的特性和应用场景。 1. **全局锁...
页级锁是介于行级锁和表级锁之间的一种锁机制。在InnoDB中,并不直接支持页级锁。BDB引擎支持页级锁,一次锁定相邻的一组记录。页级锁的加锁开销和时间介于表级锁和行级锁之间,锁的粒度也介于两者之间。BDB引擎通过...
页级锁是一种介于行级锁和表级锁之间的锁机制,一次锁定相邻的一组记录。它的优点在于平衡了加锁速度和冲突概率,但仍然存在死锁的风险。MySQL的BDB存储引擎支持页级锁。 4. InnoDB的行锁与表锁 InnoDB存储引擎既...
MySQL支持不同存储引擎采用不同的锁机制,常见的有表级锁、行级锁和页面锁。其中表级锁适用于查询为主的应用,如Web应用;行级锁适用于OLTP系统,其中存在大量并发更新少量不同数据的场景;而页面锁介于表级锁和行级...
MyISAM和MEMORY存储引擎使用表级锁,BDB存储引擎支持页面锁,同时也可以使用表级锁,而InnoDB存储引擎则同时支持行级锁和表级锁,默认采用行级锁。 表级锁具有开销小,加锁速度快的特点,不会出现死锁,但是锁定...
InnoDB是MySQL中最常用的事务型存储引擎,它支持行级锁和表级锁,但在默认情况下使用行级锁。 ##### InnoDB行级锁的特点 - **高并发**:由于锁定的范围较小,可以更好地支持并发操作。 - **死锁检测**:InnoDB具有...
MySQL的锁主要分为表级锁、行级锁和页面锁,不同存储引擎支持不同的锁类型。 表级锁是MySQL中最简单的锁机制,如MyISAM和MEMORY存储引擎采用的就是这种锁。表级锁在开销、加锁速度以及并发度上具有特定特点:开销小...
值得学习的MySQL行级锁、表级锁、页级锁详细介绍
数据库锁可以细分为表级锁、行级锁和页级锁。 1、表级锁(Table-level lock) 表级锁是对整个表加锁,锁定范围较大。在MySQL中,MyISAM引擎在执行查询(SELECT)时会自动给涉及的所有表加读锁,在执行更新操作...
7. **页级锁**:介于表级锁和行级锁之间,锁定的数据量比行级锁多,但比表级锁少,某些存储引擎支持页级锁。 在实际应用中,选择合适的锁类型和粒度是保证数据库并发性能的关键。例如,选择行级锁可以提高并发,但...
当用户A对employee_id为100的记录进行更新时,Oracle会在数据行头部添加行级锁,并且同时在表级别上设置一个表级锁。这样,当用户D尝试删除该表时,会检测到表上的TM锁,进而阻止删除操作,直到用户A的事务完成并...
3. **页级锁**:页级锁(Page-Level Locking)是介于行级锁和表级锁之间的一种锁定方式,如BDB存储引擎支持。页级锁一次锁定的数据范围比行级锁大,但比表级锁小,可以提供一定的并发性。在锁定整页数据的同时,其他...
表锁分为表共享读锁和表独占写锁。 - **表共享读锁**:当对表加读锁后,该表只允许读取操作,阻止其他客户端的写入操作。 - **表独占写锁**:当对表加写锁后,只有加锁客户端可以对该表进行读写操作,其他客户端的...
根据不同的存储引擎,MySQL支持三种类型的锁:表级锁、行级锁和页级锁。 #### 二、表级锁定 表级锁是MySQL中锁的最大粒度,适用于那些不需要高度并发的应用场景。这种类型的锁通常用于非事务性的存储引擎,例如...
3. 页面锁:锁定数据块,介于表级锁和行级锁之间。 4. 间隔锁(Gap Locks):防止在已存在的索引键值之间插入新记录,避免幻读问题。 5. 临键锁(Next-Key Locks):结合了行锁和间隔锁,防止插入重复键值,也是...
锁的结构有表级锁和行级锁,行级锁的粒度较小,可以避免不必要的开销,比如只需要锁住需要修改的**数据行**,而其他数据行可以被其他事务 聚簇索引和非聚簇区别 聚簇索引又叫主键索引,叶子节点中存储主键和数据,...
表级锁通常包括表锁和表级的意向锁。表锁又分为共享锁(读锁)和独占锁(写锁),分别由LOCK TABLES ... READ和LOCK TABLES ... WRITE语法来加锁。 实际上,手动加表锁的情况在日常开发中极为少见,因为大多数情况...
- **页面锁(Gap Locks)**:介于表级锁和行级锁之间,适合中等并发场景。 4. **MyISAM锁**: - MyISAM存储引擎支持表级锁,包括读锁和写锁。读锁允许并发读取,但阻止写入;写锁阻止所有其他读写操作。 5. **...
- **页级锁(Page Locks)**:锁定表的一部分,介于表级锁和行级锁之间。 ##### 锁的粒度 - **锁粒度**决定了锁覆盖的数据范围。较小的锁粒度意味着更高的并发度,但可能导致更多的加锁/解锁操作。 #### 五、锁的...