mysql 中锁升级问题

阅读: 评论:0

mysql 中锁升级问题

mysql 中锁升级问题

锁升级(Lock Escalation)是指将当前锁的粒度降低。举例来说,数据库可以把一个表的1000个行锁升级为一个页锁,或者将页锁升级为表锁。

如果在数据库的设计中认为锁是一种稀有资源,而且想避免锁的开销,那数据库中会频繁出现锁升级现象。MicrosoftSQLServer数据库的设计认为锁

是一种稀有的资源,在适合的时候会自动地将行、键或分页锁升级为更粗粒度的表级锁。这种升级保护了系统资源,防止系统使用太多的内存来维护锁,

在一定程度上提高了效率。即使在MicrosoftSQLServer2005版本之后,SQLServer数据库支持了行锁,但是其设计和InnoDB存储引擎完全不同,

在以下情况下依然可能发生锁升级:

   ◆由一句单独的SQL语句在一个对象上持有的锁的数量超过了阈值,默认这个阈值为5000。值得注意的是,如果是不同对象,则不会发生锁升级

  ◆锁资源占用的内存超过了激活内存的40%时就会发生锁升级在MicrosoftSQLServer数据库中,由于锁是一种稀有的资源,因此锁升级会带来一定的效率提高。

但是锁升级带来的一个问题却是因为锁粒度的降低而导致并发性能的降低。InnoDB存储引擎不存在锁升级的问题。因为其不是根据每个记录来产生行锁的,相反,

其根据每个事务访问的每个页对锁进行管理的,采用的是位图的方式。因此不管一个事务锁住页中一个记录还是多个记录,其开销通常都是一致的。

假设一张表有3000000个数据页,每个页大约有100条记录,那么总共有300000000条记录。若有一个事务执行全表更新的SQL语句,则需要对所有记录加X锁。

若根据每行记录产生锁对象进行加锁,并且每个锁占用10字节,则仅对锁管理就需要差不多需要3GB的内存。

而InnoDB存储引擎根据页进行加锁,并采用位图方式,假设每个页存储的锁信息占用30个字节,则锁对象仅需90MB的内存。

由此可见两者对于锁资源开销的差距之大。

本电子书为免费下载,共同提高技术,勿做盈利使用

MYSQL系列书籍

高可用mysql: =2651 (访问密码: 2651)

MySQL王者晋级之路.pdf: =2651 (访问密码: 2651)

MySQL技术内幕InnoDB存储引擎第2版.pdf: =2651 (访问密码: 2651)

MySQL技术内幕 第4版.pdf: =2651 (访问密码: 2651)

MySQL管理之道,性能调优,高可用与监控(第二版).pdf: =2651 (访问密码: 2651)

深入浅出MySQL数据库开发、优化与管理维护第2版.pdf: =2651 (访问密码: 2651)

高性能MySQL.第3版.Baron Schwartz.pdf: =2651 (访问密码: 2651)

MYSQL内核:INNODB存储引擎 卷1.pdf: =2651 (访问密码: 2651)

MySQL技术内幕InnoDB存储引擎第2版.pdf: =2651 (访问密码: 2651)

MySQLDBA修炼之道.pdf: =2651 (访问密码: 2651)

MySQL5.7从入门到精通.pdf: =2651 (访问密码: 2651)

高可用mysql.pdf: =2651 (访问密码: 2651)

HIVE电子书

Practical Hive.pdf: =2651 (访问密码: 2651)

Hive-Succinctly.pdf: =2651 (访问密码: 2651)

Apache Hive Essentials.pdf: =2651 (访问密码: 2651)

Apache Hive Cookbook.pdf: =2651 (访问密码: 2651)

hadoop电子书

Practical Hadoop Migration.pdf: =2651 (访问密码: 2651)

Hadoop实战-陆嘉恒(高清完整版).pdf: =2651 (访问密码: 2651)

Hadoop & Spark大数据开发实战.pdf: =2651 (访问密码: 2651)

Expert Hadoop Administration.pdf: =2651 (访问密码: 2651)

Big Data Forensics - Learning Hadoop Investigations.pdf: =2651 (访问密码: 2651)

python电子书

python学习手册.pdf: =2651 (访问密码: 2651)

Python基础教程-第3版.pdf: =2651 (访问密码: 2651)

Python编程:从入门到实践.pdf: =2651 (访问密码: 2651)

Python Projects for Beginners.pdf: =2651 (访问密码: 2651)

kafka电子书

Learning Apache Kafka, 2nd Edition.pdf: =2651 (访问密码: 2651)

Kafka权威指南.pdf: =2651 (访问密码: 2651)

Kafka in Action.pdf: =2651 (访问密码: 2651)

Apache Kafka实战.pdf: =2651 (访问密码: 2651)

Apache Kafka Cookbook.pdf: =2651 (访问密码: 2651)

spark电子书

Spark最佳实践.pdf: =2651 (访问密码: 2651)

数据算法--Hadoop-Spark大数据处理技巧.pdf: =2651 (访问密码: 2651)

Spark大数据分析实战.pdf: =2651 (访问密码: 2651)

Spark 2.0 for Beginners.pdf: =2651 (访问密码: 2651)

Pro Spark Streaming.pdf: =2651 (访问密码: 2651)

Spark in Action.pdf: =2651 (访问密码: 2651)

Learn PySpark.pdf: =2651 (访问密码: 2651)

Fast Data Processing with Spark.pdf: =2651 (访问密码: 2651)

Fast Data Processing with Spark, 2nd Edition.pdf: =2651 (访问密码: 2651)

OReilly.Learning.Spark.2015.1.pdf: =2651 (访问密码: 2651)

High Performance Spark.pdf: =2651 (访问密码: 2651)

Machine Learning with PySpark.pdf: =2651 (访问密码: 2651)

Spark for Python Developers.pdf: =2651 (访问密码: 2651)

Spark Cookbook.pdf: =2651 (访问密码: 2651)

Big Data Analytics with Spark.pdf: =2651 (访问密码: 2651)

PySpark SQL Recipes.pdf: =2651 (访问密码: 2651)

Advanced Analytics with Spark Patterns for Learning from Data at Scale .pdf: =2651 (访问密码: 2651)

OReilly.Advanced.Analytics.with.Spark.Patterns.for.Learning.from.Data.at.Scale.pdf: =2651 (访问密码: 2651)

Big Data Analytics Beyond Hadoop_ Real-Time Applications with Storm, Spark, and More Hadoop Alternatives.pdf: =2651 (访问密码: 2651)

本文发布于:2024-02-02 15:27:05,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170685882644704.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:mysql
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23