首先找到MySQL的中数据文件的存储位置:show global variables like "%datadir%";
MyISAM存储引擎 :
- 建表时可指定数据文件、索引文件的存储位置
- 单表最大支持的数据量是2的64次方条记录
- 每个表最多可建64个索引
- 每个复合索引最多包含64个列,索引值的最大长度是1000B
CREATE TABLE test_myisam(
a INT UNSIGNED,
b VARCHAR(20),
c CHAR(32)
)ENGINE=MYISAM;
产生了3个文件:
.MYI文件存储索引,.MYD文件存储数据。
MyISAM引擎的存储格式:
- Fixed:定长\静态,只要字段中不包含VARCHAR、TEXT、BLOB。更稳定,速度更快。
- Dynamic:动态,只要字段中包含了VARCHAR、TEXT、BLOB。占用空间小。
- 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存储引擎:
- 支持事务:服务崩溃时能恢复,最大限度保护用户数据
- 支持行级锁:提升多并发时的读写性能
- 支持外键保证数据一致性和完整性
- 有自己独立的缓冲池,常用的数据和所有都在缓存中
- 对于INSERT、UPDATE、DELETE操作,InnoDB会用一种change buffering机制来自动优化,还可提供一致性的读,还能缓存更多变更的数据,减少磁盘I/O,提高性能。
- 所有表都需要创建主键,最好是配合AUTO_INCREMENT使用。
CREATE TABLE test_innodb(
a INT UNSIGNED,
b CHAR(20)
);
产生一个文件:
.ibd文件包含了数据和索引。