2022年达梦数据库的性能优化 .pdf
《2022年达梦数据库的性能优化 .pdf》由会员分享,可在线阅读,更多相关《2022年达梦数据库的性能优化 .pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、达梦数据库的性能优化“棱镜门”、“微软 XP系统停摆”的接踵而至给我国信息安全敲响了警钟,也加速了国内“去 IOE”运动的进程。达梦数据库作为连续5 年国产数据库市场占有率第一的高性能、高可靠性、高安全性、高兼容性大型关系型数据库管理系统,已成功替代了Oracle,在电力、金融、电子政务、教育等行业领域得到了广泛的应用,逐渐成为国家信息化建设的重要基础平台。为了更好地支撑业务应用,有效管理和利用信息时代不断产生并急剧膨胀的数据,对达梦数据库的优化显得尤为重要。一、数据库参数优化1.优化内存公共内存池公共内存池提供了一组内存申请/释放接口,为系统中需要动态分配内存的模块提供服务。SQLselec
2、t*from v$dm_ini where para_name like%MEM%POOL%;行号 PARA_NAME PARA_VALUE-1 MEMORY_POOL 40 2 MEMORY_BAK_POOL 4 3 N_MEM_POOLS 4 MEMORY_POOL决定了以M 为单位的公共内存池的大小,上例中40M;N_MEM_POOLS决定把内存池划分为几个独立的单元,以减少并发访问的冲突,提升并发效率;MEMORY_BAK_POOL表示系统保留的备用内存量,当常规的内存申请都失败时,从这个备用内存里分配,然后在上层模块中进行必要的容错处理。可以在 v$sysstat中查看当前公用内存池
3、的使用情况:SQLselect*from v$sysstat where name like%MEM%;行号 ID CLASSID NAME STAT_VAL-1 26 3 MEMORY USED BYTES 25831296 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 11 页 -这里的 STAT_VAL 给出的是已经使用的字节数。正常情况下,应该小于配置的池大小,否则系统不得不从池外向操作系统申请/释放内存,造成效率低下,并可能把操作系统的内存搞得很零碎。系统缓冲区 BUFFER 为了加速数据访问,系统开辟了一个缓冲区,使用 LRU算法存放经常访问的数据页,逐步淘汰不用的
4、数据页。使用下列参数,可配置基本的系统缓冲区的大小:SQLselect*from v$dm_ini where para_name like%BUFFER%;行号 PARA_NAME PARA_VALUE-1 HUGE_BUFFER 8 2 BUFFER 4000 3 MAX_BUFFER 8000 4 BUFFER_POOLS 1 其中 HUGE_BUFFER 是专门用于列存表的缓存区,BUFFER 是用户行存表的系统缓冲区。BUFFER 表示初始的系统缓冲区大小,单位为M。通常情况下,如果物理数据量大于物理内存,则应该把BUFFER 调到物理内存的三分之二比较合适。当 BUFFER_POO
5、LS=1时,系统支持缓冲区的自动扩展。MAX_BUFFER表示最多能扩到多大。在自动扩展后,如果系统的压力在一段时间内比较低,系统又会自动收缩缓冲区。系统缓冲区是一个共享资源,受一个 mutex 保护,在一个时间点,只允许一个线程可以持有这个资源。在高并发情况下,这个限制将极大降低并发效率,因此,可以配置 BUFFER_POOLS把一个大的系统缓冲区分割为多个小的部分,每一个小的部分作为临界资源,这样只要所访问的数据页不在同一个子池里,就不会发生冲突,从而提升并发性能。注意,如果配置了BUFFER_POOLS 1,则MAX_BUFFER参数就失效了,最大可用的缓冲区由BUFFER 参数决定。系
6、统缓冲区 RECYCLE 这是 DM 新引入的缓冲区,专门用于缓冲临时表空间。RECYCLE 的淘汰算法与BUFFER 完全一样,但是它有独立的HASH 表,LRU和更新链。引入 RECYCLE 的目的是防止某些复杂查询的中间结果挤占大量的BUFFER 空间,降低 BUFFER 的命中率,从而增加额外的 IO 操作。名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 11 页 -使用 RECYCLE 的场景主要有:大表的散列连接,在内存达到HJ_BUF_SIZE 时使用排序,大数据量的排序操作,蓄水池操作符,如:NTTS,SPL,HTAB等,这些操作符需要把数据收集在一起临时表数据M
7、AL 系统中,堆积的邮件并行查询中,堆积的消息大字段的临时数据RECYCLE 的配置可以从 V$DM_INI查到,单位 M SQLselect*from v$dm_ini where para_name=RECYCLE;行号 PARA_NAME PARA_VALUE-1 RECYCLE 64 2.利用缓存DM的缓存机制,可以避免系统重复的SQL解析工作,比如对于非常耗时的SQL语句解析,极大提升系统性能。SQL缓存池的大小用CACHE_POOL_SIZE来设置,缺省为 10M。如果应用程序对SQL语句都是先准备,再绑定参数,然后反复执行,那么就不需要计划缓存了。在这样理想的模式下,每一种 SQ
8、L语句都使用不同的语句句柄,并在应用程序启动之后不久就进行了准备,执行时使用相应的语句句柄,并给定不同的参数。但是这个理想模式要求有良好的应用设计,有限或很少的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;虽然这两个语句很相似,计划也基本上一样,但是因为常量不同,不能重用计划。因此使用精确匹配,会造成大量类
9、似重复的计划。精确匹配一般应该使用名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 11 页 -在语句非常复杂,查询很耗时的分析型场景。这类场景语句中,常量取值的不同对计划的影响很大。当 USE_PLN_POOL=2 时,使用模糊匹配模式。系统首先试图做精确匹配,如果没有找到合适的计划,则需要做语法分析,把常量提取出来,把语句转换为参数的形式,再从计划缓存中查找合适的计划。如果找到,则提取该计划运行,否则就需要做关系变换和代价分析,并把新生成的计划放入缓存中。模糊匹配适用于大部分OLTP 应用,但是系统还是需要做一遍语法分析,需要把常量分解出来,并重新把语法树反拼成一个字符串,这个
10、过程还把多余空格,注释去掉,因此,下列两个语句都匹配成同一个计划:Select*from t1 where id=1;Select/*this is a test*/*from t1 where id =2;二、SQL优化1.定位慢的 SQL 要分析性能瓶颈,首先得把执行的又慢、又多的 SQL语句找出来,DM提供了SQL日志的功能,可以将系统中运行的SQL语句、语句绑定的参数、SQL执行时间记录到 SQL日志文件中,并提供参数来进行过滤,比如只更新select语句、DELETE 语句、update 语句、报错的语句等等。1)修改 dm.ini文件SVR_LOG =1 SVR_LOG_FILE_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年达梦数据库的性能优化 2022 年达梦 数据库 性能 优化
限制150内