资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
达梦数据库的性能优化“棱镜门”、“微软XP系统停摆”的接踵而至给我国信息安全敲响了警钟,也 加速了国内“去IOE”运动的进程。达梦数据库作为连续5年国产数据库市场 占有率第一的高性能、高可靠性、高安全性、高兼容性大型关系型数据库管理系 统,已成功替代了 Oracle,在电力、金融、电子政务、教育等行业领域得到了 广泛的应用,逐渐成为国家信息化建设的重要基础平台。为了更好地支撑业务应 用,有效管理和利用信息时代不断产生并急剧膨胀的数据,对达梦数据库的优化 显得尤为重要。一、 数据库参数优化1. 优化内存公共内存池公共内存池提供了一组内存申请/释放接口,为系统中需要动态分配内存的模块提供服务。SQLselect * from v$dm_iniwhere para_name like %MEM%POOL% PARA_VALUE仃号PARA_NAME1MEMORY_POOL402MEMORY_BAK_POOL43N MEM POOLS4MEMORY_POOL 决定了以 M 为单位的公共内存池的大小,上例中 40M;N_MEM_POOLS决定把内存池划分为几个独立的单元,以减少并发访问的冲突,提 升并发效率;MEMORY_BAK_POOL表示系统保留的备用内存量,当常规的内存申请 都失败时,从这个备用内存里分配,然后在上层模块中进行必要的容错处理。可以在v$sysstat中查看当前公用内存池的使用情况:SQLselect*from v$sysstat where name like %MEM%;仃号IDCLASSIDNAMESTAT_VAL1263MEMORY USED BYTES25831296这里的STAT_VAL给出的是已经使用的字节数。正常情况下,应该小于配置 的池大小,否则系统不得不从池外向操作系统申请/释放内存,造成效率低下, 并可能把操作系统的内存搞得很零碎。 系统缓冲区BUFFER为了加速数据访问,系统开辟了一个缓冲区,使用LRU算法存放经常访问的 数据页,逐步淘汰不用的数据页。使用下列参数,可配置基本的系统缓冲区的大小:SQLselect * from v$dm_ini where para_name like %BUFFER%;行号PARA_NAMEPARA_VALUE1HUGE_BUFFER82BUFFER40003MAX_BUFFER80004BUFFER POOLS1其中HUGE_BUFFER是专门用于列存表的缓存区,BUFFER是用户行存表的系 统缓冲区.BUFFER表示初始的系统缓冲区大小,单位为M。通常情况下,如果物 理数据量大于物理内存,则应该把BUFFER调到物理内存的三分之二比较合适。当BUFFER_P00LS = 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查到,单位MSQLselect * from v$dm_ini where para_name = RECYCLE;行号PARA_NAME PARA_VALUE1 RECYCLE 642. 利用缓存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;虽然这两个语句很相似,计划也基本上一样,但是因为常量不同,不能重用 计划。因此使用精确匹配,会造成大量类似重复的计划。精确匹配一般应该使用 在语句非常复杂,查询很耗时的分析型场景。这类场景语句中,常量取值的不同 对计划的影响很大。当USE_PLN_POOL = 2时,使用模糊匹配模式。系统首先试图做精确匹配, 如果没有找到合适的计划,则需要做语法分析,把常量提取出来,把语句转换为 参数的形式,再从计划缓存中查找合适的计划。如果找到,则提取该计划运行, 否则就需要做关系变换和代价分析,并把新生成的计划放入缓存中。模糊匹配适用于大部分OLTP应用,但是系统还是需要做一遍语法分析,需要 把常量分解出来,并重新把语法树反拼成一个字符串,这个过程还把多余空格,注 释去掉,因此,下列两个语句都匹配成同一个计划:Select * from tl where id = 1;Select /* this is a test */ * from tl where id= 2;二、SQL优化1. 定位慢的SQL要分析性能瓶颈,首先得把执行的又慢、又多的SQL语句找出来,DM提供了 SQL 日志的功能,可以将系统中运行的SQL语句、语句绑定的参数、SQL执行时 间记录到SQL 日志文件中,并提供参数来进行过滤,比如只更新select语句、 DELETE语句、update语句、报错的语句等等。1) 修改dm.ini文件SVR_LOG 二 1SVR_LOG_FILE_NUM =2SQL_TRACE_MASK = 1SVR_LOG_SWITCH_COUNT = 1000000#SVR_LOG: 1表示开启SQL 日志功能,0表示关闭#SVR_LOG_FILE_NUM: 1表示不切换,2表示记录两个日志文件,互相切换 #SQL_LOG_MASK :要记录的语句类型掩码,1表示全部记录4:7表示记录update和select语句#SVR_LOG_SWITCH_COUN:每个SQL日志文件中记录的消息条数 #修改完成后需要重启数据库服务2) 执行系统存储过程开启开启SQL日志,记录所有的SQL语句,两个文件互相切换每个文件记录100万行动态修改INI参数,无需重启服务call sp_se t_ para_value(l,SVR_LOG,l);call sp_se t_para_value(l,SVR_L0G_FILE_NUM,2);call sp_se t_ para_value(l,SQL_LOG_MASK,l);call sp_set_para_value(l,SVR_L0G_SWITCH_C0UNT,1000000); 通过上面两种方法,我们成功开启了 SQL日志功能,那么如何从这些日 志文件中找到性能瓶颈呢?给大家提供一个 SQL 日志分析小工具page%3D1)国该工具运行效果图如下:王使月本机默认州?数据源请输入叭指鐵据源请输入1: 请输入IP地址:223.254.1?.106诗输入端口号:5236惰输入用户名:SVSDBA请输入密码:益V瓷“口白C: dmdbns jdbc jaua -jar I)mlog_EM7_u3.2.jai*flflflflflfl mmmmmmMilililitttltttttititttttttttititttttttiHtititititititit 说E耳気些,i青叵用! ttttititttttititititititititititititilililiittttttltlttttttt:Lo g_c o nn it 进彳丁 分析 訓专曙-士 *嘉一靳苣心牛存政在当刖目录下対RESULT.巨录下!4.结果中竺L语勺十璧醸丛醫二严参数,農竟嘗语句后紧跟凯1语句时间:1:2S 嚳輪黑机分析完成后,会在分析程序所在目录生成一个文件夹,保存分析结果:详细的分析结果保存到一个excel文件中A0CA8C0EFSOL辭瞅执行时冃拠联布时间平沟执布艄Lupdate EL_FflEilS5BilLliKKret l7EFrIiIBITB/itEDir10935GS3fi.Q3799.02iflelD fiM 苫LF磁SfiAl出E T 血h L=J ud rZlffll66&7.0K67.Oeen.oF3update飙AKT nSIs art 厂:匚郎1尸011|口=%5MQ1579.0曲鼠0F诣Qupdst. L.FfiELSfllLJWCrrrt rOEBU, CmIl,/D5lI52SLDJM5.02605血letB fin -GL PKAS5MJJF “T 血玛 L=d andJ6S.DJ0call sSPjxl_DnEre_MaiCAlEJWr ;?,?)3DI7-D1302.02L1ELUr :?Lnsri: LEto 驾1服饶观肚:E广 RE:i,?Xrft:-:t:ir/lW哋D爪LGM.0r -3血创导 fiM rGLJi5ALE,*1=l mi T.IFIT叩35Ki 0S3D.0閒肛。” 19updst.tr 3Et rir/LEBir/CEEIir/D2J16-DJOL5.0LVKlOB10dtlett fT& GLJSS&U.8vhtn 1=1 and -f/WITIDI6t9-Difflg.oI6D9.A2. 优
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号