【问题标题】:Mysql decimal type performance by digits settingMysql十进制类型性能按位数设置
【发布时间】:2021-06-27 02:33:10
【问题描述】:

我阅读了有关 Mysql 十进制类型大小的在线文档:

Leftover Digits Number of Bytes
0 0
1–2 1
3–4 2
5–6 3
7–9 4

所以我们知道数字 7~9 在磁盘中占用相同的大小,但是性能如何呢? 7位与9位相同还是更好?

【问题讨论】:

  • 你为什么认为数字会影响性能?
  • 我认为更少的数字意味着更少的 0&1,意味着更好的性能
  • 仅仅因为优化了存储空间以节省空间,并不意味着可以优化内存中的处理。您在 64 位 CPU 上运行,因此计算在 64 位中完成,然后在存储回数据库时再次截断。
  • @Andreas - 3 种数字类型由不同的硬件/软件处理:DECIMALBIGINT(和 INT 等)、DOUBLE(和 FLOAT)。

标签: mysql decimal


【解决方案1】:

DECIMAL 由一个库实现,该库假定每个字节压缩 2 位数字或每个 32 位整数 9 位数字。 7 个数字不适合 3 个字节; 9 将适合 4 个字节。该库最多允许 64 位(或者可能只有 63 位)数字——这是一个相当大的价值。

DECIMAL(M,N)中,数据是根据M和N来限制的。不​​管是限制在7还是9,性能上应该没有区别。即使是这样,与获取行等更大的问题相比,工作量也很小。

提示:一个简单的经验法则:DECIMAL(M,N) 需要 大约 M/2 个字节。

DECIMAL(11,2) for money 最多允许 10 亿美元/欧元/等 5 个字节。我认为使用 (10,2) 或 (9,2) 没有任何优势,每个也是 5 个字节。

【讨论】:

  • 不会 (9,2) 是 4 个字节吗?
  • @Andreas - 有 2 个 独立 部分,小数点前 7 位,小数点后 2 位。总大小是两个大小的总和,因此 4+1 = 5。
猜你喜欢
  • 2020-07-11
  • 1970-01-01
  • 2014-01-19
  • 2012-12-07
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2016-04-24
  • 1970-01-01
相关资源
最近更新 更多