InnoDB按表空间(tablespace)存储数据。在默认配置中,会有一个初始大小为10MB的文件和一个名为ibdata1的文件,该文件是默认的表空间文件(tablespce文件),用户可以通过参数innodb_data_file_path来设置,可以有多个数据文件,如果不设置innodb_file_per_table,那些Innodb存储引擎类型的表的数据都放在这个共享表空间中,并且系统变量innodb_file_per_table=1,那么InnoDB存储引擎类型的表会生成一个独立的表空间。那么独立表空间有什么优缺点呢?如何判断XX表是独立表空间还是共享表空间?一、独立表空间的优缺点1、优点:(1)每个表都有自己独立的表空间。(2)每个表的数据和索引都会存在自己的表空间中。(3)单个表可以在不同数据库之间移动。(4)空间可回收(除droptable操作外,表空间不能自行回收)droptable操作自动回收表空间。对于统计分析或者日值表,删除大量数据后,可以使用:altertableTableNameengine=innodb;缩小未使用的空间。使用innodb-plugin为Innodb使用turncatetable也会缩小空间。对于使用独立表空间的表,无论怎么删除,表空间的碎片都不会严重影响性能,还是有机会处理的。2、缺点是单表增加过大,比如100多G。2、识别数据表是独立表空间还是共享表空间1、使用ibd文件识别是不是表的存储引擎是InnoDB,表空间(tablespace)是共享表空间,那么数据库对应的目录下没有“表名”。ibd”文件。对于独立表空间中的表,有一个“表名.ibd”文件。只是这种方法很笨。对于生产环境,识别大量的表确实不是一个好方法。表以这种方式。--innodb_file_per_table=1showvariableslike'innodb_file_per_table';createtableIndependent_tablespace(namevarchar(64));ls-lrtindependent_tablespace。*--innodb_file_per_table=0showvariableslike'innodb_file_per_table';createtablecommon_tablespace(namevarchar(64));ls-lrtindependent_tablespace。*2。INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES区分INFORMATION_SCHEMA.INNODB_SYS_TABLESPACESMySQL5.6关于这个系统表提供了关于表的格式和存储特性的信息,包括行格式、压缩页面大小位级信息(如果适用)和INNODB表空间信息。-共享表享表享表选择table_name,table_type,n'共享表享表享表'astable_space,Engine,Engine,版本,table_rows,avg_rowferce_low,create_time,update_time_time_time_timeforminformation_schema.tablestleefte_schema.tablestleftleftlefte_schemaefation_schema.schema.schema.innoble_innobe_innobe_innobesconconsconconcance.incame>namewherei.nameisnullandt.table_schema='hwb'andt.engine='innodb';-独立独立独立独立独立表表空间表表表表表空间空间表表表表表表空间空间空间表空间表表表表表表表空间空间表表表空间空间空间表空间表空间表空间INNODB_SYS_TABLESPACESIONCONCAT(T.TABLE_SCHEMA,'/',T.TABLE_NAME)=I.NAMEWHERET.TABLE_SCHEMA='HWB'ANDT.ENGINE='InnoDB';3.INFORMATION_SCHEMA.INNODB_SYS_TABLES区分(推荐)MySQL5.7的INFORMATION_SCHEMA.INDB的SPACE_TYPE字段,但是它的值都是Single,而INFORMATION_SCHEMA.INNODB_SYS_TABLES还有一个额外的字段SPACE_TYPE,它的值是Single和System,分别代表独立表空间和共享表空间。--独立表空间SELECT*FROMINFORMATION_SCHEMA.INNODB_SYS_TABLESWHERESPACE_TYPE='Single';SELECTTABLE_SCHEMA,TABLE_NAME,TABLE_TYPE,N'独立表空间'ASTABLE_SPACE,ENGINE,VERSION,TABLE_ROWS,AVG_ROW_LENGTH,CREATE_TIME,UPDATE_TIMEFROMINFORMATION_SCHEMA.TABLESTINNERJOININFORMATION_SCHEMA.INNODB_SYS_TABLESPACESIONCONCAT(T.TABLE_SCHEMA,'/',T.TABLE_NAME)=I.NAMEWHERET.TABLE_SCHEMA='HWB'ANDT.ENGINE='InnoDB';--共享表空间SELECTTABLE_SCHEMA,TABLE_NAME,TABLE_TYPE,N'共享表空间'ASTABLE_SPACE,ENGINE,VERSION,TABLE_ROWS,AVG_ROW_LENGTH,CREATE_TIME,UPDATE_TIMEFROMINFROMINFORMATION_SCHEMA.TABLESTLEFTJOININFORMATION_SCHEMA.INNODB_SYS_TABLESPACESIONCONCAT(T.TABLE_SCHEMA,'/',T.TABLE_NAME)=I.NAMEWHEREI.NAMEISNULLANDT.TABLE_SCHEMA='HWB'ANDT.ENGINE='InnoDB';
