【发布时间】:2016-07-04 12:44:31
【问题描述】:
我的环境中有 2 个 MySQL 数据库。一个只有 40Mb,另一个是 20Gb。它们属于称为 infoview 的业务对象应用程序。 40Mb 是正确的大小,是工作的 infoview 应用程序。
我想从表 cms_infoobjects6 中准确找出哪些数据占用了所有空间。
我正在与我的数据库人员交谈,但我似乎没有取得任何进展,他说他可以看到一个 longblob 专栏,但没有关于此的真实信息。
【问题讨论】:
我的环境中有 2 个 MySQL 数据库。一个只有 40Mb,另一个是 20Gb。它们属于称为 infoview 的业务对象应用程序。 40Mb 是正确的大小,是工作的 infoview 应用程序。
我想从表 cms_infoobjects6 中准确找出哪些数据占用了所有空间。
我正在与我的数据库人员交谈,但我似乎没有取得任何进展,他说他可以看到一个 longblob 专栏,但没有关于此的真实信息。
【问题讨论】:
您可以使用这样的查询。有关于任何表的所有信息。你 必须添加 INDEX_LENGTH + DATA_LENGTH 才能获得孔表大小。
SELECT * FROM information_schema.tables
WHERE
table_schema='yourSchema'
AND
TABLE_NAME='job';
样本
MariaDB [yourschema]> SELECT * FROM information_schema.tables
-> WHERE
-> table_schema='yourSchema'
-> AND
-> TABLE_NAME='job'\G
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: yourschema
TABLE_NAME: job
TABLE_TYPE: BASE TABLE
ENGINE: InnoDB
VERSION: 10
ROW_FORMAT: Compact
TABLE_ROWS: 7
AVG_ROW_LENGTH: 2340
DATA_LENGTH: 16384
MAX_DATA_LENGTH: 0
INDEX_LENGTH: 0
DATA_FREE: 0
AUTO_INCREMENT: NULL
CREATE_TIME: 2016-06-28 11:46:14
UPDATE_TIME: NULL
CHECK_TIME: NULL
TABLE_COLLATION: utf8_general_ci
CHECKSUM: NULL
CREATE_OPTIONS:
TABLE_COMMENT:
1 row in set (0.08 sec)
MariaDB [yourschema]>
【讨论】:
使用SHOW CREATE TABLE tablename 显示给定表的架构。那可能会说LONGBLOB——这意味着一个列最多可以容纳4GB的数据。可能会说VARCHAR(100),该列最多可容纳100 个字符。
要找到这些列的实际大小,您需要类似
SELECT LENGTH(col) FROM tablename;
这将提供col 的字节长度列表。
问题是什么?
【讨论】: