我始终采取的方法是首先使用最少的索引集部署数据库,然后根据性能要求添加/更改索引。
这种方法效果相当好。但是,它仍然没有告诉我可以在哪里提高性能。它只是告诉我哪里性能太差以至于用户抱怨。
目前,我正在重构许多应用程序上的数据库对象。
既然“过早的优化是万恶之源”,那么我是否应该不去寻找性能改进呢?
在重构应用程序代码时,开发人员不断寻找提高代码质量的方法。有没有一种方法可以不断寻求数据库性能的改进?如果是这样,您发现哪些工具和技术最有帮助?
我曾短暂使用过“数据库引擎调整顾问”,但发现它根本没有帮助。也许我只是需要更多解释结果的经验。
我的方法是使用 SQL Server Profiler 将针对服务器或数据库的命令收集到表中。一旦有了这些,您就可以根据最大和平均执行时间、最大和平均 cpu 时间以及(也非常重要)查询运行的次数进行查询。
由于我尝试将所有数据库访问代码放入存储过程中,因此我很容易分解查询。如果您使用内联 SQL,这可能会更困难,因为对查询中的值进行更改会使其看起来像不同的查询。您可以尝试使用 LIKE 运算符来解决此问题,将相同类型的查询放入相同的存储桶中以计算聚合(最大值、平均值、计数)。
一旦您有了潜在问题的“前 10 个”列表,您就可以开始单独查看它们,看看是否可以重新处理查询、索引可能会有所帮助,或者是否需要进行较小的架构更改。要得出前 10 名,请尝试以不同的方式查看数据:平均 * 计算期间的总成本、最严重违规者的最大值、简单的平均值等。
最后,如有必要,请务必在不同的时间段进行监控。早上每个人都进入并运行每日报告时的数据库使用情况可能与中午用户输入新数据时的数据库使用情况有所不同。您还可能认为,即使某些夜间进程比任何其他查询花费的时间更长,但这也没关系,因为它是在非工作时间运行的。
祝你好运!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)