MySQL Table--独立表空间

数据库表空间

独立表空间

在MySQL 5.6 中引入独立表空间的概念,启用独立表空间后,每个表将生成独立的文件来进行存储。

创建表时可以指定表存放的文件路径

##首选需要确保innodb_file_per_table开启:
show variables like 'innodb_file_per_table';

##创建表时指定目录
CREATE TABLE t1 (c1 INT PRIMARY KEY) 
DATA DIRECTORY = '/remote/directory';

共享表空间优缺点

Innodb的所有数据保存在一个单独的表空间里面,共享表空间可以由多个文件组成,当表使用共享表空间时,表数据可以分布在多个文件中,从而不受Innodb单表不超过64TB的限制。
默认的共享表空间的文件路径在data目录下,默认文件名为ibdata1,初始化为10M。

优点:
可以放表空间分成多个文件存放到各个磁盘上,没有单表不超过64TB的限制。

缺点:
由于多表共用一个共享表空间,当某些表进行大量删除后,共享表空间存在大量碎片,但MySQL暂未提供对共享表空间收缩的方法。

独立表空间优缺点

通过innodb_file_per_table参数将innodb表的数据和索引存放到其自己的表空间中,不再使用共享表空间,独立表空间的默认目录为innodb_data_file

优点:
1、 每个表有自己独立的表空间,数据和索引存放到其独立的表空间中。
2、可以轻松实现表在不同数据库之间移动
3DROP TABLE后,表使用的空间立即被释放
4、当表中数据被大量删除后,可以使用alter table TableName engine=innodb;来进行收缩
5、表空间存在碎片时不会影响其他表的使用。

缺点:
1、使用独立表空间后,无法再将表数据分散到不同的多个文件中,如果单个存储无法提供该表所需的全部空间时,无法通过增加新存储来解决
2、innodb_file_per_table开启后,不会影响已经使用共享表空间的表。
3、单表数据较大时,导致其对于的数据文件过大而不利于维护

 

原文地址:https://www.cnblogs.com/gaogao67/p/11373623.html