首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >高精度、高比例尺数值型在PostgreSQL中的性能

高精度、高比例尺数值型在PostgreSQL中的性能
EN

Stack Overflow用户
提问于 2016-11-18 21:57:26
回答 1查看 2.7K关注 0票数 10

我将在NUMERIC列中存储加密货币事务余额。由于与传统货币相比,加密货币的值在某种程度上变化很大,所以我使用NUMERIC(60,20)类型来捕获所有用例。因为这感觉有点极端,我很好奇。

  • 提高数值列精度和比例尺的性能(CPU)惩罚是什么?
  • 提高数值列精度和比例尺的存储成本惩罚是多少?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-19 12:18:47

NUMERIC列声明的刻度和精度是对插入值的约束,但它们并不直接影响存储需求;1::NUMERIC(1,0)1::NUMERIC(99,98)1::NUMERIC都有相同的底层表示形式。考虑到这一点,您的最佳选择可能是使用一个无约束的NUMERIC列,并在按货币计算的基础上将您的值转换为合适的比例尺/精度。

NUMERIC值存储为基-10,000位数字的可变长度数组,每个数组由16位整数表示,因此存储成本为每4位小数2字节,加上每个值的6字节头。小数部分和整数部分分别存储,因此11消耗8个字节,而1.1需要10个字节。您可以使用例如SELECT pg_column_size(1.1::NUMERIC)来检查给定值的存储要求。

至于CPU开销,我预计大多数操作的成本与数字数成线性关系。然而,与获取值的I/O成本相比,这通常是相形见绌的,因此很可能不是一个问题。您必须在自己的硬件上尝试查询才能确定。

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

https://stackoverflow.com/questions/40686571

复制
相关文章

相似问题

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