改善列压缩
如果发现性能较慢,或者 FLOAT 数据占用了大量存储空间,请评估数据和业务需要,确认数据能否放入精度在 18 位及以下的 NUMERIC 列中。将 FLOAT 列转换为 NUMERIC 列可以提升数据压缩率,降低数据库的磁盘大小,并提升该列的查询性能。
定义 NUMERIC 数据类型时,您要指定精度和小数位数;NUMERIC 数据是数据的精确表示。FLOAT 数据类型代表了可变精度和近似值;它们在数据库中占用的空间更多。
在以下情况下,将 FLOAT 列转换为 NUMERIC 列最有效:
-
NUMERIC 精度为 18 位及以下。NUMERIC 数据的性能针对最常见的 18 位精度进行了优化。仅当需要 18 位及以下精度时,Vertica 才会建议将 FLOAT 列转换为 NUMERIC 列。
-
FLOAT 精度会受到限制,并且值将全部限定在 NUMERIC 列的指定精度范围内。一个示例是货币值,例如产品价格或财务交易金额。例如,定义为 NUMERIC(11,2) 的列可以包括从 0 到几百万美元的价格,可以存储分币,而且压缩效率也比 FLOAT 列更高。
如果您尝试将值加载到超过指定精度的 NUMERIC 列,Vertica 会返回错误,并且不会加载数据。如果您分配的值的小数位数大于指定小数位数,那么该值会进行四舍五入以匹配指定的小数位数,然后再存储到该列中。