zoukankan      html  css  js  c++  java
  • INFORMIX体系效能改善第一步





     

    作者 傅凯文,谭永贻/库柏信息   

     

    本文引见 IBM Informix® Dynamic Server 数据库效能改善中最根蒂根基之身手 UPDATE STATISTICS 以及其紧张功用与实行机遇。

    简介

    在 IBM Informix® Dynamic Server (以下简称 IDS) 体系上,SQL 实行效能系于 IDS optimizer 所决意的实行计划 (SQL execution plan);而影响实行计划的决意的两个紧张参考数据为统计数据(statistics) 和材料漫衍 (distributions)。如果说这两个参考数据和理论数据景遇有太大的收支,Informix optimizer 大概会做出低从命的实行途径 (execution path),进而促使 SQL 实行效能不彰。 UPDATE STATISTICS 是更新这两个数据的必要身手。

    妥当实行 UPDATE STATISTICS 之后的 IDS optimizer 做出的最高从命的实行计划而使 SQL 在 IDS 上实行更无从命。

    IDS UPDATE STATISTICS 指令在 SQL 实行计划有两个紧张的功用:

    1. 更新在体系型录 (system catalogs) 统计数据 optimizer 以此决意实行计划。

    2. 更新材料漫衍景遇。 IDS optimizer 以此决意实行计划最无效途径 (lowest cost)。 

    UPDATE STATISTICS 指令操纵机遇

    后面提到, IDS optimizer 在决意实行计划时,会参考统计数据和数据漫衍。统计数据从统计数据和数据漫衍并不是及时的,只需在实行 UPDATE STATISTICS 时才会更新,也就是说这些信息绝大部份的年华会和理论景遇有所收支。至于什么景遇下该操纵这个指令呢?

    1. 材料数量 (number of rows) 有少量转变景遇。

    2. IDS 停止数据转移 (migration) 之后。 

    实行 UPDATE STATISTICS 的实行选择

    假若数据库有 1000 表格 (table) ,为齐备的 1000 表格实行 UPDATE STATISTICS 将耗用太多体系资源与年华,有理论实行上之困难。以是怎样选择需求被实行 UPDATE STATISTICS 之关键表格 (table) 才是实行 UPDATE STATISTICS 的关键决意。下列来自库柏信息 DBSonar 所供应之报表中,能帮你找到最常用以及最需求被实行 UPDATE STATISTICS 之关键表格,其典型如下: 

    DB

    Table

    Nrows in Update Statistics

    Accurated NRows

    Change Rate %

    N Read

    N Write

    Seqscan

    ERP

    Table1

    0

    41398

    100.0

    205815

    70238

    8

    ERP

    Table2

    1

    1859

    99.9

    37449384

    6206787

    810

    ERP

    Table3

    400000

    18644384

    97.9

    115655415

    17922233

    0

    ERP

    Table4

    246

    4777

    94.8

    311858759

    127744455

    20102

    以上 Table1 与 Table3 因其 Nrows in Update Statistics 与 Accurated NRows 差异甚大,是亟待被实行 UPDATE STATISTICS 之表格。譬如 Table3 是一个被少量读取 (115,655,415 次) 与写入 (17,922,233 次) 的表格, IDS 体系型录认为 Table3 只需 400,000 列 (rows) 而实际上 Table3 已有 18,644,384 列, DBA 实行下列指令以更新在体系型录统计数据。

    UPDATE STATISTICS LOW FOR TABLE table3;

    UPDATE STATISTICS 的等第

    这个指令可以分红三种等第 (level): LOW, MEDIUM 和 HIGH 。这三种等第的区别就是实行 UPDATE STATISTICS 时所收集的数据取样的多寡。所谓的 HIGH level ,就是统计整个 table 的材料, MEDIUM 则是只随机拔取部份的材料停止统计。取样的数据越多,透过统计数据和数据漫衍做出来的实行计划才会越精准越无从命;不皮毛对的,统计和打定取样的年华本钱也会较量高。 UPDATE STATISTICS 的语法如下:

     

    UPDATE STATISTICS [LOW|MEDIUM|HIGH]; 

    UPDATE STATISTICS [LOW|MEDIUM|HIGH] FOR TABLE; 

    UPDATE STATISTICS [LOW|MEDIUM|HIGH] FOR TABLE table_name; 

    UPDATE STATISTICS [LOW|MEDIUM|HIGH] FOR TABLE table_name(col_name); 

    UPDATE STATISTICS [LOW|MEDIUM|HIGH] DISTRIBUTIONS ONLY; 

    UPDATE STATISTICS FOR PROCEDURE procedure_name; 

    DISTRIBUTIONS ONLY 是指更新数据漫衍。只需没有加上 DISTRIBUTIONS ONLY 参数,都邑发生统计材料;然则只需在 level MEDIUM 或是 HIGH 才会发生数据漫衍。 IDS optimizer 既然会接纳这两个数据做为选择实行计划的参考依据,我们可以透过一些小才干,让 optimizer 去选择我们希望它选择的实行计划。例如说,针对 table 齐备的字段实行 UPDATE STATISTICS LOW ;然则针对 query request 中 WHERE 前提有操纵到的字段实行 UPDATE STATISTICS MEDIUM ;对 index 所操纵到的第一个字段实行 UPDATE STATISTICS HIGH 。有了这样分歧等第的区别, optimizer 选择走 index 的实行计划的机遇就会相对提高了。 UPDATE STATISTICS 实行后统计数据和数据漫衍是会不绝掩饰从前的,以是统一个 table 有实行一种以上 level 的 UPDATE STATISTICS 时,切记先从 LOW, MEDIUM, HIGH 的挨次实行,以免 MEDIUM 或 HIGH 的数据被 LOW 所掩饰。 

    结论

    在数据库体系中,最紧张的事变就是实行 client 端送来的 SQL ;而 optimizer 就身负决意实行 SQL 效能的关键脚色。为了让 IDS optimizer 做出最无从命的实行计划,活期实行 UPDATE STATISTICS 就是数据库经管员最紧张的职责之一。实行相干细节和实行前后成果差异,未来会在后续的专栏中连续联系。 

    参考数据

    - Understanding and Tuning Update Statistics 

     



    版权声明: 原创作品,容许转载,转载时请务必以超链接形式标明文章 原始来由 、作者信息和本声明。不然将追究法律责任。

  • 相关阅读:
    Mysql 触发器
    Mysql 的变量
    Mysql 事务
    重置mysql管理员密码
    mysql数据备份
    Mysql的联合查询
    Mysql的存储引擎
    数据库的视图
    数据库子查询
    数据库外键
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1975303.html
Copyright © 2011-2022 走看看