SQL性能调优-提示和技巧
作为数据库管理员(DBA),您经常面临如何改进、优化和维护数据库和SQL服务器性能的挑战。SQL性能调优是改进和优化性能的方法之一。在浏览时,所有与性能相关的查询都会得到回答Oracle性能调优教程其中详细解释了数据库性能、性能调优、描述了如何优化查询,并提供了解决性能相关问题的实用技巧。
如果你是一个初学者,并希望了解SQL数据库和服务器,那么面向初学者的SQL数据库,Microsoft SQL Server数据库简介,Microsoft SQL数据库基础,SQL Server必备知识:你应该知道的!是开始你学习过程的很好的课程。
SQL性能调优
为什么需要SQL性能调优?
SQL语句用于从数据库中检索数据。我们可以通过编写不同的SQL查询得到相同的结果。但是我们需要优化查询以获得更好的性能。通过调优查询的性能,用户可以获得更快的结果,并可以更快地做出决策,从而受益。通用SQL性能调优的目标是减少响应时间(时间来完成指定的工作负载),增加吞吐量(的工作量,可以在指定的时间完成),并生成查询将返回预期的效果在最短时间通过最低的服务器资源利用率。
SQL性能调优概要
以下是一些减少系统最终用户响应时间和减少处理相同工作所需资源的方法:
- 减少工作负载:为了减少资源消耗,可以在不改变功能的情况下更改语句的执行计划。例如,如果一个经常执行的查询需要访问表中的一小部分数据,那么可以通过创建索引以更少的资源更高效地执行查询。
- 平衡工作负载:当真正的用户连接到系统时,系统通常在白天有高峰使用,而在晚上使用会减少。因此,最好在晚上运行非关键的报告和批处理作业,并将白天的资源留给更关键的程序。
- 并行化工作负载:如果需要,可以选择并行化访问大量数据的查询。这有助于减少低并发数据仓库中的响应时间。
SQL调优过程和性能问题分析
简而言之,SQL调优包括三个基本步骤:
- 确定高负载或顶级SQL语句,这些语句效率低下,并且负责应用程序工作负载和系统资源的大部分。
- 验证查询优化器为这些语句生成的执行计划执行得令人满意。
- 实现纠正措施,以生成更好的执行计划,以纠正性能较差的SQL语句。
重复上述三个步骤,分析参数,调整参数,直到系统运行满意,不再有需要调整的语句。
您可以使用不同的方法来分析性能问题。但首先,重要的是知道要寻找和识别什么问题。下面是一些常见的问题:
- CPU瓶颈:确定CPU性能和利用率对应用程序是否足够。
- 大小不足的内存结构:确定缓冲区缓存的大小是否足够,监控内存利用率,并执行进程管理、内存管理和调度。
- I/O容量问题:由于数据库驻留在一组磁盘上,I/O子系统的性能对于高效的数据库性能至关重要。磁盘统计数据(例如每秒磁盘I/ o数、业务时间长度等)将显示磁盘的性能是否最佳,或者存储系统是否工作过度。
- 并发性问题:查明数据库是否由于数据库中高度并发的活动而变慢。这将以锁或等待缓冲区缓存的形式表现出来。
- 数据库配置问题:确定数据库是否配置为按期望的性能级别执行。查看错误的日志文件大小、归档问题、过多的检查点、不理想的参数设置可能会提供所需的证据。
- 低效率或高负载SQL语句:识别高负载SQL语句或使用过多系统资源并影响系统性能的语句。查询优化器在此过程中提供帮助,并确定是读取表中的所有数据更有效,还是使用索引更有效。
执行计划的确定是处理任何SQL语句的重要步骤,它会极大地影响执行时间。查询优化器可以比较所有可能的方法的成本,并选择最经济的方法或执行计划。它还可以帮助您调优SQL语句。通过使用SQL Tuning Advisor和SQL Access Advisor,您可以以咨询模式运行查询优化器,以检查一条SQL语句或一组语句,并确定如何提高它们的效率。SQL Tuning Advisor和SQL Access Advisor可以提出各种建议,比如创建SQL配置文件、重新构造SQL语句、创建额外的索引、刷新优化器统计信息,等等。
调优SQL语句之后,可能会出现意外的性能退化或性能下降。调优SQL语句可能会导致它们的执行计划发生变化,并可能降低SQL性能。在对生产系统进行更改之前,可以使用SQL Performance Analyzer分析SQL调优对测试系统的影响。
对于数据库问题检测和自调优目的,分析可用的数据库统计信息也是一个好主意,这些统计信息提供了关于数据库负载类型和数据库使用的内部和外部资源的信息。拥有一个自动的数据库统计信息收集、处理和维护系统是很有帮助的。
结论
总之,我们可以说,为了提高SQL server的性能,调优系统和有效地优化查询是很重要的。要以经济和最佳的方式运行数据库,您需要识别长时间查询,隔离它们,检查查询执行计划,分析各个执行步骤,并根据需要更改这些步骤,以提高系统的性能。
如果您希望收集有关性能和调优以及如何分析PL/SQL Code的进一步知识,请查看本课程Oracle PL/SQL 11g -高级.如果你想在你的帽子上再添些羽毛,那么Microsoft SQL Server 2012认证培训考试70-461将帮助您学习和准备MCSA或MCSE认证考试。