温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-09-18 12:46:53 来源:亿速云 阅读:164 作者:chen 栏目:数据库

本篇内容介绍了“Mysql行级锁和页级锁的优缺点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

  
  如果想要在一个表上做大量的 INSERT 和 SELECT 操作,但是并行的插入却不可能时,可以将记录插入到临时表中,然后定期将临时表中的数据更新到实际的表里。可以用以下命令实现:
  
  mysql
  
  >
  
  LOCK TABLES real_table WRITE, insert_table WRITE;
  
  mysql
  
  >
  
  INSERT INTO real_table SELECT * FROM insert_table;
  
  mysql
  
  >
  
  TRUNCATE TABLE insert_table;
  
  mysql
  
  >
  
  UNLOCK TABLES;
  
  InnoDB 使用Mysql行级锁锁,BDB 使用页级锁。对于 InnoDB 和 BDB 存储引擎来说,是可能产生死锁的。这是因为 InnoDB 会自动捕获行锁,BDB 会在执行 SQL 语句时捕获页锁的,而不是在事务的开始就这么做。
  
  Mysql行级锁锁的优点有:
  
  在很多线程请求不同记录时减少冲突锁。
  
  事务回滚时减少改变数据。
  
  使长时间对单独的一行记录加锁成为可能。
  
  Mysql行级锁锁的缺点有:
  
  比页级锁和表级锁消耗更多的内存。
  
  当在大量表中使用时,比页级锁和表级锁更慢,因为他需要请求更多的所资源。
  
  当需要频繁对大部分数据做 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 操作,但是没有任何写表。
  
  表级锁和行级锁或页级锁之间的不同之处还在于:
  
  将同时有一个写和多个读的地方做版本(例如在MySQL中的并发插入)。也就是说,数据库/表支持根据开始访问数据时间点的不同支持各种不同的试图。其它名有:时间行程,写复制,或者是按需复制。

“Mysql行级锁和页级锁的优缺点”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI