性能部署是软件部署中一个常常被忽略的地方。尽管确保软件正确部署很重要,但在生产环境中优化性能同样重要。通过在软件部署过程中认识到性能部署的重要性,开发人员可以确保其软件运行良好,并满足用户的需求。关注性能部署可以帮助防止性能问题并提高用户对软件的满意度。
测试数据库与生产数据库之间性能部署的缺失环节
尽管进行了广泛的预部署测试,但在软件性能部署过程中仍有可能在特定的开发环境中遇到性能问题。以下问题可能会出现 :
- 无法将生产数据复制到测试数据库中。
- 测试数据库与生产数据库之间的硬件和软件配置存在显著差异。
- 由于安全限制而无法在生产数据库中测试软件。
- 新软件中使用的DML SQL语句可能会损坏生产数据库的数据完整性。
所以用户在发布新应用程序代码后遇到性能问题或应用程序错误并不罕见。
通过预先部署流程确保性能部署
以下说明提供了一种保证软件性能可靠性的新方法。这个想法很简单:由于在生产数据库上运行新的应用程序代码是不可行的,为什么不为生产数据库中的每个SQL语句获取查询计划呢?这样,我们就可以评估每个应用程序代码中的SQL语句在生产数据库上的性能。
假设新应用程序代码中有10个SQL语句需要在测试数据库中识别。在这种情况下,我们需要先清除共享池并在测试数据库中执行新的应用程序,以隔离这10个语句。这个过程将使我们能够捕获和分析这10个SQL语句,并从生产数据库中获取它们的查询计划。下面的表格呈现了查询计划比较所导致的各种潜在结果。
观察结果 | 可能的原因 |
生产数据库中有Explain Plan错误 | SQL语句需要访问生产数据库中不存在的对象 |
查询计划有更改 | 测试和生产数据库之间存在显著的统计差异,包括数据库模式的差异。这些模式差异可能涉及缺少或新的分区以及其他影响数据库结构和组织的变化。由于潜在的重大性能变化,可能需要对SQL进行基准测试。 |
有未使用的索引 | 一些在测试数据库中使用的索引在生产数据库中未使用, 由于潜在的重大性能变化,可能需要对SQL进行基准测试。 |
有新使用的索引 | 一些在生产数据库中使用的索引在测试数据库中未使用, 由于潜在的重大性能变化,可能需要对SQL进行基准测试。 |
总成本有变化 | 10个SQL语句的整体查询计划成本发生变化。如果生产数据库的数据量大于测试数据库,则成本变化将更高。 |
DBAO SQL Performance Tracker – YouTube
Tosska DB Ace Enterprise for Oracle – Tosska Technologies Limited