配置顾问(AUTOCONFIGURE)命令
“配置顾问程序”,是用于为缓冲池大小、数据库配置参数和数据库管理器配置参数的初始值提供建议。配置顾问程序根据环境特征(例如,CPU 速度和工作负载类型等)来生成建议的缓冲池大小和数据库配置参数设置。可以通过使用AUTOCONFIGURE命令的 APPLY 选项来显示或应用建议的值。“配置顾问程序”建议的值只是针对每个实例具有一个数据库的情况。如果想要在多个数据库上使用此顾问程序,则每个数据库应该属于一个单独的实例。
在以往,对一个数据库管理员(DBA)来说,最费神费力的工作是监控数据库的运行、调整其性能、为不同的应用配置适当的性能参数。这也是数据库管理员日常最重要的工作。通常情况下,为一个复杂的应用配置适当的性能参数将耗费数据库管理员2~3天的时间,现在通过DB2 V9提供的的配置顾问(CONFIGURATION ADVISOR),管理员只需要按照提示回答一些简单的问题,DB2 V9就能自动完成性能参数的配置,所需时间不过几分钟。这就是DB2 V9带给我们的“自主管理(SELF-MANAGING)”功能,也是IBM倡导的自主运算理念。DB2数据库中的自主管理是DB2
V9非常重要的特性。用户的数据库使用成本中,有很大一部分用于数据库的维护和管理,简化了管理就意味着大大降低了数据库的总体拥有成本(TCO)。
对于已经存在的数据库,可以通过运行AUTOCONFIGURE命令来请求建议,也可以通过在控制中心(DB2CC)打开“配置顾问程序”使用图形化的方式进行配置,AUTOCONFIGURE命令的语法格式如清单10所示:
- - 清单10.AUTOCONFIGURE语法格式
>>- AUTOCONFIGURE--+---------------------+----->
| .-------------------- . |
| V||
' – USING - - input - keyword - - param – value - + - '
>-- APPLY--+- DBONLY--+--+-----------+-----------><
+- DBAND DBM -+' - ON CURRENT NODE - '
' - NONE - - - - - - - '
输入参数(INPUT KEYWORD)可以是内存百分比(MEM_PERCENT)、工作负载类型(WORKLOAD_TYPE)、单个工作单元中的平均SQL语句数(NUM_STMTS)、每分钟事务数(TPM)、指定数据库管理优先级(ADMIN_PRIORITY)、指定数据库是否填充了数据(IS_POPULATED)、
指定与此数据库连接的本地应用程序平均数(NUM_LOCAL_APPS)、指定与此数据库连接的远程应用程序平均数(NUM_REMOTE_APPS)、选择最能反映应用程序的隔离级别(ISOLATION) 和缓冲池是否可以自动调节大小(BP_RESIZEABLE)。
我们接下来简单介绍一下这几个参数:
1. 内存百分比(MEM_PERCENT):用来指定可以分配给数据库的内存百分比,如果其他应用(除了操作系统以外的其他应用程序)也在这个服务器上运行,则这个值要小于100。正在运行的所有应用程序(包括DB2)都会影响当前可用的内存,可选的取值范围是1到100,默认值是25。
2. 工作负载类型(WORKLOAD_TYPE):此参数指定能最好的反映数据库的工作负载类型,配置顾问程序可以为特定类型的工作负载优化您的数据库。如果能确定数据库大多数情况都是用于查询,则选择“查询”。如果数据库大多数情况都是用于事务处理,则选择“事务”。如果您不能确定,或者两者情况都有,则选择“混合”。简单的说,简单工作负载(SIMPLE WORKLOADS)往往是I/O繁忙、多事务,而复杂工作负载(COMPLEX WORKLOADS)往往是CPU繁忙、多查询。可选的值有:SIMPLE、MIXED、COMLEX。默认值是MIXED。
3. 单个工作单元中的平均SQL语句数(NUM_STMTS):此参数用来指定两次落实之间的单个工作单元中平均的SQL语句数,该数字应能最好地反映您的数据库。如果不能确定,可以选择大于10个的某个值。可选的值是1到1000000。默认值是10。
4. 每分钟事务数(估计)(TPM):此参数用来估计每分钟数据库中运行的事务数。默认值是60。
5. 指定数据库管理优先级(ADMIN_PRIORITY):此参数用来指定是想优化事务性能(每分钟能处理更多事务)还是缩短数据库恢复时间。如果不能确定或者这两者情况对您同样重要,可选择“两者”。可选择的值有PERFORMANCE(事务性能更快、恢复较慢),RECOVERY(数据库恢复更快、事务较慢),BOTH(两者),默认值是两者。
6. 指定数据库是否填充了数据(IS_POPULATED):此参数用来指定数据库中是否填充了数据,数据库中的数据量会影响建议值。因此每当数据库大小明显地增大或减少时,都应再次运行此顾问程序。可选值YES、NO,默认值是YES。
7. 指定与此数据库连接的本地应用程序平均数(NUM_LOCAL_APPS):此参数用来指定与此数据库连接的本地应用程序平均数。注意要分配足够的连接以确保用户不再需要等待当前连接的用户断开连接。但由于分配的每个连接都需要更多的系统内存,所以如果分配太多连接就可能会产生资源浪费。连接的应用程序平均数等于用户数乘以每个用户的平均连接数。如果不确定应使用什么值,可接受缺省值。取值范围是0到5000,默认值是0。
8. 指定与此数据库连接的远程应用程序平均数(NUM_REMOTE_APPS):此参数用来指定与此数据库连接的远程应用程序平均数。注意要分配足够的连接以确保用户不再需要等待当前连接的用户断开连接。但由于分配的每个连接都需要更多的系统内存,所以如果分配太多连接就可能会产生资源浪费。连接的应用程序平均数等于用户数乘以每个用户的平均连接数。如果不确定应使用什么值,可接受缺省值。取值范围是0到5000,默认值是10。
9. 选择最能反映应用程序的隔离级别(ISOLATION):此参数用来指定最能反映所有应用程序的隔离级别,就是在所有应用程序中使用最频繁的那个隔离级别在这里指定一下。在数据库上运行的每个应用程序都可以有不同的隔离级别。该级别确定用户读取或更改数据时的锁定行数和锁定持续时间。不要选择创建的锁定数多于需要数的隔离级别,因为每个附加锁定都需要更多的内存,另外,锁定级别过高,会影响应用程序的并发性。可选择的值有RR,RS,CS,UR,默认值是RR。RR(REPEATABLE READ)是可重复读,需要长期锁定,一般会上表级锁;RS(READ
STABILITY)是值读稳定性,很少长期锁定,一般会对结果集上锁;CS(CURSOR STABILITY)是值游标稳定性,很多短期锁定,一般对检索到的当前行上行级锁;UR(UNCOMMITTED READ)是值未落实读,无锁定。
10. 缓冲池是否可以自动调节大小(BP_RESIZEABLE):此参数用来指定缓冲池是否可以自动调节大小,在DB2 V9中引入了自动自调整内存功能,如果创建的BUFFERPOOL指定了AUTOMATIC属性,则缓冲池就可以自动调节大小,当需要更多的内存时,就从数据库共享内存等其他地方挤占内存,当不需要太多内存时,就会释放掉多余的内存。如果DB2是安装在WIDOWS或AIX上,指定了自动调节大小的缓冲池还可以和操作系统互相挤占内存。可选的值有YES,NO,默认值是YES。
APPLY选项可以选择的配置参数值分别是无值适用(NONE)、只有数据库配置和缓冲池适用(DB ONLY)、所有参数及其值都适用(DB AND DBM),每个参数的具体含义如下:
1. 无值适用(NONE)
此参数值表示本次运行的AUTOCONFIGURE命令,只根据输入参数值显示建议变化的值,但是不应用他们。如果觉得建议值可行,可以通过手工的方式进行更新,比如,对DBM参数进行更新,可以在DB2CC控制中心点实例右键选择“配置参数”,通过图形化的方式进行更改,也可以在DB2CLP窗口中,用UPDATE DB CFG命令进行更改。
2. 只有数据库配置和缓冲池适用(DB ONLY)
此参数值表示本次运行的AUTOCONFIGURE命令,将分别基于当前的数据库管理器配置参数和输入参数值,显示数据库配置参数和缓冲池设置的建议值,并应用这些建议值到数据库配置参数和缓冲池设置中。
3. 所有参数及其值都适用(DB AND DBM)
此参数值表示本次运行的AUTOCONFIGURE命令,根据输入参数值显示并应用对数据库管理器配置参数、数据库配置参数以及缓冲池设置的建议值。
此选项还可以指定ON CURRENT NODE。在分区数据库环境中(DPF),配置顾问程序默认情况下将更新所有节点的数据库配置参数。如果运行配置顾问程序时指定了ON CURRENT NODE选项,则将只把数据库配置参数建议值应用到当前(CONNECTION)节点。缓冲池总是被应用到系统目录中。因此,所有节点都会被影响。ON CURRENT NODE选项不会影响缓冲池建议值。
即使为创建数据库(CREATE DATABASE)请求自动启用了“配置顾问程序”,但是,只要您愿意,仍然可以特地运行配置顾问程序,以便应用数据库管理器配置建议值。如果对创建数据库(CREATE DATABASE)请求禁用了“配置顾问程序”,则以后可以附带给定的选项来手工运行它。
如果系统被分成了多个逻辑分区(LOGICAL PARTITIONS),那么内存百分比(MEM_PERCENT)参数指定的百分比将影响所有逻辑分区用到的内存。举个例子,如果指定DB2使用系统25%的内存,将不管存在多少个逻辑分区,都将分配总内存的25%。但是数据库配置参数推荐值将只为一个逻辑分区做调整。
“配置顾问程序”建议的值只是针对每个实例具有一个数据库的情况。如果想要在多个数据库上使用此顾问程序,则每个数据库应该属于一个单独的实例。当这个数据库是这个系统中唯一活动的数据库,配置顾问命令为当前连接的数据库产生配置参数建议值。如果当前系统中存在多个活动的数据库(不在一个实例中),则内存百分比(MEM_PERCENT)参数将只影响当前连接数据库的共享内存,也就是说推荐的数据库参数值只是当前连接数据库的,和另外的活动数据库没有关系。举个例子,如果整个DB2数据库使用系统80%的内存,而且系统中存在两个活动的数据库平均共享这些资源,则将只指定40%(80%被平均分给两个数据库)给内存百分比(MEM_PERCENT)参数。当直接通过AUTOCONFIGURE命令调用配置顾问程序时,注册表变量DB2_ENABLE_AUTOCONFIG_DEFAULT的值将被忽略。