`
geeksun
  • 浏览: 965354 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL表级锁,行级锁和页级锁

阅读更多

表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作。如果你是写锁,则其它进程则读也不允许
行级,仅对指定的记录进行加锁,这样其它进程还是可以对同一个表中的其它记录进行操作。
页级,表级锁速度快,但冲突多,行级冲突少,但速度慢。所以取了折衷的页级,一次锁定相邻的一组记录。

MySQL 5.1支持对MyISAM和MEMORY表进行表级锁定,对BDB表进行页级锁定,对InnoDB表进行行级锁定。

对WRITE,MySQL使用的表锁定方法原理如下:

如果在表上没有锁,在它上面放一个写锁。  
否则,把锁定请求放在写锁定队列中。  
对READ,MySQL使用的锁定方法原理如下:

如果在表上没有写锁定,把一个读锁定放在它上面。  
否则,把锁请求放在读锁定队列中。  

InnoDB使用行锁定,BDB使用页锁定。对于这两种存储引擎,都可能存在死锁。这是因为,在SQL语句处理期间,InnoDB自动获得行锁定和BDB获得页锁定,而不是在事务启动时获得。

行级锁定的优点:

· 当在许多线程中访问不同的行时只存在少量锁定冲突。

· 回滚时只有少量的更改。

· 可以长时间锁定单一的行。

行级锁定的缺点:

· 比页级或表级锁定占用更多的内存。

· 当在表的大部分中使用时,比页级或表级锁定速度慢,因为你必须获取更多的锁。

· 如果你在大部分数据上经常进行GROUP BY操作或者必须经常扫描整个表,比其它锁定明显慢很多。

· 用高级别锁定,通过支持不同的类型锁定,你也可以很容易地调节应用程序,因为其锁成本小于行级锁定。

在以下情况下,表锁定优先于页级或行级锁定:

· 表的大部分语句用于读取。

· 对严格的关键字进行读取和更新,你可以更新或删除可以用单一的读取的关键字来提取的一行:

· UPDATE tbl_name SET column=value WHERE unique_key_col=key_value;
· DELETE FROM tbl_name WHERE unique_key_col=key_value;
· SELECT 结合并行的INSERT语句,并且只有很少的UPDATE或DELETE语句。

· 在整个表上有许多扫描或GROUP BY操作,没有任何写操作。

 

参考:http://topic.csdn.net/u/20100719/10/3bcbadec-0689-4007-bb41-1509c207acaf.html

分享到:
评论

相关推荐

    MySQL中的行级锁、表级锁、页级锁

    MySQL数据库管理系统提供了多种锁机制,包括行级锁、表级锁和页级锁,这些锁的使用和理解对于优化并发性能和避免死锁至关重要。 1. 行级锁(Row-Level Locking) 行级锁是MySQL中最细粒度的锁,它只锁定操作的特定...

    值得学习的MySQL行级锁、表级锁、页级锁详细介绍

    值得学习的MySQL行级锁、表级锁、页级锁详细介绍

    MySQL中的行级锁,表级锁,页级锁1

    其中,行级锁、表级锁和页级锁是MySQL中最为常见的锁类型。本文将详细解析这三种锁机制的特点、应用场景以及优化策略,旨在帮助数据库管理员和开发人员更好地理解MySQL的锁机制,并在实际工作中做出更合理的锁策略...

    MySQL 全局锁、表级锁、行级锁

    在多用户环境中,为了保证数据的一致性和完整性,MySQL 提供了多种锁定机制,包括全局锁、表级锁和行级锁。这些锁机制是数据库事务处理中的核心组成部分,下面我们将详细探讨这些锁的特性和应用场景。 1. **全局锁...

    MySQL行级锁、表级锁、页级锁详细介绍

    在MySQL中,有三种主要的锁定级别:行级锁、表级锁和页级锁。 1. **行级锁**:行级锁(Row-Level Locking)是最细粒度的锁,只锁定单个数据行。这使得其他事务可以同时对表中的其他行进行读写操作,从而提高了并发...

    MYSQL 解锁与锁表介绍

    InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。   MySQL这3种锁的特性可大致归纳如下。   开销、加锁速度、死锁、粒度、并发性能   l 表级锁:开销小,加锁快;...

    MySQL锁类型以及子查询锁表问题、解锁1

    在MySQL中,主要存在两种类型的锁:行级锁(Row-Level Locks)和表级锁(Table-Level Locks)。InnoDB存储引擎默认支持行级锁,而MyISAM只支持表级锁。 行级锁能提供更高的并发性能,因为它只锁定操作影响的具体行...

    MYSQL锁机制全揭秘

    而页面锁介于表级锁和行级锁之间,适用于中等规模的应用。 MyISAM存储引擎采用的是表级锁,加锁速度快、开销小,但并发度最低,容易产生锁冲突。它支持读写锁,读操作不阻塞读操作但会阻塞写操作,而写操作则会阻塞...

    MySQL锁的用法之表级锁

    MySQL的锁分为表级锁、页级锁与行级锁。表级锁是MySQL中粒度大的一种锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。常使用的MYISAM与INNODB都支持表级锁定。  表级锁定分为两类,读锁与写锁。读锁是预期...

    MYSQL锁机制

    InnoDB是MySQL中最常用的事务型存储引擎,它支持行级锁和表级锁,但在默认情况下使用行级锁。 ##### InnoDB行级锁的特点 - **高并发**:由于锁定的范围较小,可以更好地支持并发操作。 - **死锁检测**:InnoDB具有...

    MySQL锁详解

    MyISAM和MEMORY存储引擎使用表级锁,BDB存储引擎支持页面锁,同时也可以使用表级锁,而InnoDB存储引擎则同时支持行级锁和表级锁,默认采用行级锁。 表级锁具有开销小,加锁速度快的特点,不会出现死锁,但是锁定...

    MySQL8.0锁机制和事务

    InnoDB 支持行级锁,行级锁可以细分为共享锁和排他锁两类。此外,InnoDB 还支持意图锁,意图锁是表级锁,表明事务在后期会对该表的行施加共享锁或者排他锁。 信息模式表: 信息模式表是 MySQL 8.0 中的系统表,用于...

    mysql简单简述锁机制

    页面锁是一种介于表级锁和行级锁之间的锁机制,如BDB存储引擎所使用,它的锁定粒度比表级锁小,但比行级锁大,因此在并发性能和资源消耗上处于两者之间。 在MySQL中,可以使用`SHOW ENGINES;`命令查看支持的存储...

    MySQL悲观锁总结和实践

    MySQL InnoDB 默认使用行级锁(Row-Level Lock),但在某些情况下可能会使用表级锁(Table Lock)。 - **行级锁(Row-Level Lock)**:当SQL语句中明确指定了主键或唯一索引时,MySQL将执行行级锁,只锁定被选取的...

    Mysql各种高级操作

    在MySQL中,锁的粒度可以分为服务器级锁和存储引擎级锁。例如,MyISAM存储引擎支持表级锁,而InnoDB存储引擎则支持行级锁。 - **隐式锁与显式锁**:MySQL中的锁可以分为隐式锁和显式锁。隐式锁是由MySQL系统自动管理...

    行业-59 对MySQL锁机制再深入一步,共享锁和独占锁到底是什么?l.rar

    MySQL的InnoDB存储引擎支持行级锁定,这极大地提高了并发性能,因为相比于表级锁,行级锁只锁定涉及的数据行,而不是整个表。 死锁是锁机制可能导致的问题之一。当两个或更多事务相互等待对方释放锁时,就会发生...

    事务的四大隔离级别、数据库中的共享锁与排他锁、MySQL 的行级锁与表级锁

    数据库相关的笔记

    mysql锁表1

    MySQL支持多种类型的锁,包括行级锁(如记录锁、间隙锁和Next-Key Locks),页级锁,以及表级锁。表级锁是最简单的形式,它将整个表视为一个单位进行锁定,分为读锁(共享锁,也称为S锁)和写锁(独占锁,也称为X锁...

Global site tag (gtag.js) - Google Analytics