0

我的环境中有 2 个 MySQL 数据库。一个只有 40Mb,另一个是 20Gb。它们属于称为 infoview 的业务对象应用程序。40Mb 是正确的大小,是工作的 infoview 应用程序。

我想从表 cms_infoobjects6 中准确找出哪些数据占用了所有空间。

我正在与我的数据库人员交谈,但我似乎没有得到任何结果,他说他可以看到一个 longblob 专栏,但没有关于此的真实信息。

4

2 回答 2

0

用于SHOW CREATE TABLE tablename显示给定表的架构。这可能会说LONGBLOB- 这意味着允许最多容纳 4GB 数据的列。它可能会说VARCHAR(100),一列最多可容纳 100 个字符。

要找到这些列的实际大小,您需要类似

SELECT LENGTH(col) FROM tablename;

这将为col.

问题是什么?

于 2016-07-09T18:50:08.300 回答
0

您可以使用这样的查询。有关于任何表的所有信息。您必须添加 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]>
于 2016-07-04T15:54:28.267 回答