全盘了解MySQL

  1. MySQL逻辑架构
    1. 连接层:请求到来经过TCP三次握手后建立连接成功,然后需要进行鉴权
    2. Server层:sql语句解析优化(选择索引)然后交给存储引擎层执行,mysql8以后查询缓存被放弃

  1. 存储引擎层:类似于插件,实现了mysql的存储引擎标准,然后和文件系统交互
    1. 对比项

      MyISAM

      InnoDB

      主外键

      不支持

      支持

      事务

      不支持

      支持

      行表锁

      表锁

      不适合高并发

      行锁

      适合高并发

      缓存

      只缓存索引

      缓存索引和真实数据,对内存要求较高,且内存大小对性能有决定性影响

      表空间

      关注点

      性能

      事务

  1. MySQL的目录和文件
    1. 表在文件系统中的表示
      1. .frm文件专门描述表结构
    2. InnoDB如何存储表数据的
      1. 会把表数据放到表空间,对应表中一个或多个真实文件
      2. 表空间分为系统表空间和独立表空间,目前新版本都是有多少个表就有多少个独立表空间
      3. 独立表空间在数据库对应文件夹,.ibd文件就是独立表空间
    3. 常见日志文件
      1. 错误日志mysql的log/error.log
      2. 慢查询日志slow:会配置到时间阈值,超过阈值的语句都会记录到日志中
      3. 查询日志
      4. 二进制文件bin log:对mysql数据库执行更改的所有操作
  2. MySQL的系统库
    1. performance_schema:监控mysql运行中的一些状态信息,比如执行时间
    2. sys:数据来源于performance和information的聚合,提供给DBA查询问题,比如慢查询sql
    3. information_schema:MySQL数据库的元数据的数据库
    4. mysql:统计信息表
  3. 数据库事务
    1. 事务是数据库执行过程中的一个不可再分割逻辑单位,由一个有限的数据库操作序列构成(多个DML语句,select语句不包含事务),要不全部成功,要不全部不成功
    2. 原子性:事务不可再分割,要么全部成功,要么全部失败
    3. 一致性:在事务开始前后,数据的总体一致性没有被破坏
    4. 持久性:让事务提交后所做的修改会永久保存到数据库
    5. 隔离性:多个事务并发执行时,事务内部操作不能被其他线程影响,否则会出现数据脏读、幻读等情况
      1. 脏读:事务读到了另一个事务修改但未提交的数据
      2. 不可重复读:事务内相同记录被检索两次,两次得到的结果不同,和脏读不同是另一个事务已提交
      3. 幻读:事务执行过程中,另一个事务将新记录添加到正在读取的事务中时,和不可重复区别是返回多条
      4.  事务执行过程中,另一个事务将新记录删除并提交事务操作数据,SQL92认为是幻读,MySQL认为发生了被删除记录的不可重复
    6. 隔离级别

      脏读

      不可重复读

      幻读

      READ UNCOMMITTED 

      未提交读

      可能

      可能

      可能

      READ COMMITTED

      已提交读

      -

      可能

      可能

      REPEATABLE READ

      可重复读

      -

      -

      ——

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值