GreatSQL社区

搜索

[已解决] 请教个问题 MYSQL8.0以后 DECIMAL 是否需要额外两个字节存储...

818 1 2023-6-5 15:21
请教个问题 MYSQL8.0以后 DECIMAL 是否需要额外两个字节存储符号和小数点?


  1. CREATE TABLE `test_decimal` (
  2.   `TOTAL` decimal(20,6) DEFAULT NULL,
  3.   `MONERY` decimal(10,2) DEFAULT NULL,
  4.   `ID` int NOT NULL AUTO_INCREMENT,
  5.   PRIMARY KEY (`ID`)
  6. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

  7. insert into dba.test_decimal (TOTAL,MONERY) VALUES(99999999999999.88,70000000.09);
  8. insert into dba.test_decimal (TOTAL,MONERY) VALUES(-99999999999999.88,-70000000.09);
  9. SELECT * FROM dba.test_decimal;

  10. # TOTAL                        MONERY              ID
  11. 99999999999999.880000        70000000.09           1
  12. -99999999999999.880000        -70000000.09   2
复制代码
按照官方文档计算
decimal类型的数据存储形式是,将每9位十进制数存储为4个字节,不够9位按下面表计算
  1. Leftover Digits        Number of Bytes
  2. 0                                   0
  3. 1-2                                1
  4. 3-4                                2
  5. 5-6                                3
  6. 7-9                                4
复制代码



字段decimal(20,6),20-6=14,其中小数部分为6 就对应上表中的3个字节,而整数部分为14,14-9=5,就是4个字节再加上表中的3个字节
3+4+3=10个字节

符号和小数点 是不是要额外加2个字节  ?
官方文档没有找到说明
全部回复(1)
yejr 2023-6-6 08:22:23
官档没说就是没有 :)
innerDBA

12

主题

0

博客

61

贡献

注册会员

Rank: 2

积分
92

助人为乐(铜)勤学好问(铜)

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-11-21 21:15 , Processed in 0.019390 second(s), 10 queries , Redis On.
快速回复 返回顶部 返回列表