使用InnoDB存储引擎时,需要了解独立表空间和共享表空间。
独立表空间:
每个表会生成独立的文件来存储数据。每个表都有一个.frm的描述文件存放表结构,还有一个.idb文件存放表索引。
优点:
- 每个表都有自己的独立表空间;
- 每个表的数据和索引都会存储在各个表空间中;
- 可以实现单表在不同的数据进行迁移;
- 表空间可以回收(删除表时);
- 不论如何删除,表空间碎片不会太严重。
缺点:
- 单表增长过大时,如超过100G,表查询会比较慢
共享表空间:
数据库中的所有表数据、索引数据都放在同一个文件中,默认路径为data目录下,默认文件名为ibdata1,初始化为10M
优点:
可以将表空间分成多个文件存放在不同磁盘上。数据和文件放在一起方便管理。
缺点:
所有表数据和索引数据存放在一个文件中,将来会是一个很大的文件,拆分成多个文件后会是多个表及索引在表空间中混淆,在对一个表做大量删除操作后,表空间会有大量空隙。
开启独立表空间:
查看独立表空间是否开启: show variables like 'innodb_file_per_table';
开启和关闭独立表空间命令(需要super用户权限设置):
set global innodb_file_per_table = 1/0;