某个工作负荷,在相同或者不同的系统下重放,接下来你就可以比较结果。Database Replay准确的重放工作负荷的并发性和时间,允许让你充分测试修改,如同在真实的工作负荷下。因此,在你将这些修改运用到生产之前,你就能看到这些修改对数据库的真实影响。
在我所做的测试中,Database Replay非常容易配置,正如我所预料的结果。你只需要学习几个简单的配置的相关概念,比如说如何在数据库中创建目录对象(directory object),以此来捕获工作负荷;如何以命令行的方式来启动重放,一旦你熟悉了这些,以后就一帆风顺了。
我测试选择的是50个用户、读写混合的工作负荷。在测试中,我删除了表格的索引,以便我能看到报表编号方面的变化。正如我所期待的,删除索引的却增加了写入的性能,却减弱了读取的性能。我能检验出重放机制(replay mechanism)重新创建了所有的线程,并且能够很好的运行它们。
建立一个捕获只需要四五步的过程。常用的做法是你重启数据库,为捕获设置选择(哪些部分的工作负荷是要包含,哪些是需要排除的),创建目录来保存捕获文件,设置捕获开始时间和持续时间,或者人工启动它,停止它。
你能够在主机或者客户机上重放工作负荷。如果你捕获了大的工作负荷,Database Replay有一个校准的工具,告诉你需要多少重放客户端。
另外一种分析工作负荷、图表的方法就是:当你运行重放工作负荷时,简单的记录在SQL Performance Analyzer中的数据。数据库不会知道100个真实用户工作负荷和100个虚拟用户工作负荷之间的区别,因此,当你做重放测试时,你就简单的捕获Performance Analyzer中的有用数据。
简单的使用Database Replay来捕获主要数据库的工作负荷,将备用数据库设置为读写模式,完成你所需要完成的修改,然后重放备用数据库中的工作负荷,这样一来就完成了测试。完成测试之后,你能记录测试结果,还原备用数据库的状态,和工作数据库保持一致。
在数据库的管理中,既要保证在真实的环境,而又要避免在生产数据库中完成准确的测试是最为重要的问题之一。Database Replay以一种简单和优雅的方式很好的解决了这个问题。