Mysql行级锁和页级所的优缺点

数据库 MySQL
Mysql行级锁和页级所各有着其优点和缺点,下文对Mysql行级锁和页级所的优缺点作了详细的介绍,供您参考,希望对您能有所帮助。

Mysql行级锁可以在很多线程请求不同记录时减少冲突锁,有着诸多的优点,下面就让我们来一起了解一下Mysql行级锁和页级所的优缺点。

如果想要在一个表上做大量的 INSERT 和 SELECT 操作,但是并行的插入却不可能时,可以将记录插入到临时表中,然后定期将临时表中的数据更新到实际的表里。可以用以下命令实现:

  1. mysql> LOCK TABLES real_table WRITE, insert_table WRITE;  
  2.  
  3. mysql> INSERT INTO real_table SELECT * FROM insert_table;  
  4.  
  5. mysql> TRUNCATE TABLE insert_table;  
  6.  
  7. mysql> UNLOCK TABLES;  

InnoDB 使用Mysql行级锁锁,BDB 使用页级锁。对于 InnoDB 和 BDB 存储引擎来说,是可能产生死锁的。这是因为 InnoDB 会自动捕获行锁,BDB 会在执行 SQL 语句时捕获页锁的,而不是在事务的开始就这么做。

Mysql行级锁锁的优点有:

在很多线程请求不同记录时减少冲突锁。

事务回滚时减少改变数据。

使长时间对单独的一行记录加锁成为可能。

Mysql行级锁锁的缺点有:

比页级锁和表级锁消耗更多的内存。

当在大量表中使用时,比页级锁和表级锁更慢,因为他需要请求更多的所资源。

当需要频繁对大部分数据做 GROUP BY 操作或者需要频繁扫描整个表时,就明显的比其它锁更糟糕。

使用更高层的锁的话,就能更方便的支持各种不同的类型应用程序,因为这种锁的开销比行级锁小多了。

表级锁在下列几种情况下比页级锁和行级锁更优越:

很多操作都是读表。

在严格条件的索引上读取和更新,当更新或者删除可以用单独的索引来读取得到时:

  1. UPDATE tbl_name SET column=value WHERE unique_key_col=key_value;  
  2.  
  3. DELETE FROM tbl_name WHERE unique_key_col=key_value;  

SELECT 和 INSERT 语句并发的执行,但是只有很少的 UPDATE 和 DELETE 语句。

很多的扫描表和对全表的 GROUP BY 操作,但是没有任何写表。

表级锁和行级锁或页级锁之间的不同之处还在于:

将同时有一个写和多个读的地方做版本(例如在MySQL中的并发插入)。也就是说,数据库/表支持根据开始访问数据时间点的不同支持各种不同的试图。其它名有:时间行程,写复制,或者是按需复制。
 

 

 

【编辑推荐】

随机获取Mysql数据的方法

根据Mysql表备份

MySQL复制表结构问题的解决方法

Mysql清空表的实现方法

几个常见的MySQL性能测试工具

 

责任编辑:段燃 来源: 互联网
相关推荐

2010-11-22 14:42:13

MySQL行级锁

2010-05-24 12:50:59

MySQL表级锁

2022-10-24 00:33:59

MySQL全局锁行级锁

2020-02-06 10:02:45

MySQL数据库全局锁

2010-04-19 09:52:24

Oracle行级锁

2010-06-17 11:22:37

SQL Server数

2021-07-07 10:45:20

MySQL表级锁MyISAM

2010-11-23 13:57:50

MySQL独立表空间

2021-09-13 10:27:34

云备份云恢复云计算

2023-03-20 09:17:13

策略模式Springboot

2023-02-22 09:16:22

2016-09-08 14:50:59

AndroidiPhoneiOS

2018-05-29 11:44:22

数据库MySQL死锁

2010-06-19 14:19:18

RIP路由协议

2020-02-24 21:43:36

avaJVM 级锁线程安全

2019-03-13 09:00:00

Web应用SPAJavaScript

2021-10-09 09:52:17

云存储公共云迁移

2022-11-17 09:14:58

MySQL加行级锁幻读

2021-09-08 09:00:00

DevOps开发IT

2022-11-11 15:49:41

MySQL隔离
点赞
收藏

51CTO技术栈公众号