文章目录
  1. 1. 一、MySQL架构
    1. 1.1. 1. 并发控制(服务器+存储引擎)
    2. 1.2. 2. 存储引擎
  2. 2. 二、MySQL性能测试
    1. 2.1. 1. 常见指标
    2. 2.2. 2. 慢查询日志:开销最低,精度最高
  3. 3. 三、 MySQL高级特性
    1. 3.1. 1. 视图

一、MySQL架构

1. 并发控制(服务器+存储引擎)

  • 共享锁和排他锁(读写锁)
  • 锁粒度:

    • 表锁:服务器会为ALTER TABLE这样的语句加表锁
    • 行级锁:只在存储引擎实现
  • 事务的ACID:

    • 原子性:一个事务必须被视为不可分割的最小单元
    • 一致性:数据库总是从一个一致的状态转到另一个一致的状态
    • 隔离性:事务在最终提交之前对其他事务不可见
    • 持久性:一旦事务提交,就会永久保存到数据库中
  • 隔离级别:

    • 未提交读:事务可以读未提交的数据
    • 已提交读:满足隔离性,不能重复查询
    • 可重复读:没有解决幻读(where读取范围内记录,如果另一个事务向范围内加入了记录,则产生幻行)
    • 串行化:强制事务串行执行的
  • 死锁:

    • 死锁超时放弃
    • InnoDB:将持有最少行级排他锁的事务回滚
  • 显式锁:

    • Lock in share mode
    • lock for update
    • ps:不满足SQL规范,应该少量使用
  • InnoDB的MVCC(多版本并发控制):

    • 在每行记录后面增加两列,一个保存行的创建时间,一个保存过期时间
    • SELECT:版本小于当前事务版本+删除版本要么未定义,要么大于事务版本号
    • UPDATE:插入记录保存当前版本号为创建时间+设置当前版本号为原有列的删除时间

2. 存储引擎

InnoDB存储引擎

  • 概览:
    • 数据存储在表空间
    • 采用MVCC支持高并发
    • 间隙锁(锁定查询涉及的行和索引中的间隙),防止幻读
    • 采用聚簇索引
    • 自适应哈希索引加速读操作
    • 插入缓冲区加速写
    • 支持热备份

MyISAM存储引擎

  • 特性:

    • 表级锁
    • 支持repair操作
    • 支持全文索引
    • 延迟更新索引键(DELAY_KEY_WRITE
  • 使用场景:

    • 不在乎并发和数据丢失,不需要事务
    • 尤其在乎空间大小
    • 支持地理空间搜索

二、MySQL性能测试

1. 常见指标

  • 吞吐量:单位时间内事务处理数量(常见指标TPS)
  • 响应时间或延迟
  • 并发性:同时工作中的线程数和连接数
  • 可扩展性

2. 慢查询日志:开销最低,精度最高

  • 使用pt-query-digest工具输出报告,找到执行最慢的语句
  • 剖析单条查询:

    • show profile
    • show status
  • 分析是否是服务器的问题:

    • show global status
    • show processlist

三、 MySQL高级特性

1. 视图

  • 视图是虚拟表
  • 不能对视图创建触发器,也不能DROP TABLE
文章目录
  1. 1. 一、MySQL架构
    1. 1.1. 1. 并发控制(服务器+存储引擎)
    2. 1.2. 2. 存储引擎
  2. 2. 二、MySQL性能测试
    1. 2.1. 1. 常见指标
    2. 2.2. 2. 慢查询日志:开销最低,精度最高
  3. 3. 三、 MySQL高级特性
    1. 3.1. 1. 视图