美文网首页
MySQL的并发控制-mage

MySQL的并发控制-mage

作者: 麟之趾a | 来源:发表于2021-10-16 23:09 被阅读0次

    MySQL并发控制

    MySQL是一个进程多个线程模型,当并发过来时,就会出现资源争用情况。间接就会产生锁

    MySQL锁

    读锁: 共享锁,可以让其他读进行,但排斥写锁
    写锁: 排他锁,排斥读锁和写锁

    • MySQL server:MySQL本身服务的锁,由人工显示定义
    lock table read 读锁
    lock table write 写锁
    unlock table 解锁
    
    • MySQL engine: MySQL数据引擎自带的锁,由MySQL自己完成

    MySQL事务

    MySQL事务: MySQL事务本身一个SQL语句,或者一组SQL,是一个不可切分的原子单元
    ACID:
    原子性: 任务本身是一个整体,不可切分。事务执行要不成功,要么失败
    隔离性:: 事务和事务之间是具有隔离关系。因为当两条事务,同时操作一条语句,就会出现资源争用。所以事务之间要具有隔离关系,但不能完全隔离。为了折中,会有隔离级别
    一致性:事务在执行过程中,其中的数据是一致的,不会增加和减少
    持久性: 事务一旦执行成功,永久有效

    innodb引擎支持MySQL事务,为了保证事务,其引进来undo和redo日志
    undo: 做回滚用,记录了事务执行前数据库中数据状态,当事务执行过程中,数据库意外停止。当再次启动时,会读取undo里面日志进行事务回滚。undo相当于数据的一次快照
    redo:记录每条事务的执行记录,以及事务在执行之前,这条数据的状态。用来保证事务的一致性。redo的日志是在磁盘上一段连续的空间,对数据库的操作,会先写在redo上,然后又redo再在MySQL上的表执行

    MySQL隔离级别:用来保证事务的隔离性
    ru读未提交: 可以读到还没有提交的事务,即出现脏读
    rc读以提交: 读到已经提交的事务,不可重复读,重复读可能会出现结果不一致的情况
    rr可重复读: 可以重复读,但是自己骗自己,当双方都开始事务,一方修改数据,并提交。另一方在查询该数据,在对方事务期间和提交事务,另一方都会查到之前的数据。当自己提交事务后,就会查到最新数据。即幻读
    串行化读: 即一个事务完毕,另一个读取之前事务的数据的事务,才开始执行。但对数据库性能影响很大
    注:以上隔离级别出现的错误,都是在两个事务在操作同一个资源时出现

    MySQL修改参数

    • MySQL全局参数
      全局参数修改,只针对以后连进来的线程生效
    • MySQL的当前session的参数
      及时生效,但只针对当前的线程
    • MySQL内嵌了计数器,来记录其运行状态mysql status

    相关文章

      网友评论

          本文标题:MySQL的并发控制-mage

          本文链接:https://www.haomeiwen.com/subject/yhhioltx.html