首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解PostgreSQL磁盘的使用

理解PostgreSQL磁盘的使用
EN

Server Fault用户
提问于 2014-03-26 19:46:35
回答 1查看 3.8K关注 0票数 6

我使用的是9.1,在数据库中有一个名为dpi的表,其中的UTF-8编码目前位于18,628行。其中有一个名为TEXTfoto列,它包含表示唯一图像文件的B64字符串。

我想弄清楚一行占用多少磁盘空间。对于NULL,有18050行具有非foto值,而对于所有行,length()都是87384。

我不明白的是这个。运行select * from pgstattuple('dpi');返回:

代码语言:javascript
复制
-[ RECORD 1 ]------+--------
table_len          | 5890048
tuple_count        | 18628
tuple_len          | 5656063
tuple_percent      | 96.03
dead_tuple_count   | 0
dead_tuple_len     | 0
dead_tuple_percent | 0
free_space         | 92752
free_percent       | 1.57

正在运行

代码语言:javascript
复制
select pg_size_pretty(pg_relation_size(c.oid)) AS "size"
from pg_class c
where relname = 'dpi';

我得到以下信息:

代码语言:javascript
复制
  size
---------
 5752 kB
(1 row)

这到底是怎么回事?这张桌子怎么这么小?

编辑:此外,我检查了/var/lib/postgresql/9.1/main,它的大小为574.5MiB。跑步:

代码语言:javascript
复制
SELECT nspname || '.' || relname AS "relation",
    pg_size_pretty(pg_relation_size(C.oid)) AS "size"
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE nspname NOT IN ('pg_catalog', 'information_schema')
ORDER BY pg_relation_size(C.oid) DESC
LIMIT 3;

产量:

代码语言:javascript
复制
           relation            |  size
-------------------------------+---------
 pg_toast.pg_toast_17048       | 501 MB
 public.dpi                    | 5752 kB
 pg_toast.pg_toast_17048_index | 5752 kB
(3 rows)

编辑2:使用select pg_total_relation_size('dpi');获取539262976字节。这是否意味着我可以除以18628,这将给我一个平均的每行大小(28 KiB)?每一行的大小会随着时间的推移而变化(因为索引或类似的原因)吗?

即使如此,每行28 KiB似乎非常小。仅一个foto值就应该是85 KiB (假设只有1字节字符)。

答案是,默认情况下,PostgreSQL吐司机制不仅会分解非常大的列,这取决于它实际上试图首先压缩它们的数据类型。相当整洁。

来源:http://www.postgresql.org/docs/9.1/static/storage-toast.html

EN

回答 1

Server Fault用户

回答已采纳

发布于 2014-03-26 20:07:09

Postgresql没有"blobs类型“。它会自动将“大列”(大于1页,8k )分割成“敬酒”表。

在这里找关于postgres上磁盘使用的信息

对于postgresql管理功能,您将了解到您感兴趣的函数是:pg_table_sizepg_total_relation_size

两者都考虑到吐司空间。第一个不计算索引空间,第二个不计算索引空间。

票数 6
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/584753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档