|
hongyehongye1 发表于 2012-5-30 20:01 ![]()
健康检查十分重要,第一是可以让管理员更了解自己的数据库,比如每天正常情况下,各个时段的连接数,应用, ...
hi,hongye,你提的很好,这里面涉及为系统做功能和性能方面的基准测试。比如对于性能优化的工作,如果有份“体检”报告,那确实对制定调优的计划大有裨益。
我们在制定性能优化目标之前,首先需要对系统做基准测试(Benchmark Test,BMT)。基准测试通常会在特定条件下对选择好的工作负载进行测试,随后将结果和标准硬件最大阈值进行比较,例如每秒钟I/O吞吐量和执行的事务数。如果在同等配置条件下,当前工作负载的性能结果接近标准参数阈值,则说明当前已无须优化,否则说明还有较大的优化空间。另外一种情况是,在系统或应用没有改动前做基准测试,等改动后将再次测试的性能值和改动前进行对比,以确认性能变化情况。例如在开发阶段,应该使用基准测试来确定应用程序是否出现性能倒退。
在这里,我罗嗦一下,提提什么是基准测试。基准测试指通过设计科学的测试方法、测试工具和测试系统,实现对测试对象的某项性能指标进行定量的和可对比的测试。例如对DB2数据库的查询响应时间和事务处理能力等方面的性能指标进行基准测试。基准测试的三大原则是可测量、可重复和可对比。其中可测量是指测试的输入和输出之间是可达的,也就是测试过程是可以实现的,并且测试的结果可以量化表现;可重复是指按照测试过程实现的结果是相同的或处于可接受的置信区间之内,而不受测试的时间、地点和执行者的影响;可对比是指测试对象的测试结果具有一定关系,即测试结果的大小直接决定性能的高低。
基准测试能帮助你理解数据库在不同条件下的响应情况。这种条件可以是配置参数更改,也可以是一个应用的新版本发布,这个时候可以对因条件的变化而导致的性能变化做定量分析。基于每个用户或某个事务基准,你可以为整个程序或者某一个特定的工作负载例如死锁处理机制、DB2实用程序性能、不同的数据加载方式、读写速度等设计不同的测试场景。你可以按照常规方式启动所有应用,随后逐级限定在某个可能问题源头。这个时候,就可以为这个问题源头开发特定的测试用例。在这个特定的测试用例中,不需要模拟整个应用来获得有价值的信息,只需要从最简单的评估开始,随后根据需要逐渐增加复杂度。
基准测试通常是应用程序开发生命周期的一部分,应用开发人员和DBA通常都需要参与进来。从最佳实践来看,通常可以运行多个迭代来获得应用程序的最佳或次佳性能,而调整系统配置、SQL语句、索引、表空间和硬件配置等可以放在不同迭代之间进行。
所以,一个好的基准测试具有下面的要求:
测试是可重现的。
每个迭代起始于相同的系统状态。
没有其他的应用在系统后台运行。
软硬件测试环境和生产环境基本一致。
因此,如果你认为体检是必要的,那么基准测试就是一个需要研究的科目了。 |
|