欢迎光临
我们一直在努力

码语decimal(decimal数据类型的优点)

  Deepgreen DB 全称 Vitesse Deepgreen DB,它是一个可扩展的大规模并行(通常称为MPP)数据仓库解决方案,起源于开源数据仓库项目Greenplum DB(通常称为GP或GPDB)。所以已经熟悉了GP的朋友,可以无缝切换到Deepgreen。

  它几乎拥有GP的所有功能,在保有GP所有优势的基础上,Deepgreen对原查询处理引擎进行了优化,新一代查询处理引擎扩展了:

  优越的连接和聚合算法

  新的溢出处理子系统

  基于JIT的查询优化、矢量扫描和数据路径优化

  下面简单介绍一下Deepgreen的主要特性(主要与Greenplum对比):

  1. 100% GPDB

  Deepgreen与Greenplum几乎100%一致,这里说几乎,是因为Deepgreen也剔除了一些Greenplum上的鸡肋功能,例如MapReduce支持,可以说保有的都是精华。从SQL语法、存储过程语法,到数据存储格式,再到像gpstart/gpfdist等组件,Deepgreen为想要从Greenplum迁移过来的用户将迁移影响降到最低。尤其是在下面这些方面:

  除了以quicklz方式压缩的数据需要修改外,其他数据无需重新装载

  DML和DDL语句没有任何改变

  UDF(用户定义函数)语法没有任何改变

  存储过程语法没有任何改变

  JDBC/ODBC等连接和授权协议没有任何改变

  运行脚本没有任何改变(例如备份脚本)

  那么Deepgreen和Greenplum的不同之处在哪呢?总结成一个词就是:快!快!快!(重要的事情说三遍)。因为大部分的OLAP工作都与CPU的性能有关,所以针对CPU优化后的Deepgreen在性能测试中,可以达到比原Greenplum块3~5倍的性能。

  2.更快的Decimal类型

  Deepgreen提供了两个更精确的Decimal类型:Decimal64和Decimal128,它们比Greenplum原有的Decimal类型(Numeric)更有效。因为它们更精确,相比于fload/double类型,更适合用在银行等对数据准确性要求高的业务场景。

  安装:

  这两个数据类型需要在数据库初始化以后,通过命令加载到需要的数据库中:

  dgadmin@flash:~$ source deepgreendb/greenplum_path.sh

  测试一把:

  使用语句:select**g(x), sum(2*x) from table

  数据量:100万

  结果列表:

  45ms**#8211; 64位float

  136ms**#8211; decimal64

  通过上面的测试,decimal64(136ms)类型比deepgreen numeric(154ms)类型快,比greenplum numeric快两倍,生产环境中快5倍以上。

  3.支持JSON

  Deepgreen支持JSON类型,但是并不完全支持。不支持的函数有:json_each,json_each_text,json_extract_path,json_extract_path_text, json_object_keys, json_populate_record, json_populate_recordset, json_array_elements, and json_agg.

  安装:

  执行下面命令扩展json支持:

  dgadmin@flash:~$ psql postgres -f $GPHOME/share/postgresql/contrib/json.sql

  测试一把:

  dgadmin@flash:~$ psql postgres

  psql (8.2.15)

  4.高效压缩算法

  Deepgreen延续了Greenplum的zlib压缩算法用于存储压缩。除此之外,Deepgreen还提供两种对数据库负载更优的压缩格式:zstd和lz4.

  如果客户在列存或者只追加堆表存储时要求更优的压缩比,请选择zstd压缩算法。相比于zlib,zstd有更好的压缩比,并且能更有效利用CPU。

  如果客户有大量读取需求,那么可以选择lz4压缩算法,因为它有着惊人的解压速度。虽然在压缩比上lz4并没有zlib和zstd那么出众,但是为了满足高读取负载作出一些牺牲还是值得的。

  有关于这两种压缩算法的具体内容,详见其主页:

  zstd主页

  http://facebook.github.io/zstd/

  lz4主页**://lz4.github.io/lz4/

  测试一把:

码语decimal(decimal数据类型的优点)

  这里只针对 不压缩/zlib/zstd/lz4四种,进行简单的测试,我的机器性能并不高,所有结果仅供参考:

  postgres=# create temp table ttnone (

  postgres(# i int,

  5.数据采样

  从Deepgreen 16.16版本开始,内建支持通过SQL进行数据真实采样,您可以通过定义行数或者定义采样比两种方式进行采样:

  SELECT {select-clauses} LIMIT SAMPLE {n} ROWS;

  SELECT {select-clauses} LIMIT SAMPLE {n} PERCENT;

  测试一把:

  postgres=# select count(*) from ttlz4;

  count

  6.TPC-H性能

  Deepgreen与Greenplum的性能对比,请参考我另外两个帖子:

  《Deepgreen与Greenplum TPC-H性能测试对比(使用德哥脚本)》

  《Deepgreen与Greenplum TPC-H性能测试对比(使用VitesseData脚本)》

  (以上两个链接,可在这里看到:

  https://yq.aliyun.com/articles/104275)

  另外Deepgreen自身搭载的高性能组件Xdrive,在后期会另行分享~

  End~

赞(0)
未经允许不得转载:掌上百科 » 码语decimal(decimal数据类型的优点)

评论 抢沙发