没有合适的资源?快使用搜索试试~ 我知道了~
达梦数据库的性能优化.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 177 浏览量
2022-11-13
01:21:47
上传
评论
收藏 623KB DOCX 举报
温馨提示
。。。
资源推荐
资源详情
资源评论
达梦数据库的性能优化
“棱镜门”、“微软 XP 系统停摆”的接踵而至给我国信息安全敲响了警钟,也
加速了国内 “去 IOE”运动的进程。达梦数据库作为连续 5 年国产数据库市场
占有率第一的高性能、高可靠性、高安全性、高兼容性大型关系型数据库管理系
统,已成功替代了 Oracle,在电力、金融、电子政务、教育等行业领域得到了
广泛的应用,逐渐成为国家信息化建设的重要基础平台。为了更好地支撑业务应
用,有效管理和利用信息时代不断产生并急剧膨胀的数据,对达梦数据库的优化
显得尤为重要。
一、 数据库参数优化
1. 优化内存
公共内存池
公共内存池提供了一组内存申请/释放接口,为系统中需要动态分配内存的
模块提供服务。
SQL>select * from v$dm_ini where para_name like '%MEM%POOL%';
PARA_NAME
1
2
3
MEMORY_POOL
MEMORY_BAK_POOL 4
N_MEM_POOLS
MEMORY_POOL 决定了以 M 为单位的公共内存池的大小,上例中
4
40M ;
N_MEM_POOLS 决定把内存池划分为几个独立的单元,以减少并发访问的冲突,提
升并发效率;MEMORY_BAK_POOL 表示系统保留的备用内存量,当常规的内存申请
都失败时,从这个备用内存里分配,然后在上层模块中进行必要的容错处理。
可以在 v$sysstat 中查看当前公用内存池的使用情况:
SQL>select * from v$sysstat where name like '%MEM%';
行号
-------- -------- ----------- --------------- --------------------
26 MEMORY USED BYTES 25831296
NAME
1
3
这里的 STAT_VAL 给出的是已经使用的字节数。正常情况下,应该小于配置
的池大小,否则系统不得不从池外向操作系统申请/释放内存,造成效率低下,
并可能把操作系统的内存搞得很零碎。
➢ 系统缓冲区 BUFFER
为了加速数据访问,系统开辟了一个缓冲区,使用 LRU 算法存放经常访问的
数据页,逐步淘汰不用的数据页。
使用下列参数,可配置基本的系统缓冲区的大小:
SQL>select * from v$dm_ini where para_name like '%BUFFER%';
---------- ------------ ----------
1
2
3
4
MAX_BUFFER 8000
BUFFER_POOLS 1
其中 HUGE_BUFFER 是专门用于列存表的缓存区,BUFFER 是用户行存表的系
统缓冲区。BUFFER 表示初始的系统缓冲区大小,单位为 M。通常情况下,如果物
理数据量大于物理内存,则应该把 BUFFER 调到物理内存的三分之二比较合适。
当 BUFFER_POOLS = 1 时,系统支持缓冲区的自动扩展。MAX_BUFFER 表示最
多能扩到多大。在自动扩展后,如果系统的压力在一段时间内比较低,系统又会
自动收缩缓冲区。
系统缓冲区是一个共享资源,受一个 mutex 保护,在一个时间点,只允许一
个线程可以持有这个资源。在高并发情况下,这个限制将极大降低并发效率,因
此,可以配置 BUFFER_POOLS 把一个大的系统缓冲区分割为多个小的部分,每一
个小的部分作为临界资源,这样只要所访问的数据页不在同一个子池里,就不会
发生冲突,从而提升并发性能。注意,如果配置了
BUFFER_POOLS > 1, 则
MAX_BUFFER 参数就失效了,最大可用的缓冲区由 BUFFER 参数决定。
➢ 系统缓冲区 RECYCLE
这是 DM 新引入的缓冲区,专门用于缓冲临时表空间。RECYCLE 的淘汰算法与
BUFFER 完全一样,但是它有独立的 HASH 表, LRU 和更新链。 引入 RECYCLE 的
目的是防止某些复杂查询的中间结果挤占大量的 BUFFER 空间,降低 BUFFER 的命
中率,从而增加额外的 IO 操作。
使用 RECYCLE 的场景主要有:
大表的散列连接,在内存达到 HJ_BUF_SIZE 时使用
排序,大数据量的排序操作,
蓄水池操作符,如:NTTS, SPL, HTAB等,这些操作符需要把数据收集在
一起
临时表数据
MAL 系统中,堆积的邮件
并行查询中,堆积的消息
大字段的临时数据
RECYCLE 的配置可以从 V$DM_INI 查到,单位 M
行号
---------- --------- ----------
RECYCLE 64
1
2. 利用缓存
DM 的缓存机制,可以避免系统重复的 SQL 解析工作,比如对于非常耗时的
SQL 语句解析,极大提升系统性能。SQL 缓存池的大小用 CACHE_POOL_SIZE 来设
置, 缺省为 10M。
如果应用程序对 SQL 语句都是先准备,再绑定参数,然后反复执行,那么就
不需要计划缓存了。在这样理想的模式下,每一种 SQL 语句都使用不同的语句句
柄,并在应用程序启动之后不久就进行了准备,执行时使用相应的语句句柄,并
给定不同的参数。但是这个理想模式要求有良好的应用设计,有限或很少的SQL
语句形式,限制太多。因此 DM 数据库系统提供了计划缓存机制。
计划缓存由 USE_PLN_POOL 参数控制,当 USE_PLN_POOL = 0,禁止计划缓存;
当 USE_PLN_POOL = 1,SQL 语句需要完全匹配,才能使用计划。比如:
Selct * from t1 where id = 1;
Select * from t1 where id = 2;
虽然这两个语句很相似,计划也基本上一样,但是因为常量不同,不能重用
计划。因此使用精确匹配,会造成大量类似重复的计划。精确匹配一般应该使用
剩余10页未读,继续阅读
资源评论
คิดถึง643
- 粉丝: 4032
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 【安卓毕业设计】Android天气小作业源码(完整前后端+mysql+说明文档).zip
- 【安卓毕业设计】群养猪生长状态远程监测源码(完整前后端+mysql+说明文档).zip
- 【安卓毕业设计】奶牛管理新加功能源码(完整前后端+mysql+说明文档).zip
- C#.NET公墓陵园管理系统源码数据库 SQL2008源码类型 WebForm
- 作业这是作业文件这是作业
- 4353_135543959.html
- C#物联订单仓储综合管理系统源码 物联综合管理系统源码数据库 SQL2008源码类型 WebForm
- 2024年最新敏感词库(7万余条)
- java带财务进销存ERP管理系统源码数据库 MySQL源码类型 WebForm
- java制造业MES生产管理系统源码 MES源码数据库 MySQL源码类型 WebForm
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功