zoukankan      html  css  js  c++  java
  • 深化分析DB2数据库运用体系的性能优化3

     
    那么对表Order的扫描占74%,对表OrderDetail的搜刮占14%。

    并且,一个列的标签同时在主盘考和where子句中的盘考中出现,那么很或者当主盘考中的列值改变之后,子盘考必需重新盘考一次。盘考嵌套层次越多,遵命越低,是以该当尽管避免子盘考。如果子盘考不可避免,那么要在子盘考中过滤掉尽或者多的行。

    4.通配符
     
    在SQL语句中,LIKE枢纽字支持通配符婚配,但这种婚配非凡淹灭光阴。比如:SELECT * FROM Order WHERE CreateUser LIKE ‘M_ _ _’ 。即便在CreateUser字段上确立了索引,在这种情况下也仍是回收递次递次扫描的体式花式,Order表中有1000笔纪录,就须要对照1000次。如果把语句改为SELECT * FROM Order WHERE CreateUser >’M’ AND CreateUser <’N’,在实行盘考时就会操作索引来盘考,显然会大猛前进速度。

    5.distinct

    运用distinct是为了包管在结果会合不出现反复值,但是distinct会发作一张使命表,并举行排序来删除反复纪录,这会大大增加盘考和I/O的操作次数。是以该当避免运用distinct枢纽字。

    6.负逻辑

    负逻辑如!=、<>、not in等,都会招致DB2用表扫描来完成盘考。当表较大时,会严厉影响体系性能,可以用其它操作来改换。

    7.且则表

    运用且则表时数据库会在磁盘中确立呼应的数据结构,由于内存的会面速度远庞大于外部存储器的会面速度,在庞大盘考中运用且则表时,中间结果会被导入到且则表中,这种磁盘操作会大大低沉盘考遵命。其它,在分布式体系中,且则表的运用还会带来多个盘考历程之间的同步问题。以是,在举行庞大盘考时最好不要运用且则表。

    8.存储历程

    DB2中的Stored Procedure Builder可以发作涯储历程,运转并测试存储历程。存储历程可以网罗庞大而庞大的盘考或SQL操作,经由编译后存储在DB2数据库中。用户在屡屡运用异样的SQL操作时,可以先把这些SQL操作做成存储历程,在须要用到的地方直接引用其名字举行挪用。存储历程在第一次实行时确立优化的盘考方案,DB2将盘考方案保管在高速缓存里,此后挪用运转时可以直接从高速缓存实行,省去了优化和编译的阶段,节省了实行光阴,从而前进遵命和体系操作率。

    最优的盘考方案根据某些尺度选择经常不可行,要凭证理论的要乞降详细情况,经由对照举行选择。DB2提供的Query Patroller可以对分歧的盘考方案的盘考价值举行对照,经由追踪盘评语句,前去盘考分歧阶段的体系开支,从而作出最佳选择。DB2提供的Performance Monitor也对整个数据库体系的性能举行监控,网罗I/O光阴、盘考次数、排序光阴、同步读写光阴等等。

    数据库体系的并发节制也能影响体系性能。多个用户的同时操作或者招致数据的纷歧致性,DB2为了避免同时修革新成数据丧掉和会面未被提交的数据,以及数据的珍爱读,回收Lock机制来完成节制。

    DB2中可以对表空间、表、表列和索引加锁。锁的粒度越大,锁越庞大,开支小,并发度低;粒度小,锁机制庞大,开支大,并发度高。大型体系在并发措置中如果碰到所要分派的资源处于锁定情况,体系会把历程挂起守候。如果一个很耗时的盘考操作使命于一个经常运用的表上,此时运用表一级锁,意味着整集体系都要守候你的盘考竣事此后才干够承受运转。以是在庞大盘考中,尽管避免运用表一级锁。如果有这一类的须要该怎样办呢?可以操作视图来规划这一类问题。视图避免了对表的直接操作,同时有能够包管数据库的高效运转。

     
     
    来自: 新客网(www.xker.com) 详文参考:http://www.xker.com/page/e2008/0128/46640_3.html


    版权声明: 原创作品,应允转载,转载时请务必以超链接体式花式标明文章 原始理由 、作者信息和本声明。否则将清查轨则责任。

  • 相关阅读:
    进程池,线程池,协程,gevent模块,协程实现单线程服务端与多线程客户端通信,IO模型
    线程相关 GIL queue event 死锁与递归锁 信号量l
    生产者消费者模型 线程相关
    进程的开启方式 进程的join方法 进程间的内存隔离 其他相关方法 守护进程 互斥锁
    udp协议 及相关 利用tcp上传文件 socketserver服务
    socket套接字 tcp协议下的粘包处理
    常用模块的完善 random shutil shevle 三流 logging
    day 29 元类
    Django入门
    MySQL多表查询
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1975424.html
Copyright © 2011-2022 走看看