【问题标题】:MySQL5 - Checking size of each column in a schemaMySQL5 - 检查模式中每列的大小
【发布时间】:2016-07-04 12:44:31
【问题描述】:

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

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

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

【问题讨论】:

    标签: mysql sizeof infoview


    【解决方案1】:

    您可以使用这样的查询。有关于任何表的所有信息。你 必须添加 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]>
    

    【讨论】:

      【解决方案2】:

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

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

      SELECT LENGTH(col) FROM tablename;
      

      这将提供col 的字节长度列表。

      问题是什么?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-29
        • 1970-01-01
        • 2014-06-05
        • 2021-12-20
        • 1970-01-01
        • 2012-05-13
        • 2012-10-03
        • 1970-01-01
        相关资源
        最近更新 更多