MySQL(Mariadb)总结5 - MySQL(MariaDB)存储引擎

MySQL存储引擎

表类型:

CREATE TABLE ... ENGINE = []

InnoDB:

  • 处理大量的短期事务;
  • 数据存储于"表空间(table space)"钟;
    • 所有InnoDB表的数据和索引放置于同意个表空间中;表空间文件;
      • datadir定义中
      • 数据文件:idbdata1,idbdata2, ...
    • 每个表单独使用一个表空间存储表的数据和索引;
      • innodb_file_per_table=ON
      • 数据文件(存储数据和索引): tb1_name.idb
  • 基于MVCC来支持高并发,支持所有的四个隔离级别,默认级别为REPEATABLE READ;间隙放置幻读;
  • 使用聚集索引;
  • 支持"自适应hash索引";
  • 行级锁
  • MariaDB中的InnoDB实际是是XtraDB,由percona公司维护;
  • 特性:
    • 数据存储: 表空间
    • 并发: MVCC,间隙锁
    • 索引: 聚集缩影, 辅助索引
    • 性能: 预计操作,自适应hash,插入缓存区
    • 备份: 支持度热备(xtrabackup)

MyISAM:

  • 支持全文索引(FULLTEXT index),压缩,空间函数(GIS);但不支持事务,且为表级锁;
  • 崩溃后无法安全恢复 --> Aria: crash-safe
  • 适用场景: 只读(过着写较少), 表较小(可以接受长时间进行修复操作)
  • 文件:
    • tbl_name.frm: 表格式定义
    • tbl_name.MYD: 数据文件
    • tbl_name.MYI: 索引文件
  • 特性:
    • 加锁和并发: 表级锁
    • 修复: 手工或自动修复,但可能丢失数据
    • 索引: 非聚集索引
    • 延迟更新索引键
    • 压缩表

行格式: dynamic, fixed, compressed, compact,redundant

其他的存储引擎:

  • CSV:将普通的CSV文件爱你作为MySQL表使用;
  • MRG_MYISAM:将多个MyISAM表合并成为一个虚拟表;
  • BLAKHOLE: 类似于/dev/null,不真正存储任何数据
  • MEMORY: 所有数据都保存于内存中,内存表: 支持HASH索引,表级锁;
    • 临时表
  • PERFORMNCE_SCHEMA:伪存储引擎;
  • ARCHIVE: 仅支持SELECT和INSERT操作;支持行级锁和专用缓存区;
  • FEDERATED: 用于访问其他远程mysql服务器一个代理,它通过创建一个到远程mysql服务器的客户端而完成数据存储,在MariaDB的上实现是FederatedX

MariaDB支持的其他存储引擎:

  • OQGraph
  • SphinxSE
  • TokuDB
  • Cassandra
  • CONNECT
  • SQUENCE

并发控制:

  • 锁:
    • 读锁: 共享锁
    • 写锁: 独占锁
  • 锁粒度:
    • 表级锁
    • 行级锁
  • 锁策略: 在锁粒度及数据安全性寻求的平衡机制;
  • 每种存储引擎都可以自行实现其锁策略和锁粒度;
  • MySQL在服务器级也实现了锁,表级锁;用户可显示请求
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容