gpt4 book ai didi

postgresql - PostgreSQL 中具有高精度和标度的 NUMERIC 类型的性能

转载 作者:行者123 更新时间:2023-11-29 11:30:51 26 4
gpt4 key购买 nike

我将加密货币交易余额存储在 NUMERIC 列中。与传统货币相比,由于加密货币值(value)的变化幅度有些极端,因此我使用 NUMERIC(60,20) 类型来捕获所有用例。由于这感觉有点极端,我很好奇

  • 增加 NUMERIC 列的精度和规模对性能 (CPU) 的影响是什么

  • 增加 NUMERIC 列精度和规模的存储成本惩罚是什么

最佳答案

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 成本相比相形见绌,因此这可能不是问题。您必须在自己的硬件上尝试查询才能确定。

关于postgresql - PostgreSQL 中具有高精度和标度的 NUMERIC 类型的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40686571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com