【发布时间】:2011-12-17 08:04:30
【问题描述】:
MySQL 5.6 manual 中说:
DECIMAL(和 NUMERIC)列的值使用二进制格式表示,该格式将九个十进制(以 10 为基数)数字打包成四个字节。每个值的整数和小数部分的存储分别确定。每个九位数字的倍数需要四个字节,而“leftover”数字需要四个字节的一部分。多余位数所需的存储空间如下表所示:
+----------------------------------+
|Leftover Digits | Number of Bytes |
+----------------------------------+
| 0 | 0 |
+----------------------------------+
| 1 | 1 |
+----------------------------------+
| 2 | 1 |
+----------------------------------+
| 3 | 2 |
+----------------------------------+
| 4 | 2 |
+----------------------------------+
| 5 | 3 |
+----------------------------------+
| 6 | 3 |
+----------------------------------+
| 7 | 4 |
+----------------------------------+
| 8 | 4 |
+----------------------------------+
我的问题是,如果小数点每边的数字都小于 9,它还会用完 4 个字节还是会被视为“leftovers”?
【问题讨论】:
-
从摘录中听起来只有“剩菜”用于我,但是......例如6 位是:0 个 9 位组(0 个字节)+ 1 个 6 位组(3 个字节)。不过,7/8 位的“剩余”仍然需要完整的 4 个字节。我对这个问题的回答——很可能是错误的——是 1 + 1 = 2 个字节。是否有客观的方法来衡量 MySQL 中使用的实际空间?可以肯定地说:)
-
@pst:是的,我认为直接测量是最客观的。我只是想知道为什么手册中没有明确说明它并认为有人可以向我展示正确的解释。
标签: mysql data-storage