
的情况下该如何处理?这时需要对数据库参数的调优加以仔细考虑。 在某些情况下有必要做出折衷选择, 也许
在Linux系统中,vmstat是很好的I/O带宽测量工具。该工具的“I/O section” 结果中bi和bo两列原本分别表示输入到块设备以及从块设备中输出的块数,如vmstat的man帮助命令所述。然而,在各种Linux发行版本中这些列实际上以KBps为单位报告字符设备或块设备(文件系统)在测量期间的传输率。对于这两种工作负荷,如果队列长度大于1, 则存在着某种冲突的可能性。 对于OLTP来说, 超过50ms的响应时间是需要解决的问题。
三、负载平衡Linux系统提供了多个工具来判定数据库系统是否需要负载平衡。完成这项工作的一种简单方法是使用iostat。
四、全局内存对于OLTP工作负荷来说,通常应该利用数据库的全局缓存将尽可能多的I/O操作移至内存中。多数数据库都提供了工具来查看用户事务是否被缓存,包括关于脏(dirty)缓冲区和已用缓冲区的统计数据。在Oracle中若要适当估测内存,需要设置参数database_block_ buffers。这只需确定数据库专用的空闲内存量,然后将该值除以database_block_size即可,如下所示:
如果swpd值较大并且从买球官方网站si和so列中可发现大量交换活动,则可能需要添加更多内存或减少为数据库分配的内存量,从而为应用程序保留更多内存。要确保存在着可分配给数据库的内存。另外,这还假定了Linux中已经考虑到锁定数据库的全局缓存区域。
应记住, 在32位Linux系统上, 内存容量可能会超出数据库软件的寻址能力。 在这种情况下, 如果出现I/O问题, 应该寻找新型的空闲内存使用方式。 为了减少I/O操作,应尽量使用内存。在某些情况下, 可以利用数据库的临时空间区域, 尤其对于使用了sort或hash区域的具体进程(典型存在于DSS工作负荷中)。要确保控制这些区域的数据库参数被置为最大值(除以数据库代理的数目),同时仍不超过系统的内存(包括内核)范围。
五、 日志设备当其他所有瓶颈都被解决后,对日志记录设备的优化往往将最终决定OLTP数据库的性能。尽量将日志文件与所有其他数据库文件加以分离是很重要的。下一步应决定使用原始设备还是文件系统设备来运行日志文件。历史上,原始设备对于支持数据库来说是首选的日志记录设备。有些数据库使用了直接I/O文件系统,其性能可以达到原始设备的5%。 另一些(通常为非商用的)数据库则利用Linux提供的缓冲机制来进行文件系统缓冲。建议在具体设定的环境中对这些方案进行直接比较。