可以标识过载的磁盘以及驻留在那些磁盘上的数据库空间。 找出超负荷的磁盘后,即可更正该问题。
以下案例分析说明了一种磁盘过载的情况。此案例分析显示了根据用户提供的初始报告离析症状和找出问题时所需采取的步骤,还描述了所需的更正方法。
不具有所需吞吐量的数据库应用程序将受到检查,以便确定如何提高性能。操作系统监视工具表明,很大一部分进程时间都处于等待 I/O 的闲置状态。数据库服务器管理员增加了 CPU VP 数量,使更多的处理器可用于处理并发 I/O。 但是不会增加吞吐量,这表明一个或多个磁盘已超负荷。
要验证 I/O 瓶颈,数据库服务器管理员必须标识过载的磁盘以及驻留在这些磁盘上的数据库空间。
要标识过载的磁盘以及驻留在那些磁盘上的数据库空间,请执行以下操作:
图: onstat -d 选项的输出
Dbspaces address number flags fchunk nchunks flags owner name c009ad00 1 1 1 1 N gbasedbt rootdbs c009ad44 2 2001 2 1 N T gbasedbt tmp1dbs c009ad88 3 1 3 1 N gbasedbt oltpdbs c009adcc 4 1 4 1 N gbasedbt histdbs c009ae10 5 2001 5 1 N T gbasedbt tmp2dbs c009ae54 6 1 6 1 N gbasedbt physdbs c009ae98 7 1 7 1 N gbasedbt logidbs c009aedc 8 1 8 1 N gbasedbt runsdbs c009af20 9 1 9 3 N gbasedbt acctdbs 9 active, 32 total Chunks address chk/dbs offset size free bpages flags pathname c0099574 1 1 500000 10000 9100 PO- /dev/infx2 c009960c 2 2 510000 10000 9947 PO- /dev/infx2 c00996a4 3 3 520000 10000 9472 PO- /dev/infx2 c009973c 4 4 530000 250000 242492 PO- /dev/infx2 c00997d4 5 5 500000 10000 9947 PO- /dev/infx4 c009986c 6 6 510000 10000 2792 PO- /dev/infx4 c0099904 7 7 520000 25000 11992 PO- /dev/infx4 c009999c 8 8 545000 10000 9536 PO- /dev/infx4 c0099a34 9 9 250000 450000 4947 PO- /dev/infx5 c0099acc 10 9 250000 450000 4997 PO- /dev/infx6 c0099b64 11 9 250000 450000 169997 PO- /dev/infx7 11 active, 32 total
在“块”输出中,路径名列指示了磁盘设备。chk/dbs 列显示驻留在每个磁盘上的大块和数据库空间的数量。在此案例中,每个过载的磁盘上只定义了一个大块。每个大块都与数据库空间编号 9 相关联。
“数据库空间”输出显示与每个数据库号相关联的数据库空间的名称。在此案例中,所有三个过载的磁盘都是 acctdbs 数据库空间的一部分。
尽管原始的磁盘配置将三个完整的磁盘都分配给 acctdbs 数据库空间,但是该数据库空间中的活动表明三个磁盘是不够的。由于三个磁盘上的负载大致相同,因此不大可能是表的布局不合理或者分段不恰当。不过,您可以将其他磁盘上的分段添加到此数据库空间中的一个或多个大型表中,也可以将一些表移动到其他负载较少的磁盘上,从而获取更好的性能。