一文看懂MySQL若何果断InnoDB表是自力表空间仍是同
分类:互联网事 热度:

InnoDB采纳按表空间(tablespace)的方法举行存储数据,默许设置状况下会有一个初始巨细为10MB, 名字为ibdata1的文件,该文件就是默许的表空间文件(tablespcefile),用户能够经过参数innodb_data_file_path对其举行配置,能够有多个数据文件,若是没有配置innodb_file_per_table的话,那些Innodb存储范例的表的数据都放在这个同享表空间中,而体系变量innodb_file_per_table=1的话,那末InnoDB存储引擎范例的表就会发生一个自力表空间。

那末自力表空间有哪些好坏呢?怎样去判定XX表是自力表空间仍是同享表空间?

一、自力表空间优缺点

1. 好处:

(1) 每一个表都有自已自力的表空间。

(2) 每一个表的数据和索引都会存在自已的表空间中。

(3) 能够实现单表在分歧的数据库中挪动。

(4) 空间能够回收(除drop table操纵处,表空不能自已回收)

  • Drop table操纵主动回收表空间,假如对付统计分析或是日值表,删除大量数据后能够经过:alter table TableNameengine=innodb;回缩不必的空间。
  • 关于使innodb-plugin的Innodb应用turncate table也会使空间缩短。
  • 对付运用自力表空间的表,不管怎么删除,表空间的碎片不会太重大的影响机能,并且另有时机解决。

2. 缺陷

单表增长过大,如高出100个G。

二、鉴别数据表是自力表空间仍是同享表空间

1. 经过ibd文件鉴别

要是表的存储引擎是InnoDB,并且表空间(tablespace)是同享表空间的话,那末数据库对应目次下面是没有"表名.ibd"文件的。自力表空间的表的话,则有"表名.ibd"文件。只是这个法子很笨,对付临盆情况,大量的表经过这类方法辨别,确凿不是一个好法子。

一文看懂MySQL怎样判定InnoDB表是自力表空间照旧同享表空间

一文看懂MySQL若何果断InnoDB表是自力表空间照样同享表空间

2. INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES辨别

MySQL 5.6的INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES对于这个体系表供应了有关表格的花样和存储特征,囊括行款式,紧缩页面巨细位级别的信息(如合用),INNODB的表空间信息。

一文看懂MySQL怎样判定InnoDB表是自力表空间仍是同享表空间

3. INFORMATION_SCHEMA.INNODB_SYS_TABLES辨别(保举)

MySQL 5.7的INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES中多了SPACE_TYPE字段,无非其值所有为Single,而INFORMATION_SCHEMA.INNODB_SYS_TABLES中也多了字段SPACE_TYPE,其值有Single与System 划分示意自力表空间和同享表空间。

一文看懂MySQL怎样果断InnoDB表是自力表空间仍是同享表空间

【编辑保举】

上一篇:物联网是不是会彻底改变云? 下一篇:5G技能在聪慧都会中使用的五点倡议
猜你喜欢
各种观点
热门排行
精彩图文