Mysql之INFORMATION_SCHEMA解析1
INFORMATION_SCHEMA库是Mysql提供的一个系统库,保存了数据库的原数据,方便用户监控与管理Msyql。
现在单说与INNODB相关的库:INNODB_SYS_TABLES,INNODB_SYS_COLUMNS,INNODB_SYS_INDEXS,INNODB_SYS_TABLESPACES,
INNODB_SYS_FIELDS,INNODB_SYS_DATAFILES,INNODB_SYS_TABLESTATS,INNODB_SYS_FOREIGN,INNODB_SYS_FOREIGN_COLS.
其中主要表之间的关系可用下图说明:
这7张表通过 Table_ID,INDEX_ID,SPACE彼此关联起来,以实现对数据的检索与监控。
如 利用上述关系,查询表索引占空间大小:
SELECT a.NAME, a.FILE_FORMAT, a.ROW_FORMAT, @page_size := IF(a.ROW_FORMAT='Compressed', b.ZIP_PAGE_SIZE, b.PAGE_SIZE) AS page_size, ROUND((@page_size * c.CLUST_INDEX_SIZE) /(1024*1024)) AS pk_mb, ROUND((@page_size * c.OTHER_INDEX_SIZE) /(1024*1024)) AS secidx_mb FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES a INNER JOIN INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES b on a.NAME = b.NAME INNER JOIN INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS c on b.NAME = c.NAME WHERE a.NAME LIKE 'employees/%' ORDER BY a.NAME DESC;