高性能mysql笔记

本文深入探讨了MySQL的架构,重点讲解了并发控制,包括读写锁、锁粒度和事务隔离级别。还详细介绍了多版本并发控制(MVCC),解释了InnoDB的MVCC实现以及其在不同事务隔离级别下的工作原理。此外,文章还讨论了存储引擎的选择,建议在非事务需求下可以选择MyISAM,而InnoDB更适合事务处理和高性能场景。
摘要由CSDN通过智能技术生成

(一) mysql 架构

1.1 逻辑架构

在这里插入图片描述
第二层:查询解析,分析,优化,缓存以及所有的内置函数(日期,时间,数学等等),以及所有的夸存储引擎的功能:存储过程、触发器、视图等
第三层:包含存储引擎,存储引擎是负责数据的存储和提取的。存储引擎都实现了同样的接口,屏蔽了不同ing存储引擎的差异。
存储引擎API 的底层函数,用于执行"开始事务"或者"根据主键提取一行记录"等操作
注意:存储引擎不会去解析sql 1 ^1 1,不同存储引擎间不互相通信,只是简单响应上层服务器的请求
1 _1 1 InnoDB 是一个例外,会解析外键定义,因为mysql服务器本身没有实现该功能

1.2 并发控制

  • 问题
    多个查询需要在同一时刻修改数据
    类比邮件,如果两封邮件同时到达同一个收件人服务器,入过不控制,会发生两封邮件内容相互追加

  • 读写锁
    写操作: 加锁(独占锁),只能有一个线程在写
    读操作:只能在没有写锁存在的情况下才能获取(共享锁),可多个线程读
    :一个写锁或阻塞其他的写锁与读锁

  • 锁粒度
    含义:锁定的数据量越少,则系统的并发程度越高(比如jdk1.7 与jdk1.8 的hashmap 的实现区别)
    3.1表锁(tabkle lock)
    写操作对整张表加锁(锁开销小),会同时阻塞其他用户对该表的读、写操作
    3.2 行锁(row lock)
    特点: 最大程度支持并发处理(锁开销最大)
    :行级锁只在存储引擎实现

    1.3 事务

  1. 含义
    指的是一组原子性的sql查询,或者是说是一个独立的工作单元(单元内的sql要么都成功,要么全部失败)
  2. 事物特性以及隔离级别
    原子+一致+持久+隔离
  3. 隔离级别:
  • read uncommitted
  • read committed
  • repeatble read(mysql 默认的事务隔离级别)
  • serilizable (完全牺牲并发性,只能串行操作,隔离级别最高)
  1. 不考虑隔离性可能出现的问题:

详细参见另一篇博客
https://blog.csdn.net/qq_36922927/article/details/89326635

  1. 死锁
    含义:两个或多个

  2. 事务日志
    日志:顺序io
    磁盘io:是随机io
    预写日志:

  3. mysql 中的事务

  • auto commit
  • set transaction isolation level (设置事务隔离级别)
  • 同一个事务中使用多种存储引擎不可靠(事务是在存储引擎中实现的)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值