商讯信箱
用户名: @
密  码:   注册|忘记密码
登录
个人用户经销商
您的位置:首页 > 技术频道 > 正文

Viper 中的自调优内存特性

    【IT168 技术文档】数据库的工作负载很少一直是静态的。由于多种原因,包括用户的增加、查询模式的变化、维护任务的运行、其他应用程序消耗的资源的变化等等,工作负载及其所在的环境总是不断地变化。因此,即使是技术最高超的管理员在某个时候调优过的系统,在另一个时候也未必是最优的。变化可能在数秒内(而不是数天或数星期内)发生,因此留给管理员作出响应的时间就很短。数据库内存设置尤其容易受这些变化的影响,因而会严重影响响应时间。

    下面介绍 DB2 Viper 中新的自调优内存管理特性,该特性可以自动调优数据库内存设置,并能够在运行时动态调整它们,从而优化性能并提高管理员的效率。

    工作原理

    DB2 Viper 中的自调优内存管理特性能够在启动时自动为一些内存配置参数设置值,从而简化内存配置任务。自调优内存管理器使用智能控制和反馈机制来跟踪工作负载特征、内存消耗以及对数据库中各种共享资源的需求的变化,并根据需要动态调整它们对内存的使用。例如,如果排序操作需要更多的内存,而一些缓冲池又有多余的内存,那么内存调优器会释放多余的缓冲池内存,并将它分配给排序堆。

    图 1. 数据库内存

    在 Windows® 和 AIX® 平台上,自调优内存特性还可以确定整个数据库的内存需求,并动态调整数据库内存使用总量。也就是说,在这些平台上,除了在数据库资源之间动态调整内存使用量之外,DB2 还可以根据工作负载的需求占用更多的物理内存,也可以在数据库内存需求较低的时候将内存释放给操作系统,供其他任务和应用程序使用。

    启用自调优内存特性

    自调优内存特性对数据库共享内存资源起作用。这些资源包括:

    缓冲池 (由 ALTER BUFFERPOOL 和 CREATE BUFFERPOOL 语句控制)
    包缓存 (由 pckcachesz 配置参数控制) 
    锁定内存 (由 locklist 和 maxlocks 配置参数控制) 
    排序内存 (由 sheapthres_shr 和 sortheap 配置参数控制) 
    总体数据库共享内存 (由 database_memory 配置参数控制) 

    自调优内存特性可以通过 self_tuning_mem 数据库配置参数来启用。在 DB2 Viper 中,当创建一个新的数据库时,会自动启用自调优内存特性(对于非分区数据库而言)。也就是说,self_tuning_mem 被设置为 ON,与前面列出的各资源对应的数据库参数被设为 AUTOMATIC。对于从早期版本的 DB2 迁移过来的已有数据库,需要手动启用自调优内存特性。不一定要让所有数据库内存资源都被自动管理,而是可以选择只将需要的一些内存资源(参数)设置为 AUTOMATIC。

    优点

    传统上,配置数据库内存参数以优化运行性能是一项复杂而耗时的任务。DB2 Viper 可以自动为数据库设置内存参数,从而简化数据服务器的配置任务。这样就提高了管理员的效率,使管理员可以将精力集中在其他重要的任务上。

    除了简化内存配置外,这种新的、自适应的自调优内存特性可以提供较好的配置,这种配置是动态的,可以根据工作负载的重大变化及时作出响应,从而可以提高性能。

    当多个数据库运行在同一个系统上时,该特性允许某些数据库在高峰时期占用更多的内存,并在其他数据库和工作负载需要更多内存的时候释放内存,因此在这种情况下该特性也具有优势。

    正在起作用的自调优内存特性

    下面的 图 2 展示了在基准配置中正在起作用的 DB2 自调优内存特性。DB2 自动增加数据库共享内存(左侧的图)以满足工作负载的需求,最终导致查询吞吐量增加(右侧的图)。

    图 2. 自动调优对系统性能的影响

    结束语

    DB2 Viper 中的自调优内存特性是一项革命性的特性,它可以明显节省时间,简化内存调优,并可以动态地自动优化性能。请下载 DB2 Viper,试试这个特性,体验一下它的优点。

1 2
©版权所有。未经许可,不得转载。
[责任编辑:魏国亮]