zoukankan      html  css  js  c++  java
  • DB2 9.7 自动存储与内存管理

    自动存储 – DB2 9.7新增哪些功能?

    现有数据库允许通过更改命令来使用自动存储功能
    #1 - ALTER DATABASE 启用 AUTOMATIC STORAGE

    ALTER DATABASE <dbName> MANAGED ADD STORAGE ON 'storagePath1','storagePath2',...

    在 ALTER DATABASE之后转换单独的表空间
    #2 – 使用 ALTER TABLESPACE命令来启用自动存储功能管理单独的表空间, 并且保持现有容器.
    ALTER TABLESPACE <tbSpcName> MANAGED BY AUTOMATIC STORAGE


    #3 (额外) – 使用REBALANCE选项来删除所有之前的用户定义的DMS容器并且将数据转移到新的有自动存储功能的容器
    ALTER TABLESPACE <tbSpcName> REBALANCE


    DB2 内存管理

    所有内存堆都在数据库共享内存集中
    通过使用DATABASE_MEMORY 参数来设置
    32位系统的内存集大小受限于内存地址问题
    64位系统内存集可以视为没有限制

    DB2 数据库内存模式 – 堆

    堆可以通过调用内存查询指令来查看

    > db2mtrk -d
    Tracking Memory on: 2008/06/29 at 11:08:29

    Memory for database: SAMPLE

    utilh pckcacheh catcacheh bph bph bph bph bph
    16.0K 144.0K 64.0K 4.1M 592.0K 336.0K 208.0K 144.0K

    lockh dbh
    576.0K 3.6M

    DB2内存优化 - STMM

    DB2 9开始引入了一种革命性的内存优化系统,称之为自调优内存管理系统 (STMM)
    与DB2实例 (INSTANCE_MEMORY), 和数据库 (DATABASE_MEMORY) 级别内存参数工作
    DB2数据库参数:
    Buffer pools, sort, locklist, package cache, 和 total database memory
    在线内存优化无需插手
    不需要数据库管理员的干预
    能够感知潜在的工作负载并且根据需要来调节优化内存
    能够迅速的根据工作负载来调整重新分配内存

    STMM 外部形式

    配置
    SELF_TUNING_MEM配置参数是STMM功能的主要开关
    STMM 设置对每个DPF模式都是独立的
    配置参数和缓冲池大小需要设置成 AUTOMATIC 来启动优化
    之后的幻灯片会更详细的介绍这些功能
    内存参数改变的一致性
    所有的配置变化都写入磁盘
    即使重新启动或者停止数据库,所有的变化都会被保留
    日志
    所有的配置变化都写入 db2diag.log 日志文件
    内部优化信息写入 STMM.log日志文件


    STMM 对DB内存的操作方式

    数据库级别的操作有两种方式:
    调整DATABASE_MEMORY参数
    需要的时候,向操作系统索取或者返还内存空间
    某个特定DB2数据库总的内存空间会随着时间而增长

    不调整DATABASE_MEMORY参数
    STMM功能还是会优化内存,但是数据库使用的内存总量保持不变
    一个内存堆空间的增长会导致其它堆空间的下降
    能够同时优化多个数据库以及多个实例
    可以在分区和非分区环境下工作


    STMM是如何工作的?


    持续监控系统来索取或者返回空闲的内存空间 (当 DATABASE_MEMORY 设置成 AUTOMATIC时)
    以迭代方式运行程序来找出一套对所有内存堆的最优化配置方案
    迭代方式能避免系统出现不稳定情况
    控制算法决定每次启用的时间间隔并且避免性能出现上下波动
    每次工作区间每个内存堆最多增长50%或减少20%


    STMM – 配置和语法


    新创建的数据库默认启用STMM
    新的配置参数 SELF_TUNING_MEM 必须设置成ON的状态
    update db cfg for database <db_name> using SELF_TUNING_MEM ON
    将那些你需要优化的内存堆的参数设置成 AUTOMATIC
    update db cfg for database <db_name> using <param> AUTOMATIC
    也可以使用 STMM来优化缓冲池:
    alter bufferpool <bp_name> size AUTOMATIC
    create bufferpool <bp_name> size AUTOMATIC

    STMM – 配置和语法


    查询系统是启用优化功能 :
    连接数据库
    获取数据库配置信息
    get db cfg for <db_name> show detail
    检查 SELF_TUNING_MEM 参数值
    如果设置成 ON (ACTIVE), 那么系统使用了优化功能
    如果设置成 OFF, 或者设置成 ON (INACTIVE) 那么系统没有使用优化功能
    想要关闭优化功能, 可以 :
    将 SELF_TUNING_MEM 主开关设置成 OFF
    update db cfg for database <db_name> using SELF_TUNING_MEM OFF
    或者将单独的内存堆参数设置成手动 (将保持当前值) 或者设置成一个特定的值 (将改变到设置值) 将会停止优化那个内存堆
    update db cfg for database <db_name> using locklist manual
    update db cfg for database <db_name> using locklist 1000
    alter bufferpool <bp_name> size manual
    alter bufferpool <bp_name> size 1000


    STMM – 其它值得注意的变化

    内存的配置参数很简单
    用单独一个参数 INSTANCE_MEMORY 来指定数据库管理器(单独实例)能够从它自己的私有和共享内存堆中支配的所有内存
    用一个单独的参数 APPL_MEMORY 控制DB2代理用来响应应用程序请求的内存最大值
    以上两种都默认设置成 AUTOMATIC
    所有的 STMM 能够调整的内存参数都是动态的
    内存参数的变化不需要重启实例


    总结 - STMM

    STMM – DB2的高级内存自动优化管理工具
    数据库在线优化而且不需要管理员的干预
    可以用来优化整体数据库内存,应用程序内存和实例内存使用情况
    优化数据库内存中四个最大的使用者
    通过数据库配置参数来激活 (和更改缓冲池命令)
    减少数据库管理员手动优化的负担
    能够在一个小时左右找到一套接近最优化的方案
    能够在多分区数据库中工作

  • 相关阅读:
    bzoj 3670: [Noi2014]动物园
    bzoj 2878: [Noi2012]迷失游乐园
    51nod 1348 乘积之和
    51nod 1514 美妙的序列
    AtCoder Grand Contest 002 D
    bzoj 3451 Normal
    LOJ #6119. 「2017 山东二轮集训 Day7」国王
    51nod 1752 哈希统计
    计蒜客 百度地图的实时路况
    Codeforces 549F Yura and Developers
  • 原文地址:https://www.cnblogs.com/dahaoran/p/13558215.html
Copyright © 2011-2022 走看看