可以在不干扰生产数据库服务器的系统上测试查询。
然而,您必须当心,因为在独立的系统上测试查询可能会误导您的调整决策。
即使将数据库服务器用作数据仓库,有时候也会在分离的系统上测试查询,直到理解了与查询相关的调整问题为止。
如果试图提高一个大型查询的性能,该查询可能需要几分钟到几小时才能完成,那么可准备一个按比例缩小的数据库,在该数据库中能更快地完成您的测试。
但是,请注意以下这些潜在问题:
- 优化器在小型数据库和大型数据库上所做的选择可能是不同的,即使表的相对大小相同。
请验证:查询计划在实际数据库和模型数据库中相同。
- 执行时间很少是表大小的线性函数。
例如:排序时间的增长比表大小的增长要快,当索引从两层仅增加到三层,索引访问的成本也会增加许多。
在按比例缩小的环境中查询性能有很大提高,但这种提高应用于整个数据库时可能并不明显。
所以,作为模型数据库的测试结果得出的任何结论一定只是试验性的,直到在生产数据库中得到验证为止。
您可以经常调整查询或数据模型来提高性能,调整时注意以下目标:
- 如果使用的是多用户系统或网络,系统负载随时都会发生很大变化,那么应在每天的同一时刻进行实验,以获得可重复性结果。
在系统负载保持较轻时启动测试,以确保测量的只是查询的影响。
- 如果将查询嵌入复杂的程序,那么您可以抽取 SELECT 语句,并将它嵌入 DB-Access 脚本。