【问题标题】:Calculating total data size of BLOB column in a table计算表中 BLOB 列的总数据大小
【发布时间】:2012-05-25 19:15:34
【问题描述】:

我有一个表,其中有一列中有大量 BLOB 数据。我正在编写一个实用程序来将数据转储到文件系统。但是在转储之前,我需要检查磁盘上是否有必要的空间来导出整个表中的所有 blob 字段。

请建议一种有效的方法来获取表中所有 blob 字段的大小。

【问题讨论】:

    标签: mysql blob


    【解决方案1】:

    您可以使用 MySQL 函数OCTET_LENGTH(your_column_name)。详情请见here

    【讨论】:

    • OCTET_LENGTH() 是 LENGTH() 的同义词
    【解决方案2】:
    select sum(length(blob_column)) as total_size 
    from your_table
    

    【讨论】:

    • 感谢您的回复。上述查询所指示的大小小于磁盘上转储文件的总大小。知道可能是什么原因吗?
    • @jatinpreet:我猜这是因为文件系统中的文件集群。例如,根据您的文件系统,文件将保存在 4KB 的块中。这可能会解决问题。但这只是猜测。
    【解决方案3】:
    select sum(length(blob_column_name)) from desired_tablename;
    

    【讨论】:

      【解决方案4】:

      遗憾的是,这充其量是特定于数据库的。

      要在 Oracle 中获取包含 blob 的表的总大小,我使用以下命令: https://blog.voina.org/?p=374

      遗憾的是,这在 DB2 中不起作用,我仍然需要寻找替代方案。

      简单的

      select sum(length(blob_column)) as total_size 
      from your_table
      

      不是一个正确的查询,因为它不会根据对存储在 blob 列中的 blob 的引用正确估计 blob 大小。您必须从 blob 存储库中获取 blob 在磁盘上的实际分配大小。

      【讨论】:

        猜你喜欢
        • 2016-09-06
        • 1970-01-01
        • 2014-05-17
        • 1970-01-01
        • 2011-09-07
        • 1970-01-01
        • 1970-01-01
        • 2011-08-19
        • 1970-01-01
        相关资源
        最近更新 更多