首批通过分布式安全可靠测评,为关键业务系统打造
Decimal 字段的存储空间占用
更新时间:2026-05-18 09:11
本文讲述 Decimal 字段类型对存储空间的占用详情。
包含 MySQL 模式 Decimal、Numeric,Oracle 模式 Number,都采用 ObNumber 实现,其格式为:
NumberDesc digit ... digit
[-- 4 byte --] [-- 4 byte --] [-- 4 byte --]
[---------------- 1-9 digits -----------------]
OceanBase 数据库 Numner 的基数为 10 的 9 次方。每一个 digit 的范围是 [0,10 的九次方)。如 1234567890 表示为 1 * 10 的 9 次方 + 234567890 * 10 的 零次方。也就是说,占据 4(DESC) + digit = 12 字节。
小数和整数部分不会出现在一个 digita 中。
1234567890.0987654321 = 1 * (10^9)^1
+ 234567890 * (10^9)^0
+ 98765432 * (10^9)^-1
+ 1 * (10^9)^-2
4+4+4+4+4 = 20 字节(第一个是 DESC 为 4)
如果是 decimal(10, 2)
12345678.12 比如
= 12345678 * 10^10 + 12 * 10^-1
4 + 4 + 4 = 12 字节
123.45 =
123 * 10^10 + 45 * 10^-1
= 12 字节
适用版本
OceanBase 数据库所有版本。