达梦数据库优化原理

数据库类型:不同类型底层架构在对应领域优于别的类型
1、传统关系型  关系代数
2、图数据库  存关系
3、键值数据库   
4、多维数据库  mdd
5、时序数据库 


实例优化(架构和参数)
共享内存区的作用
Memory_target 总共享内存的大小 0 (不限制)
Memory_pool 公共池(减少 system call)
Buffer 数据缓冲区 (40%—60%
cache_pool_size SQL 缓冲区 (执行计划,自己 使用的 SQL,查询结果集)
dict_buf_size 字典缓冲区 最近使用的数据字典
sort_buf_size 排序区
rlog_buf_size 重做日志缓冲区 (改变的)
hj_buf_size 哈希区
keep 保留池 (达梦 tablespace , oracle table)
recycle 回收池

查看后台线程
select * from v$threads;
监听线程、IO线程、日志刷新、日志重做、日志归档、工作线程、调度线程、检查点线程checkpoint

达梦内存的划分
池 memory_pool
缓冲区 (buffer,字典,SQL,redolog)
排序
哈希
查询优化

 SQL优化
 看懂SQL执行计划
查看执行计划
explain select * from v$threads;

 达梦的优化器是 CBO(基于代价的优化器)

优化器查询重写
常量表达式化简:
常量表达式即用户输入SQL语句中包含运算结果为常量的表达式,分为算数表达式、逻辑运算表达式、函数表达式。查询重写可以对常量表达式预先计算以提升效率。例如“SELECT * FROM table WHERE a=1+1; ”语句被重写为“SELECT * FROM table WHERE a=2”语句。
子查询提升:
由于子查询表示的结构更清晰,符合人的阅读理解习惯,用户输入的SQL语句往往包含了大量的子查询,但是相关子查询往往需要使用嵌套循环的方法来实现,执行效率较低,因此将子查询优化为“Semi Join”的形式可以在优化规划时选择其它的执行方法,或能提高执行效率。例如“SELECT * FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); ”语句可重写为“SELECT * FROM t1 LEFT SEMI JOIN t2 ON t1.a=t2.a”语句。
谓词下推:
谓词(Predicate),通常为SQL语句中的条件,例如“SELECT * FROM t1 WHERE t1.a=1; ”语句中的“t1.a=1”即为谓词。等价类(Equivalent-Class)是指等价的属性、实体等对象的集合,例如“WHERE t1.a=t2.a”语句中,t1.a和t2.a互相等价,组成一个等价类{t1.a,t2.a}。利用等价类推理(又称作传递闭包),我们可以生成新的谓词条件,从而达到减小数据量和最大化利用索引的目的。如图2所示,我们举一个形象的例子来说明谓词下推的威力。假设有两个表t1、t2;它们分别包含[1,2,3,…100]共100行数据,那么查询语句“SELECT * FROM t1 JOIN t2 ON t1.a=t2.a WHERE t1.a=1”的逻辑计划在经过查询重写前后的对比。

代价计算:
cpu+io,对比内存,磁盘
best_access_path单表范围代价计算:
1、全表的代价
2、如果有覆盖索引则计算覆盖索引的代价
3、mysql内部使用quick range结构,则利用一些校验值计算上一步产生的range代价


哈希不支持范围查找
聚簇索引叶子节点存了表数据不用回表,比非聚簇快。

操作符代表的意义
CSCN2 全表扫描
SSCN 二级索引扫描
SSEK2 索引定位
DSCN 动态视图扫描
BLKUP2 定位查找数据
PRJT2 投影
NSET2 结果集
执行顺序
explain select * from dmhr.employee,dmhr.department;

 顺序:4—5—1—2—3
 从最上开始向下找第一个没有分支的节点执行,如果有节点并列,从上到下执行。


达梦快速返回数据行数
select para_name,para_value from v$dm_ini where para_name=‘FIRST_ROWS’;
默认是100行


 多表连接查询优化
嵌套、哈希、归并
并行查询(多个cpu才可以开启)
参考DM8系统管理员手册

10.3 性能监视工具
打开性能监视工具
cd /dm8/dmdbms/tool
./monitor

10.4 AWR报告
SP_INIT_AWR_SYS(1); 生成一个辅助系统表空间,用来存放快照。 SYSAUX
SQL> CALL DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL (30); 设置时间间隔(达梦没有 baseline)
DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT (); 手动生成快照
SYS.AWR_REPORT_HTML(1,2,’/home/dmdba’,‘AWR1.HTML’); 生成报告
 达梦没有 ADDM,ASH 这样的报告。

自适应执行计划
开启达梦自适应执行计划 (机器学习)
OPTIMIZER_MODE = 1
ADAPTIVE_NPLN_FLAG = 1
1. AI4DB
包括参数智能调优与诊断、慢SQL发现、索引推荐、时序预测、异常检测等,能够为用户提供更便捷的运维操作和性能提升,实现自调优、自监控、自诊断等功能。

2. DB4AI

兼容MADlib生态,支持70+算法,性能相比MADlib on PostgreSQL 具有数倍提升。新增XGBoost、prophet、GBDT等高级且常用的算法套件,补充MADlib生态的不足。统一SQL到机器学习的技术栈,实现从数据管理到模型训练的SQL语句“一键驱动”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值