千家信息网

MySQL中怎么判断InnoDB表是独立表空间还是共享表空间

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,MySQL中怎么判断InnoDB表是独立表空间还是共享表空间,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、独立表空间优缺点1. 优点
千家信息网最后更新 2026年11月01日MySQL中怎么判断InnoDB表是独立表空间还是共享表空间

MySQL中怎么判断InnoDB表是独立表空间还是共享表空间,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

一、独立表空间优缺点

1. 优点:

(1) 每个表都有自已独立的表空间。

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

(3) 可以实现单表在不同的数据库中移动。

(4) 空间可以回收(除drop table操作处,表空不能自已回收)

  • Drop table操作自动回收表空间,如果对于统计分析或是日值表,删除大量数据后可以通过:alter table TableName engine=innodb;回缩不用的空间。

  • 对于使innodb-plugin的Innodb使用turncate table也会使空间收缩。

  • 对于使用独立表空间的表,不管怎么删除,表空间的碎片不会太严重的影响性能,而且还有机会处理。

2. 缺点

单表增加过大,如超过100个G。

二、判别数据表是独立表空间还是共享表空间

1. 通过ibd文件判别

如果表的存储引擎是InnoDB,而且表空间(tablespace)是共享表空间的话,那么数据库对应目录下面是没有"表名.ibd"文件的。独立表空间的表的话,则有"表名.ibd"文件。只是这个方法很笨,对于生产环境,大量的表通过这种方式判别,确实不是一个好方法。

--innodb_file_per_table=1 show variables like 'innodb_file_per_table'; create table Independent_tablespace(name  varchar(64)); ls -lrt independent_tablespace.* --innodb_file_per_table=0 show variables like 'innodb_file_per_table'; create table common_tablespace(name varchar(64)); ls -lrt independent_tablespace.*

2. INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES判别

MySQL 5.6的INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES 关于这个系统表提供了有关表格的格式和存储特性,包括行格式,压缩页面大小位级别的信息(如适用),INNODB的表空间信息。

--共享表空间 SELECT TABLE_SCHEMA     ,TABLE_NAME     ,TABLE_TYPE     ,N'共享表空间' AS TABLE_SPACE     ,ENGINE     ,VERSION     ,TABLE_ROWS     ,AVG_ROW_LENGTH     ,CREATE_TIME     ,UPDATE_TIME FROM INFORMATION_SCHEMA.TABLES  T LEFT JOIN INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES I ON  CONCAT(T.TABLE_SCHEMA, '/',T.TABLE_NAME)=I.NAME WHERE I.NAME IS NULL  AND T.TABLE_SCHEMA='HWB' AND T.ENGINE='InnoDB'; --独立表空间 SELECT TABLE_SCHEMA     ,TABLE_NAME     ,TABLE_TYPE     ,N'独立表空间' AS TABLE_SPACE     ,ENGINE     ,VERSION     ,TABLE_ROWS     ,AVG_ROW_LENGTH     ,CREATE_TIME     ,UPDATE_TIME FROM INFORMATION_SCHEMA.TABLES  T INNER JOIN INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES I ON  CONCAT(T.TABLE_SCHEMA, '/',T.TABLE_NAME)=I.NAME WHERE T.TABLE_SCHEMA='HWB'  AND T.ENGINE='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 分别表示独立表空间和共享表空间。

--独立表空间 SELECT * FROM  INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE SPACE_TYPE='Single'; SELECT TABLE_SCHEMA     ,TABLE_NAME     ,TABLE_TYPE     ,N'独立表空间' AS TABLE_SPACE     ,ENGINE     ,VERSION     ,TABLE_ROWS     ,AVG_ROW_LENGTH     ,CREATE_TIME     ,UPDATE_TIME FROM INFORMATION_SCHEMA.TABLES  T INNER JOIN INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES I ON  CONCAT(T.TABLE_SCHEMA, '/',T.TABLE_NAME)=I.NAME WHERE T.TABLE_SCHEMA='HWB'  AND T.ENGINE='InnoDB';  --共享表空间 SELECT TABLE_SCHEMA     ,TABLE_NAME     ,TABLE_TYPE     ,N'共享表空间' AS TABLE_SPACE     ,ENGINE     ,VERSION     ,TABLE_ROWS     ,AVG_ROW_LENGTH     ,CREATE_TIME     ,UPDATE_TIME FROM INFORMATION_SCHEMA.TABLES  T LEFT JOIN INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES I ON  CONCAT(T.TABLE_SCHEMA, '/',T.TABLE_NAME)=I.NAME WHERE I.NAME IS NULL  AND T.TABLE_SCHEMA='HWB' AND T.ENGINE='InnoDB';

看完上述内容,你们掌握MySQL中怎么判断InnoDB表是独立表空间还是共享表空间的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

空间 独立 数据 判别 方法 还是 文件 信息 内容 字段 数据库 更多 格式 问题 存储 不同 束手无策 不能自已 为此 不用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 西安纸贵互联网科技有限公司 国智互联网科技 互联网巨头反垄断金融科技 猪兼强互联网科技 以房互联网科技 南京欣网互联网科技 互联网科技美容 中国科技互联网公司收入 互联网时代科技改变生活 互联网对科技的发展 互联网科技与大数据专业 996高科技互联网公司 浙南科技城互联网大厦建设工程 恒生互联网科技业指数调整周期 上海互联网科技公司ppt 信承诺互联网科技有限公司 湖北辰鑫科技互联网 广东猫王互联网科技有限公司电话 互联网科技企业文化 小牛互联网科技有限公司地址 广州紫鲸互联网科技有限公司 互联网中国科技 狮子座互联网科技 移动互联网科技股 明优互联网科技有限公司 工业互联网展湾科技股份有限公司 国大互联网教育科技有限公司薪资 国产互联网科技公司 广西科技产业互联网是什么 互联网科技对化妆品行业
0