博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
锁机制
阅读量:6811 次
发布时间:2019-06-26

本文共 1279 字,大约阅读时间需要 4 分钟。

hot3.png

一、MVCC简介

MVCC (Multiversion Concurrency Control),即多版本并发控制技术,它使得大部分支持行锁的事务引擎,不再单纯的使用行锁来进行数据库的并发控制,取而代之的是把数据库的行锁与行的多个版本结合起来,只需要很小的开销,就可以实现非锁定读,从而大大提高数据库系统的并发性能

读锁:也叫共享锁、S锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S 锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。

写锁:又称排他锁、X锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。这保证了其他事务在T释放A上的锁之前不能再读取和修改A。

表锁:操作对象是数据表。Mysql大多数锁策略都支持(常见mysql innodb),是系统开销最低但并发性最低的一个锁策略。事务t对整个表加读锁,则其他事务可读不可写,若加写锁,则其他事务增删改都不行。

行级锁:操作对象是数据表中的一行。是MVCC技术用的比较多的,但在MYISAM用不了,行级锁用mysql的储存引擎实现而不是mysql服务器。但行级锁对系统开销较大,处理高并发较好。

 

 

一、什么是锁

    锁机制是用于管理对共享资源的并发访问。

   在数据库中,lock与latch都可以被称为锁。latch 一般称为闩锁(轻量级的锁) 因为其要求锁定的时间非常短, lock的对象是事务,用来锁定的是数据库中的对象,如表、页、行。

0B9007DB8F174AF584A564683C7098AF

 

  latch一般用于锁住事务号,内存等一些资源。而lock一般用于锁住记录,latch基本用户感知不到,lock可能是我们需要经常感知到的,下面介绍的锁为lock锁。

 

二、 锁的分类

      mysql存在多种不同的引擎,各种不同引擎类型面对的使用场景不一样,不同引擎之间的锁粒度可能有差别。 例:innodb能支持行级锁,myISAM支持表级锁,BDB支持页级锁,他们的特定如下:

          1: 行级锁具有较高的并发性,比较适合并发度较高的场景,同时也更耗费资源。 但是如果锁住大量的记录,会比页级锁或者表级锁更慢,需要获取大量锁资源。

          2:表级锁消耗资源更少,但是并发读较低。比较适合需要经常锁住大量数据的场景。

          3:页级锁界于行锁以及表级锁之间,但是在无法解决热点数据的并发问题。

      接下来分别创建两张不同引擎的表,分别演示分别在myisam以及innodb大量数据插入的情况下,另一个会话更新一条数据的block状态。以及锁类型,模拟过程为:

              (1):创建一张myisam(myisam_lock_test)或者是innodb引擎的表(innodb_lock_test)。

              (2):开启一个会话sessionA,插入一条数据。

              (3):使用load指令进行大量数据插入。

              (4):开启另一个会话更新步骤二张插入的数据。

 

转载于:https://my.oschina.net/rouchongzi/blog/799231

你可能感兴趣的文章
javaScript 面向对象与原型
查看>>
CSS定位设置实例——盒子的定位
查看>>
LitePal 数据库使用方法(最新2.0LitePal数据库适用)
查看>>
异步读写之利用完成历程
查看>>
讯飞语音——离线命令词识别
查看>>
ccpcfinal总结
查看>>
委托解绑的一个小问题
查看>>
汇编语言(王爽)第七章与实验6
查看>>
lumion制作海上明月5.29
查看>>
ruby 1.9.3 字符和asscii转换
查看>>
bzoj千题计划176:bzoj1199: [HNOI2005]汤姆的游戏
查看>>
codevs1842 递归第一次
查看>>
uva 1637 Double Patience
查看>>
高斯—若尔当(约当)消元法解异或方程组+bitset优化模板
查看>>
2016vijos 1-1 兔子的字符串(后缀数组 + 二分 + 哈希)
查看>>
HTML基本组成结构与标签的认识
查看>>
springMVC学习(1)
查看>>
mysql链接 及备份
查看>>
eclipse导入不到嵌套的项目
查看>>
eclispe file查找
查看>>