DM7.0的新特性之达梦批量技术

达梦批量处理技术

数据库系统对性能的关注,一般停留在系统IO管理、查询优化器、并发执行等方面,很少关注执行的迭代模型与表达式计算所消耗的时间。

 

数据库的执行计划通常以树型的数据结构表示,树中的节点被称为操作符,每个操作符完成一个特定的功能。树的叶节点用于进行数据扫描,从物理存储位置抽取记录,然后向上返回给上层节点。上层节点对记录进行加工,继续向上返回,或者再次向下要求新的记录。这就是数据库引擎典型的执行方式。这个过程中,通常不断地在各个操作符间跳来跳去,消耗大量的CPU时间。而表达式计算也是一个影响性能的重要因素,数据库系统通常把表达式翻译成内部中间语言,然后用一个虚拟机来解释执行。执行的过程本来就比较慢,如果处理的记录非常多,则解释执行的次数和CPU时间就非常可观。

达梦数据库针对执行的迭代模型和表达式计算两个方面,重新设计了执行器,对一次一条记录的迭代模型修改为一次一批数据,单条记录的表达式计算修改为数组运算,希望能借助这两个改进,实现性能的提升。这里用TPC-H Q1为例,来检验一下新版达梦执行器的改进效果。

    TPC-H是一个决策支持的基准测试标准,它衡量数据库管理系统对OLAP应用或者说即席复杂查询的处理能力。这类查询通常需要大量的全表扫描,对海量数据进行过滤,分类处理,而且一般不能借助索引定位来加速查询。TPC-H标准中,定义了22个查询语句。其中第一个查询Q1是这样的:

 

select l_returnflag,

l_linestatus,

sum(l_quantity) as sum_qty,

sum(l_extendedprice) as sum_base_price,

sum(l_extendedprice*(1-l_discount)) as sum_disc_price,

sum(l_extendedprice*(1-l_discount)*(1+l_tax)) as sum_charge,

avg(l_quantity) as avg_qty,

avg(l_extendedprice) as avg_price,

avg(l_discount) as avg_disc,

count(*) as count_order

from lineitem

where l_shipdate <= date' 1998-12-01' - interval '90' day

group by l_returnflag, l_linestatus

order by l_returnflag, l_linestatus;

 

为了检验达梦的处理性能,用1G规模的TPC-H数据进行验证。在1G规模下, LINEITEM表有6001215行,其中 (l_shipdate <= date' 1998-12-01' - interval '90' day)只能过滤掉大约不到2%的数据。

 

在装载完数据后,用disql先看一下LINEITEM的定义和记录数:

SQL>select tabledef('SYSDBA', 'LINEITEM');

select tabledef('SYSDBA', 'LINEITEM');

--------------------------------------------------------

CREATE TABLE "SYSDBA"."LINEITEM"

(

"L_ORDERKEY" INT NOT NULL,

"L_PARTKEY" INT,

"L_SUPPKEY" INT,

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值