栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用十进制数据类型(MySQL / Postgres)是否会对性能造成影响

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用十进制数据类型(MySQL / Postgres)是否会对性能造成影响

Pavel说得很对,我只想解释一下。

假设您的意思是与浮点数或定点偏移整数(即,将千分之一的整数存储为整数)相比对性能有影响:是的,对性能有很大影响。PostgreSQL和MySQL的声音用二进制编码的十进制存储

DECIMAL
/
NUMERIC
。这种格式比将数字存储为文本更紧凑,但是使用起来仍然不是很有效。

如果您没有在数据库中进行许多计算,则影响将限于与整数或浮点数相比,BCD需要更大的存储空间,因此行更宽,扫描速度更慢,索引更大等。b中的比较操作-
tree索引搜索速度也较慢,但这并不重要,除非您由于其他原因已经受到CPU的限制。

如果使用数据库中的

DECIMAL
/
NUMERIC
值进行大量计算,则性能可能会受到影响。至少在PostgreSQL中,这一点尤其明显,因为Pg不能对任何给定查询使用多个CPU。如果您要对数字进行大量除法,乘法,更复杂的数学,聚合等操作,则在使用浮点或整数数据类型时再也找不到CPU的局限了。这在类似OLAP的(分析)工作负载中以及在加载或提取(ETL)期间进行报告或数据转换时尤其明显。

尽管有 一个性能的影响(其变化的基础上,从微不足道的工作量相当大),你通常应该使用

numeric
/
decimal
时,它是最合适的类型,你的任务-即在非常高的范围值必须存储和/或倒圆错误是不可接受的。

有时,使用bigint和定点偏移量是很麻烦的,但这很笨拙且不灵活。取而代之的是使用浮点数很少是正确的答案,因为要为诸如货币之类的东西可靠地使用浮点数存在所有挑战。

(顺便说一句,我很高兴看到一些新的Intel CPU和IBM Power 7系列CPU都对IEEE
754十进制浮点数提供了硬件支持。如果低端CPU可以使用它,那将是数据库的巨大胜利。 )



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/395353.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号