mysql - 数据库中特定字段(列)的数据量

标签 mysql database postgresql

是否可以获取有关 mysql 或任何其他数据库中一个字段(列)中的数据量的信息?

最佳答案

整个表的一列的实际磁盘空间要求通常很难确定。这取决于许多因素。

特别是关于 PostgreSQL

  • 其中一个因素是数据对齐。我在 related answer 中写了更多相关内容.

  • 另一个是压缩。超过几十个字节的文本将为 toasted . IE。压缩并存储在单独的 TOAST 表中。

  • 索引增加了总空间需求。

举例回答

为此,我使用了一个名为 location 的包含 21k 个位置的真实表。它有 20 列,但 name 是最大的一列。为了演示表的开销,我另外创建了一个仅包含一列 name 的临时表。 (临时表的开销与普通表的开销基本相同 - 我测试过。)

CREATE TEMP TABLE x AS SELECT name FROM location;

然后我用了一些PostgreSQL的database object size functions创建这个演示:

SELECT pg_size_pretty(pg_table_size('loc'::regclass)) AS tbl_size
      ,pg_size_pretty(pg_relation_size('loc'::regclass)) AS rel_size
      ,(SELECT pg_size_pretty(sum(pg_column_size(loc))) from loc) AS sum_col_size

      ,pg_size_pretty(pg_table_size('x'::regclass)) AS tbl_size
      ,pg_size_pretty(pg_relation_size('x'::regclass)) AS rel_size
      ,(SELECT pg_size_pretty(sum(pg_column_size(loc))) from x) AS sum_col_size

结果:

tbl_size | rel_size | sum_col_size | x_tbl_size | x_rel_size | x_sum_col_size
---------+----------+--------------+------------+------------+---------------
3160 kB  | 3128 kB  | 432 kB       | 1104 kB    | 1096 kB    | 432 kB

但也许我过度解释了这个问题,您只想要基本数据类型的存储大小?这在精美手册的每一章中都有列出 here .

关于mysql - 数据库中特定字段(列)的数据量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8977375/

相关文章:

javascript - mySQL 表的 PHP 循环输出缺少一行

database - 函数式编程和业务领域模型

mysql - 在 MYSQL CONSOLE 中触发

postgresql - 多单元多属性数据库设计

mysql - Select from table1 WHERE table2 包含所有搜索参数

mysql - 为什么我的自定义 SQL 查询(在 Tableau 之外工作正常)在 Tableau 中失败?

javascript - 根据从 MySQL 数据库返回的 JSON 将单选按钮设置为选中

sql - 带有两个函数语句的 PostgreSQL 触发器

postgresql - pcp_attach_node 在 pgpool 中给出 EOFError

php - Cakephp 2.x 中的 Ajax