🥉MySQL第三篇 存储引擎~🥉

1. MyISAM存储引擎

  1. 默认MyISAM的表会在磁盘中产生三个文件

    • .frm:表结构文件
    • .MYD:数据文件
    • .MYI:索引文件
  2. 可以在创建的时候指定数据文件和索引文件的存储位置,只有MyISAM表支持

    DATA DIRECORY[=] 数据保存的绝对路径
    INDEX DIRECTORY[=] 索引文件保存的绝对路径
    
  3. MyISAM单表最大支持的数据量是2^64次方条记录

  4. 每个表最多可以建立64个索引

  5. 如果是符合索引,每个符合索引最多包含16个列,索引值最大长度是1000B

  6. MyISAM引擎的存储格式

    • 定长(FIXED静态):是指字段中不包含VARCHAR/TEXT/BLOB
    • 动态(DYNAMIC):是指字段中包含了VARCHAR/TEXT/BLOB
    • 压缩(COMPRESSED):myisampack创建

2. InnoDB存储引擎

  1. 设计遵循ACID模型,支持事务,具有从服务崩溃中恢复的能力,能够最大限度保护用户的数据
    • 原子性(Atomiocity)
    • 一致性(Consistency)
    • 隔离性(Isolation)
    • 持久性(Durability)
  2. 支持行级锁,可以提升多用户并发时的读写能力
  3. 支持外键,保证数据的一致性和完整性
  4. InnoDB拥有自己独立的缓冲池,常用的数据和索引都在缓存中
  5. 对于INSERT、UPDATE、DELETE操作,InnoDB会使用一种change buffering的机制来自动优化,还可以提供一致性的读,并且能够缓存变更的数据,减少磁盘I/O,提高性能。
  6. 创建InnoDB表之后会产生两个文件
    1. .frm表结构文件
    2. .idb,数据和索引存储表空间中
  7. 所有的表都需要创建主键,最好是配合上AUTO_INCREMENT,也可以放到经常查询的列作为主键