是否可以获取有关 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/