对DB2数据库性能上的错误理解有哪些?


  本文标签:DB2数据库性能

  

  

  以下的文章主要向大家描述的是DB2数据库设计中其物理设计应该与逻辑结构的原因,其中主要原因包括DB2缺省就是好的,不要在SQL WHERE谓词里使用否定,以及依靠EXPLAIN来决定是否访问路径是好的内容描述  。

  DB2缺省就是好的

  

  实际:缺省的一般不是最好的,他们因版本不同而改变  。比如考虑绑定参数CURRENTDATA  。

  不要在SQL WHERE谓词里使用否定

  实际:另外一个这种规则并没有被解释清楚  。只有谓词是一个否定时,SQL访问路径可能使用一个不必要的表空间扫描  。但是在其它的多数情况下,多余的过滤应该在DB2引擎里完成,这会较好  。

  我可以只依靠EXPLAIN来决定是否访问路径是好的

  实际:EXPLAIN不显示执行的查询块的顺序,不会告诉你1或者2阶段的谓词,不会告诉你一个块会多长时间执行一次  。基本的,EXPLAIN只是导出一些数据到一个表里,然后结合其他一些信息来进行更多的一些解释  。有一些工具来帮助处理此过程(如Visual Explain),但是如果所有的事实都没有被考虑的话,这样的方式只会带来坏处  。

  不要做EDM池太大以避免其分页

  实际:EDM池通常通过分页来提升DB2性能(这里分页是指扩展存储,而不是磁盘)而不是变得更小并且因为页面置换和其他因素持续重建内部结构  。

  扩展不会关系其他任何东西

  实际:什么时候开始的?未来如果世界上充满了SAN或者ESS,那差不多  。扩展的影响已经因为新的磁盘缓存控制器而变得很小了,但是仍然有一些额外的检查和处理需要来管理它们  。

  关系的划分不会在DB2中使用

  实际:关系的划分已经在过去的许多系统中被使用了,可以有效的通过数据库设计者和程序开发者来实现  。在目前的商业智能(BI)和市场系统中,它可以被数次用在每个单个程序中  。

  将所有的包绑定到两个计划中:一个批处理和一个在线的

  实际:在介绍DB2包的时候,这是一个不好的陈述  。有许多理由可以说这个理解是错误的  。

  未授权的读是不好的

  实际:未授权的读并不是一个四字单词但是是一个非常好的DB2数据库性能增强,可以被用在比经常理解的更多的地方  。

  在没有超时和死锁的情况下不会有锁问题

  实际:事实上没有一个问题发生并不意味着没有需要关注的的性能问题  。经常锁定不被认为是一个问题,因为注意力主要放在反应的调节测量(统计死锁或者超时的数量),而不是后发式的调节(监控锁等待时间)  。

  ESA数据压缩总是好的

  实际:当压缩能被在很多地方起作用时,有一些情况它能带来问题  。每种情况都要在压缩使用前决定是否使用它  。这不是可选的,而是必须要在高层决定是否使用还是不使用  。

  DB2缺省就是好的

  实际:缺省的一般不是最好的,他们因版本不同而改变  。比如考虑绑定参数CURRENTDATA  。

  不要在SQL WHERE谓词里使用否定

  实际:另外一个这种规则并没有被解释清楚  。只有谓词是一个否定时,SQL访问路径可能使用一个不必要的表空间扫描  。但是在其它的多数情况下,多余的过滤应该在DB2引擎里完成,这会较好  。

  我可以只依靠EXPLAIN来决定是否访问路径是好的

  实际:EXPLAIN不显示执行的查询块的顺序,不会告诉你1或者2阶段的谓词,不会告诉你一个块会多长时间执行一次  。基本的,EXPLAIN只是导出一些数据到一个表里,然后结合其他一些信息来进行更多的一些解释  。有一些工具来帮助处理此过程(如Visual Explain),但是如果所有的事实都没有被考虑的话,这样的方式只会带来坏处  。

  不要做EDM池太大以避免其分页

  实际:EDM池通常通过分页来提升DB2性能(这里分页是指扩展存储,而不是磁盘)而不是变得更小并且因为页面置换和其他因素持续重建内部结构  。

  扩展不会关系其他任何东西

  实际:什么时候开始的?未来如果世界上充满了SAN或者ESS,那差不多  。扩展的影响已经因为新的磁盘缓存控制器而变得很小了,但是仍然有一些额外的检查和处理需要来管理它们  。

  关系的划分不会在DB2中使用

  实际:关系的划分已经在过去的许多系统中被使用了,可以有效的通过数据库设计者和程序开发者来实现  。在目前的商业智能(BI)和市场系统中,它可以被数次用在每个单个程序中  。

  将所有的包绑定到两个计划中:一个批处理和一个在线的

  实际:在介绍DB2包的时候,这是一个不好的陈述  。有许多理由可以说这个理解是错误的  。

  未授权的读是不好的

  实际:未授权的读并不是一个四字单词但是是一个非常好的性能增强,可以被用在比经常理解的更多的地方  。

  在没有超时和死锁的情况下不会有锁问题

  实际:事实上没有一个问题发生并不意味着没有需要关注的的DB2数据库性能问题  。经常锁定不被认为是一个问题,因为注意力主要放在反应的调节测量(统计死锁或者超时的数量),而不是后发式的调节(监控锁等待时间)  。

  ESA数据压缩总是好的

  实际:当压缩能被在很多地方起作用时,有一些情况它能带来问题  。每种情况都要在压缩使用前决定是否使用它  。这不是可选的,而是必须要在高层决定是否使用还是不使用  。