首页
登录 | 注册

DB2数据库性能理解的主要误区(1)

 来源:网海拾贝

1、逻辑设计应该总是能和物理设计完全映射

实际:DB2数据库设计中物理设计应该尽可能的和逻辑结构相近,但是为性能做出的物理设计改变不能被忽略,因为它们并不来自于逻辑设计。

2、将所有东西放在一个缓冲池(BP0)中让DB2管理

实际:就像在DB2手册和其他地方说明的一样,你只能在你的内存非常受限的情况下(10000 4k pages或者更少),你没有时间去管理它,你也没有考虑到性能的条件下,去这样做。最好这样说:不要放置除了DB2 catalog和目录以外的东西进入BP0。

3、DSNDB07是100%顺序的

实际:DSNDB07从来就不是100%顺序的,因为有工作文件中的对页面进行的随机活动。随即活动可能高达45%,但是通常范围是3%到10%。

4、VARCHAR应该总是被放置在行末

实际:这就是总是引发问题的话。如果表总是被读,并且非常少的更新,那么可以,这将会减少CPU负载,但是在其它情况下这样做就是最坏的,甚至如果表是被压缩的。只有在频繁更新的情况下它应该被放置在末尾,但是并不通常这样。

5、程序应该以遵循逻辑过程的方式编码

实际:伪代码或者一个逻辑过程图并不需要考虑性能相关的编码方式。在OLTP交易代码中这非常具有戏剧性。

6、大多数过程不在SQL中进行

实际:事实上,问题的反面往往是正确的。SQL是一个非常丰富的语言,能够处理大多数过程。实际上最大的困难是SQL经常被用来作为I/O处理器而不是一个集合处理器。

7、代码和引用表应该和DB2声明的referential integrity(RI)一起使用

实际:RI不应该作为一个编辑有效性的快捷方式而使用,这通常属于别的什么,但是应该在真父子关系中使用。

8、表至多有一到两个索引

实际:表应该按照性能需求拥有多个索引。

9、非分割索引(NPI)不应该被使用,尤其是不应该在大的表中使用

实际:这关系到数不清的问题,总体上这些都能被克服,但是NPI是对适当的访问和性能非常必要的。

10、大表应该被分割

实际:因为一个表中有太多数据就意味着有性能下降,这是一个遗留的担心。当一些表中有超过60亿行数据时,这个理解已经被消除了。

11、DB2缺省就是好的

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

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

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


相关文章

  • 本文主要介绍了如何在AIX6.1下快速安装db2数据库以及基本的环境变量的配置.数据库创建.卸载及安装结果的验证测试~ 1.系统需求     需要 64 位 AIX 内核     AIX 6.1 TL 2     注: POWER7? 系统 ...
  • Java基础12:深入理解Class类和Object类
    这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux.网络.多线程,偶尔讲点Docker.ELK,同时也分享技术干货和学习经验,致力于Ja ...
  • ubuntu17.04安装DB2 11.1 Express-c
    参考连接:https://developer.ibm.com/answers/questions/280797/download-db2-express-c-105-1/ 这个参考页面提供了DB2 Express-C 10.5的下载链接,虽 ...
  • 本文主要讲述了如何按照规划和业务需求在每周三和每月末进行全量备份,其他时间内进行增量备份db2数据库,注意本文以下内容是在AIX下运行通过,如果需要移植到Linux下需要进行复测~ #!/usr/bin/ksh ############## ...
  • 此文中的代码主要列出连接数据库的关键代码,其他访问数据库代码省略 1.Oracle8/8i/9i数据库(thin模式) Class.forName("oracle.jdbc.driver.OracleDriver").n ...
  •       看起来很简单的集合运算放在大数据的场景下,如果还想获得高性能就需要充分了解数据特征和计算特征才能设计出高效算法.充分利用序运算就是一种好办法! 复制摘要       交并差是常见的集合运算,SQL 中对应的 intersect/ ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.012 s.
京ICP备10005923号