MySQL三层逻辑架构、并发控制、事务

参考书籍:高性能MySQL第三版

MySQL三层逻辑架构

在这里插入图片描述
在这里插入图片描述

  1. (第一层) 客户端
    不是MySQL独有,作用:连接数据库、认证等等
  2. (第二层) 处理引擎
    MySQL核心业务层,作用:查询解析、分析、优化、缓存(服务器端)和内置函数。
  3. (第三层) 存储引擎
    作用:负责MySQL的数据存储和提取
  4. 连接管理
    a. 每个客户端连接服务器都会创建(拥有)一个线程。
    b. 处理查询操作时,均在当前单独的线程中运行!
    c. 该线程轮流在CPU核中运行。
    d. 服务器会将当前的线程缓存起来。
  5. 安全认证
    客户端连接服务器端时,需提供用户名、密码、连接地址和端口号
  6. MySQL查询优化过程
    查询–>解析–>Tree(解析树)–>优化处理(重写、表执行顺序、加载适合的索引等等)
    可以通过Explain工具查看优化器的解析过程

并发控制

并发控制定义:
多个查询在同一时刻对数据进行修改操作时,那么并发控制问题将会产生

并发控制方案:

  1. 读锁(共享锁)和写锁(排他锁)
    读锁是共享的,相互之间不阻塞!多个客户端在同一时刻读取同一资源时,互不干扰!
    写锁是排他的,写锁会阻塞其他的写锁和读锁!!!
  2. 锁粒度
    在给定的资源上,锁的资源越少,并发程度越高。
    但同时,加锁过程也需要消耗资源,选择更为稳妥的锁机制,还需要更优的锁策略。
    1)表级锁
    a. 最基本的锁策略,也是开销最小的策略。将整张表进行加锁机制。
    b. 当某个用户对表中进行写操作时,触发写锁机制后,将阻塞其他用户的读写操作!!
    c. 诸如类似alert table操作时就是表级锁.
    2)行级锁:
    a. 可以最大程度的支持并发处理,但同时也最大程度实现锁的消耗
    b. 行级锁只在存储引擎中实现

事务

  • 事务特点
    原子性:不可分割的最小执行单元,要么全部成功,要么全部失败!
    一致性:从一个一致性的状态转移到另一个一致性的状态。
    隔离性:一个事务所做的修改在最终提交之前,对其他事务是不可见的。
    持久性:一旦提交,其对数据的修改将永久保存到数据库中。

  • 隔离性的隔离级别

    1)READ UNCOMMITTED(未提交读):一个事务所做的修改在最终提交之前,对其他事务是可见的
    后果:事务读取了为提交的数据,产生“脏读”情况。好处不多,实际应用中一般不采用。

    2)READ COMMITTED(提交读):满足上述的“隔离性”的定义,绝大多数的数据库默认的隔离级别均为READ COMMITTED
    一个事务提交之后,它所做的变更才可以被别的事务看到,也称为“不可重复读”
    后果:在这种隔离级别下,会引发脏读、不可重复读和幻读

    3)REPEATABLE READ(可重复读):解决“脏读”的问题,但可能产生“幻读”情况。
    一个事务执行过程中看到的数据是一致的。未提交的更改对其他事务是不可见的
    后果:会引发幻读,但避免了脏读、不可重复读

    4)SERIALZABLE(串行化): 即我的事务尚未提交,别人就不能修改数据
    对应一个记录会加读写锁,出现冲突的时候,后访问的事务必须等前一个事务执行完成才能继续执行。
    后果:最严格的隔离级别,所有事务按照次序依次执行。脏读、不可重复读、幻读都不会出现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值