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、可以轻松实现表在不同数据库之间移动 3、DROP TABLE后,表使用的空间立即被释放 4、当表中数据被大量删除后,可以使用alter table TableName engine=innodb;来进行收缩 5、表空间存在碎片时不会影响其他表的使用。 缺点: 1、使用独立表空间后,无法再将表数据分散到不同的多个文件中,如果单个存储无法提供该表所需的全部空间时,无法通过增加新存储来解决 2、innodb_file_per_table开启后,不会影响已经使用共享表空间的表。 3、单表数据较大时,导致其对于的数据文件过大而不利于维护