mysql 有十进制类型吗_使用十进制数据类型(MySQL / Postgres)是否存在性能问题

帕维尔说得对,我只想解释一下.

假设您的意思是与浮点或固定点偏移量整数相比较的性能影响(即,将百分之一百分之一作为整数存储):是的,性能影响非常大. PostgreSQL,并通过MySQL的声音存储DECIMAL / NUMERIC二进制编码十进制.这种格式比将数字存储为文本更紧凑,但它仍然不是非常有效的工作.

如果您在数据库中没有做很多计算,则影响仅限于BCD与整数或浮点相比所需的更大的存储空间,因此更宽的行和较慢的扫描,更大的索引等.b中的比较操作 – 索引索引搜索速度也较慢,但不够重要,除非您因其他原因而被CPU限制.

如果您使用数据库中的DECIMAL / NUMERIC值进行大量计算,则性能真的会受到影响.这一点尤其明显,至少在PostgreSQL中,因为Pg不能为任何给定的查询使用多个CPU.如果你正在做一大批分工在数字上乘法,更复杂的数学,聚合等,您可以在使用浮点数或整型数据类型的情况下开始找到自己的CPU限制.这在OLAP类(分析)工作负载以及加载或提取(ETL)期间的报告或数据转换中尤其明显.

尽管存在性能影响(根据工作负载从可忽略到不大)的事实,但是当您的任务是最合适的类型时,通常应使用数字/十进制 – 即,当非常高的范围值必须存储和/或舍入误差是不可接受的.

偶尔,使用bigint和定点偏移值得的麻烦是件麻烦的事情,但这是笨拙和不灵活的.使用浮点代替很少是正确的答案,因为所有的问题都可以像货币这样的浮点值可靠地工作.

(BTW,我非常兴奋的是,一些新的英特尔CPU和IBM的Power 7系列CPU都包含对IEEE 754十进制浮点数的硬件支持,如果这在下一代CPU中可用,数据库将是一个巨大的胜利.)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值