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;

 

posted @ 2016-10-13 23:31  tjc123  阅读(237)  评论(0编辑  收藏  举报