这里假定我们已经安装好了一个数据库。注意,这里说的安装好了数据库是说dm.ini相关的硬件资源参数,已经按需调整好了。厂商有一个自动化调整的脚本,参考:参数调整脚本
我们在导入完数据后,离上线之间,我们到底还需要完成什么事情呢?有下面三件事情,必须做到位,否则一定一定不能上线!
一、更新统计信息
任何系统,上线前,必须按照正确的方法收集过一次统计信息。
任何系统,导入数据完成后,必须收集统计信息。
二、建立好索引
建立索引的方法,达梦没有特殊性;是常规其他任何数据库的优化理念,关系型数据库需要如何建立索引,那么达梦就如此建立。
大家可以多查阅和学习一些资料,这里有个印象一定要印在脑海里:
三、设置好个别的参数
达梦每一行代码都是自己写的,它的优化器更是如此,走过了很多的案例,踩过了很多的坑,它的参数纷繁复杂。也许没有任何一个人,可以完全彻底的弄懂所有的参数 —— 太多了。但是,绝大部分场景,我们可能只需要知道几个参数就可以了,这是我们绝大部分人可以轻易做到的。
而且下面这些参数,不建议全局更改,可以通过HINT方式,对个别SQL进行调整。(而且这种HINT可以注入的在后台,不需要修改应用代码哟,而且DBA可以随时取消)
1. 参数名字:OPTIMIZER_OR_NBEXP
默认值:0
属性:动态会话级
OR 表达式的优化方式。
0:不优化;
1:生成 UNION_FOR_OR 操作符时,优化为无 KEY 比较方式;
2:OR 表达式优先考虑整体处理方式;
4:相关子查询的 OR 表达也优考虑整体处理方式;
8:OR 布尔表达式的范围合并优化;
16:同一列上同时存在常量范围过滤和 IS NULL 过滤时的优化,如 C1 > 5 OR C1 IS NULL。
支持使用上述有效值的组合值,如 7 表示同时进行 1、2、4 的优化
在个别SQL中,我们可能调整为2,效果更好。
2. 参数名字:COMPLEX_VIEW_MERGING
默认值:0
属性:动态会话级
对于复杂视图(一般含有GROUP或者集函数等)会执行合并操作,
使得 GROUP 分组操作在连接之后才执行。
0:不启用;
1: 对不包含别名和同名列的视图进行合并;
2: 视图定义包含别名或同名列时也进行合并
在个别SQL中,我们可能调整为2,效果更好。
3. 参数名字:FILTER_PUSH_DOWN
默认值:0
属性:动态会话级
对单表条件是否下放的不同处理方式。
0: 表示条件不下放;
1: 表示在新优化器下, 对单表过滤条件进行下放处理;
2:表示在新优化器下对外连接、半连接进行下放条件优化处理;
4: 语义分析阶段考虑单表过滤条件的选择率, 超过0.5 则不下放,由后面进行代价计算选择是否下放, 参数值 4 仅在参数取值包含 2 时有效,即将参数值设为 6 时有效;
8: 表示尝试将包含非相关子查询的布尔表达式进行下放。
支持使用上述有效值的组合值, 如 6 表示同时进行 2 和 4 的优化
在个别SQL中,我们可能调整为1,效果更好。
说明:所有的参数,我们一般使用默认值;如果确实需要更改,轻易HINT的方式,或者INJECT的方式进行更改,千万不要轻易进行全局调整!
文章
阅读量
获赞