mysql 的读写锁与并发控制

mysql 的读写锁与并发控制1.无论何时只要有多个查询在同一时刻修改数据,都会产生并发控制的问题 2.讨论mysql在两个层面,服务器层和存储引擎层,如何并发控制读写 3.举了个mbox邮箱文件的例子,说如果有多个进程同时对m…

mysql 的读写锁与并发控制

attachments-2020-06-mzvZJ4pv5ed85c9b94e03.png

 

1.无论何时只要有多个查询在同一时刻修改数据,都会产生并发控制的问题

2.讨论mysql在两个层面,服务器层和存储引擎层,如何并发控制读写

3.举了个mbox邮箱文件的例子,说如果有多个进程同时对mbox文件写东西,那么在文件的末尾会,交叉混乱的添加,比如进程1写了几行,进程2也写了几行,互相交叉,数据就是错误的了.设计良好的mbox需要加锁,比如进程1锁住了文件,进程2必须等待进程1结束,锁释放才能去写.但是这样的话就不支持并发了,同一时刻只有一个进程可以写数据

4.读取时可能也会有问题,比如一个进程正在读数据,另一个进程同时想去删数据,此时就是不安全的;共享锁叫读锁,排他锁叫写锁

5.读锁是共享的,它不会阻塞其他读锁;写锁是排他的,它会阻塞其他读锁和写锁;读读不互斥,读写互斥,写写互斥

6.mysql每时每刻都在发生锁定,当某用户在修改数据时,会阻塞其他用户读取该数据

7.mysql中有两种锁粒度,锁住整张表和锁住表中一行

 

表锁:当某用户修改数据时,会获取写锁,此时会锁住整张表,其他用户都不能读和写,myisam

行锁:当某用户修改某几行数据,会获取写锁,此时只是锁住那几行,那几行其他用户不能读和写;其他行没有影响,但是管理锁会消耗资源,innodb

 

8.使用命令来锁表
unlock tables 解锁所有行
lock tables 表名 read或者write

 

测试读写/写读互斥

1.增加读锁

attachments-2020-06-vMSvDiuG5ed99afb2ab95.png

读数据没影响,写数据会被阻塞住

attachments-2020-06-xZOE9WaA5ed99b0211f13.png

2.增加写锁

attachments-2020-06-RFgqTmEc5ed99b087d7cc.png

读和写都会被阻塞

attachments-2020-06-mloaHyr05ed99b0e1d36f.png

 

attachments-2020-06-t3EJE8hb5ed85cec9adbc.jpg

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8065.html

(0)
上一篇 2023-03-08
下一篇 2023-03-08

相关推荐

  • mongodb存储形式_innodb的存储引擎

    mongodb存储形式_innodb的存储引擎一、MongoDB的存储引擎概述 存储引擎(Storage Engine)是MongoDB的核心组件,负责管理数据如何存储在硬盘(Disk)和内存(Memory)上。从MongoDB 3.2 版本开始

    2023-02-16
    158
  • Python集合运算入门指南

    Python集合运算入门指南Python是一种流行的编程语言,其强大的集合(set)数据结构使得它在数据处理方面非常实用。本文将为大家介绍Python集合的基本概念和常用运算。

    2024-08-11
    32
  • Elasticsearch常用查询过滤接口与值得注意的问题「建议收藏」

    Elasticsearch常用查询过滤接口与值得注意的问题「建议收藏」Elasticsearch常用查询过滤接口与值得注意的问题 简介 本文将介绍一些ES查询过滤的接口和一些值得问题。 在ES中主要是查询,并且只有在bool查询中才有过滤上下文,当然聚合函数中也可能出…

    2023-04-04
    144
  • MySQL 事务管理「终于解决」

    MySQL 事务管理「终于解决」事务的4个特性(ACID) 原子性 Atomicity。每个事务中的操作,要么都成功,要么都失败 一致性 Consistency。事务执行前后,数据库中的数据应该保持一致 隔离性 Isolation。

    2023-02-04
    152
  • Python中的析构函数详解

    Python中的析构函数详解在Python中,当我们创建一个对象时,系统会给该对象分配一块内存,该内存会在对象被删除时被释放。而当我们需要在对象被删除时执行一些必要的清理操作,这个时候,Python中的析构函数就派上用场了。本文将介绍Python中的析构函数,包括如何实现和使用。

    2024-06-27
    45
  • python对按钮循环点击(python 按钮)

    python对按钮循环点击(python 按钮)1、方法1:while((c=getchar())!=’\n’)

    2023-11-26
    112
  • 初用MySQL Mysql示例库 Navicat15 – G[亲测有效]

    初用MySQL Mysql示例库 Navicat15 – G[亲测有效]初用MySQL Mysql示例库 Navicat15 查看初始密码 MySQl首次启动会创建“超级管理员账号”root@localhost,初始密码存储在日志文件中,通过grep搜索并查看: grep

    2023-03-14
    158
  • Python安装路径

    Python安装路径 Python是广泛应用于各行各业的高级编程语言,因为被设计成容易阅读、易于维护、具有可扩展性和易于学习等优点而受到了广泛的青睐。Python安装路径是指Python安装在电脑上的具体路径。在进行Python编程时,需要了解Python安装路径,才能对Python进行调用和使用。

    2024-07-03
    42

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注