MySQL存储引擎

首先找到MySQL的中数据文件的存储位置:show global variables like "%datadir%";

​

MyISAM存储引擎 :

  1. 建表时可指定数据文件、索引文件的存储位置
  2. 单表最大支持的数据量是2的64次方条记录
  3. 每个表最多可建64个索引
  4. 每个复合索引最多包含64个列,索引值的最大长度是1000B
CREATE TABLE test_myisam(
    a INT UNSIGNED,
    b VARCHAR(20),
    c CHAR(32)
)ENGINE=MYISAM;

产生了3个文件:

​

 .MYI文件存储索引,.MYD文件存储数据。

MyISAM引擎的存储格式:

  1. Fixed:定长\静态,只要字段中不包含VARCHAR、TEXT、BLOB。更稳定,速度更快。
  2. Dynamic:动态,只要字段中包含了VARCHAR、TEXT、BLOB。占用空间小。
  3. Compressed:压缩,使用myisampack创建

①

CREATE TABLE test_myisam1(
    a INT UNSIGNED,
    b CHAR(20),
    c CHAR(32)
)ENGINE=MYISAM;

  show table status like 'test_myisam';  用于检查表状态。

②

CREATE TABLE test_myisam(
    a INT UNSIGNED,
    b VARCHAR(20),
    c CHAR(32)
)ENGINE=MYISAM;

 ③也可把包含变长字段的表人为设置成定长的:

CREATE TABLE test_myisam2(
    a INT UNSIGNED,
    b CHAR(20),
    c CHAR(32)
)ENGINE=MYISAM ROW_FORMAT=FIXED;

 InnoDB存储引擎:

  1. 支持事务:服务崩溃时能恢复,最大限度保护用户数据
  2. 支持行级锁:提升多并发时的读写性能
  3. 支持外键保证数据一致性和完整性
  4. 有自己独立的缓冲池,常用的数据和所有都在缓存中
  5. 对于INSERT、UPDATE、DELETE操作,InnoDB会用一种change buffering机制来自动优化,还可提供一致性的读,还能缓存更多变更的数据,减少磁盘I/O,提高性能。
  6. 所有表都需要创建主键,最好是配合AUTO_INCREMENT使用。
CREATE TABLE test_innodb(
    a INT UNSIGNED,
    b CHAR(20)
);

 产生一个文件:

​

 .ibd文件包含了数据和索引。

​

posted @ 2021-09-27 16:11  有何不可有  阅读(55)  评论(0)    收藏  举报