数据库存储引擎

一. 简介

MySQL的核心即存储引擎,存储引擎是作用在表上,而不是数据库,不同的存储引擎提供了不同的存储机制、索引技巧、锁定水平等,MySQL5.7支持的存储引擎有:InnoDB、MyISAM、Memory、Merge、Archive、Federated、CVS等,需针对不同的要求选择合适的存储引擎。

  • 查看MySQL支持的存储引擎:SHOW ENGINES
  • 查看MySQL默认存储引擎:SHOW VARIABLE LIKE 'storage_engine'

二. InnoDB

  • 简介
    InnoDB是MySQL5.5.5之后的默认存储引擎,是事务型数据库的首选引擎,支持事务安全表(ACID)、行锁定、外键。

  • 在磁盘上的体现
    xxx.frm:表结构文件
    xxx.ibd:索引和数据文件(InnoDB Data)
    注:索引和数据在同一文件,故又称InnoDB的索引为聚集索引。

  • 事务写入过程
    (1)先将事务数据写入到Buffer Pool和事务日志;
    (2)再异步地从Buffer Pool或事务日志中将数据写到Datafile中;
    (3)若数据写到Datafile未完成数据库就崩了,Buffer Pool的数据也极大可能丢失,故需从事务日志中恢复数据,此过程即Recovery;

    注:
    (1)LSN是事务日志记录每一条记录的编号,每次将事务日志中的数据写到Datafile后,会有一个标记(即Checkpoint)记录写到哪一条数据了,下次只需从Checkpoint的下一条记录开始写入; (2)事务日志记录了所有的数据,且数据不允许修改; (3)在未将事务数据写到Datafile之前,不允许删除事务日志。

  • 后台线程
    (1)Master Thread(主线程):将缓冲池中的数据异步刷新到磁盘中;
    (2)IO thread(io线程):IO请求的回调处理,且使用了大量的AIO来处理;
    (3)Purge Thread(净化线程):回收已使用并分配的undo页;
    (4)Page Cleaner Thread (页面清洁线程):从master线程中卸下buffer pool刷脏页的工作独立出来的线程;

  • 底层存储结构
    B+Tree

三.MyISAM

  • 在磁盘上的体现
    xxx.frm:表结构文件
    xxx.MYD:数据文件(MyISAM Data)
    xxx.MYI:索引文件(MyISAM Index)
    注:因索引和数据在不同文件中,MyISAM的索引又称为非聚集索引。

  • MyISAM和InnoDB的区别
    (1)InnoDB支持事务,MyISAM不支持事务;
    (2)InnoDB适合频繁修改以及涉及到安全性较高的应用, MyISAM适合查询以及插入为主的应用;
    (3)InnoDB支持外键,MyISAM不支持外键;
    (4)InnoDB支持行级锁,MyISAM锁的粒度是表级的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值