本帖最后由 mcyeah 于 2013-8-6 19:00 编辑
1、DB2数据库性能调优常常调试的几个点是什么? 这个工作常常是物理相关的,需要考虑到数据库所依赖的环境:CPU,内存,I/O性能,网络,操作系统等来进行配置。这里列举几点: 操作系统配置:CPU资源操作系统可配置给数据库系统预留内核资源、栈大小、文件描述符数量等不同资源的限制、多程序运行环境需要添加或调优交换空间、调整临时目录、内存资源页面置换算法针对数据库系统的优化。
影响I/O性能的参数:页大小(page size)、预读大小(prefetch size)、排序堆(sortheap)和排序堆阈值(sheapthres)等参数的配置,同时还有I/O负载均衡技术相关的参数:条带技术,物理存储设置在多个磁盘上。 提升网络性能,通常磁盘I/O速度都大于网络传输速度。 内存资源:表空间合理配置与阻值、各种缓存区的设置。 合适的日志策略。 检查点配置。 更新系统信息的调优。 统计信息维护改进。 使用索引和索引自链接。 备份策略设置。 锁配置优化。 SQL优化器、访问计划配置和使用。 合理的数据分区。 2、如何编写高性能SQL语句?
这个要考虑具体DBMS是如何来执行SQL命令的,各个数据库都会有一套提高性能的机制,这里涉及到对这个机制的充分利用和一些普遍的SQL使用原则。具体的知道原则有: 纵向、横向分割表,减少表的尺寸; 根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量; 用OR的字句可以分解成多个查询,并且通过UNION链接多个查询; 一般在GROUP BY和HAVING子句之前就能剔除多余的行,所以尽量不要用它们来做剔除行的工作,也就是说尽可能在WHERE中过滤数据; 要在一句话里再三地使用相同的函数,浪费资源,将结果放在变量里再调用更快; 在IN后面值的列表中,将出现最频繁的值放在最前面,出现最少的放在最后面,减少判断的次数; 注意使用DISTINCT,在没有必要时不要用,它同UNION一样会使查询变慢; 用一条语句可实现的功能不用多条语句; 使用SQL一次处理一个集合语义; 改进游标性能; 无副作用的情况下使用SQL函数; 使用用于临时数据的临时表; 保持优化器处于被通知状态; 数据存储时可以考虑适当的数据冗余,以减少数据库表之间的链接操作,提高查询效率; 等等等等 有很多,要具体情况具体分析。 3、试读图书章节后谈谈您的感想? 说实话,这本书提供的根本就没有试读章节,只能通过介绍、前言、和目录中来了解一些信息。虽然书名说是针对z/OS的,但是在前言中作者讲其实书中大部分的性能调优技巧都是比较普遍的,到时候可以在具体的应用场景中根据书中所阐述技巧的思想来加以运用。所以我觉得这本书应该还是蛮有用的,值得一看。
|