首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >估计(记录的)大小和Postgres中的开销

估计(记录的)大小和Postgres中的开销
EN

Database Administration用户
提问于 2015-06-23 11:27:40
回答 1查看 8.4K关注 0票数 10

考虑Postgres 9.4中的下表:

代码语言:javascript
复制
CREATE TABLE t
(
  a1 bigserial,
  a2 bigint NOT NULL,
  a3 bigint NOT NULL,
  a4 integer, 
  a5 timestamp with time zone NOT NULL,
  a6 timestamp with time zone NOT NULL DEFAULT now(),
  a7 bigint NOT NULL,
  a8 bigint NOT NULL,
  a9 real,
  a10 integer,

  CONSTRAINT kkkey PRIMARY KEY (a1)
)

节省这张表的估计费用是多少?

A创纪录的费用:

代码语言:javascript
复制
size(bigserial) 
+ size(bigint) 
+ size(bigint) 
+ size(integer) 
+ size(timestamp) 
+ size(timestamp) 
+ size(bigint) 
+ size(bigint) 
+ size(real) 
+ size(integer)
= 8 + 8 + 8 + 4 + 8 + 8 + 8 + 8 + 4 + 4 = 68 bytes

Postgres的数据库页面布局给出了相当详细的信息,记录是如何在二级存储中登陆的,但我不知道如何将所有的数字组合在一起。

Linux报告

代码语言:javascript
复制
blockdev --getbsz /dev/sda1
1024

问题:

(1)是否有任何辅助功能来评估每排的储存成本(因此无须手工计算)

(2)如何把这些数字组合起来,即估计每一行的间接费用?

(3)如何估算主要关键指标的成本?

EN

回答 1

Database Administration用户

发布于 2015-06-23 11:40:08

给出列、表和索引大小的函数记录在手册:http://www.postgresql.org/docs/9.4/static/functions-admin.html中。

没有计算整个记录大小的函数(而有一个函数来了解单个数据值(pg_column_size)的存储成本),因为记录一般都是可变长度的(有时是压缩的),所以我认为有两种可能,要么执行目录查询来总结表中所有列的大小,要么简单地得到一个填充表的大小,然后除以记录的数量,这样就有了记录的平均大小。

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

https://dba.stackexchange.com/questions/104861

复制
相关文章

相似问题

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