作为数据库管理员,您可能对接到大量关于在线性能低下的电话感到沮丧。如果系统反应迟钝或滞后,提高数据库性能的最佳方法是进行优化和调整活动。性能调整可以帮助您识别瓶颈并确保您的基础设施能够管理增加的负载。
如果您需要提高数据库性能,您可以采取多种措施来预防和纠正可能出现的问题。以下调优技巧可帮助您优化数据库性能并维护全面运行的环境。本指南包括MySQL、SQL Server 和 Oracle 的性能改进数据库技巧。
提高数据库性能的最有效方法是实施正确的数据库性能分析和监控工具。SolarWinds® Database Performance Analyzer (DPA)和Database Performance Monitor (DPM)可以帮助您提高 MySQL 性能、Oracle 数据库性能和SQL Server 性能。这些工具用途广泛、先进且用户友好。
- 如何提高数据库性能
- 如何使用 DPA 和 DPM 提高数据库性能
- 开始使用性能改进数据库技巧
如何提高数据库性能
1. 实施基线
维护已建立的性能基线是有效调整的一个关键方面,因为它为您提供了问题发生时的参考点。基线可帮助您快速轻松地确定高峰使用期,从而使您能够设置性能目标并准确了解系统功能。始终如一地衡量现有性能将提供您的数据库应该如何执行的准确预期。这在调整将来可能出现的瓶颈时很有用。
2. 使用自动工作负载存储库 (AWR) 工具
如果您希望提高 Oracle 数据库的性能,请确保您使用自动负载存储库 (AWR) 功能作为 Oracle 监控工具。AWR 收集、处理和维护性能统计数据,让您每天深入了解数据库的健康状况。这使您可以使用 Oracle 提供的自动数据库诊断监视器 (ADDM) 获得对 AWR 统计数据的可操作见解。通过结合使用 AWR 和 ADDM,您可以显着提高 Oracle 数据库性能,增强您的调优能力,并从长远来看节省时间和金钱。
3. 创建最优索引
如果操作得当,索引可以帮助您优化查询执行时间并提高数据库性能。索引实现了一种数据结构,可帮助您保持井井有条并使查找数据更加容易。索引可加快数据检索过程,提高效率并节省您的时间和精力。
4.进行SQL调优
SQL 被广泛认为是一种消息语言,因为发送查询时会返回数据。但是,客户端解决方案通常会创建低效的 SQL 语句,这会对数据库的性能产生负面影响。在进行性能调整时,请仔细考虑消耗大量系统资源的 SQL。如果您正在尝试提高 Oracle 数据库性能,您可以利用 Oracle SQL 工具,如查询优化器。通过关注您的 SQL 处理引擎,您可以增强性能调整,确保您的 SQL 正常工作。
如果您希望提高 SQL Server 性能或提高 MySQL 性能,那么利用查询优化器仍然很有用。在大多数情况下,性能问题是由编写不当的 SQL 查询引起的。当您尝试优化这些查询时,您会遇到一些障碍。这可能包括在使用 IN 或 EXISTS 之间进行选择,以及决定是编写连接查询还是子查询。查询优化器是具有成本效益的替代咨询服务,可以显着加快 SQL 查询速度。许多查询优化器甚至会解释他们的建议,帮助您提高查询优化技能。
5. 检查你的统计数据
在对 SQL Server、MySQL 或 Oracle 进行性能调优时,定期检查统计信息至关重要。您应该始终能够访问数据库、操作系统和应用程序指标的完整汇编,因为性能调整远不止是纠正性能问题。性能调优是一个重要的维护组件,应该在应用程序的整个生命周期中执行。为实现这一目标,您应该不断检查您的统计数据并改进收集和展示它们的过程,以随着公司的变化和发展提高效率。
性能问题的症状通常可以在数据中识别出来,这就是为什么不要忽视统计数据的根本原因——它们在您的性能调优效率中起着关键作用。
6.优化CPU利用率
如果您的数据库的诊断功能无法解决特定问题,您可能需要进行手动性能调整过程。在调查此类问题时,请确保您的 CPU 得到正确利用。首先检查用户空间中的 CPU 使用率。这将验证当前是否有任何非数据库任务正在消耗 CPU,这将限制共享 CPU 资源的数量。一旦 CPU 使用率最终确定,纠正性能问题就会变得容易得多。这也有助于澄清您的决策。
7.更新你的数据库版本
无论您是想提高 MySQL、Oracle 还是 SQL Server 数据库的性能,保持最新都是至关重要的。一个查询在旧版本中可能比在新版本中执行得更好,但作为一般规则,新版本往往会执行得更好。因此,最新的系统可能会体验到更稳定的性能。
8.考虑升级CPU
正如本指南已经提到的,您的 CPU 越好,您的数据库性能就会越快、越高效。出于这个原因,如果您的数据库没有正常运行,您应该考虑升级到更高级别的 CPU 单元。如果您的 CPU 更强大,则在处理多个请求和应用程序时它会承受更少的压力。此外,在评估您的 CPU 性能时,您必须跟踪所有性能方面。这应该包括 CPU 就绪时间,它显示您的系统尝试使用 CPU 但由于 CPU 资源被其他方式占用而无法使用的时间。
9.分配更多内存
与 CPU 不足一样,内存不足也会影响数据库的效率。如果没有足够的可用内存,数据库可能无法执行要求它执行的操作,从而导致数据库性能下降。为数据库提供更多可用内存将提高性能和整体系统效率。
要确定是否需要分配更多内存,请查看系统有多少页面错误。如果故障数量很高(即数千),则表明您的主机可用内存空间不足。因此,在尝试提高数据库性能时,您应该考虑总共有多少内存以及页面错误的数量。此过程将使您深入了解分配额外的内存是否会提高效率。
10.考虑碎片整理
如果您的数据库运行缓慢,数据碎片整理可能是一个有效的途径。当大量记录写入数据库并随着时间流逝,这些记录可能会在内部数据文件和磁盘本身上变得碎片化。磁盘碎片整理允许将相关数据组合在一起,从而加速 I/O 相关操作。这对数据库性能和查询性能有直接影响。确保在运行数据库时有足够的磁盘空间也很重要。如果您想显着提高数据库性能,您应该将磁盘碎片整理与确保有足够的磁盘空间可用结合起来。
11.使用正确的磁盘类型
仅从一个查询中检索结果可能需要从磁盘进行数百万次 I/O 操作。所需的操作量直接取决于查询需要访问以进行处理的数据量以及从查询返回的数据量。因此,服务器中的磁盘类型会对查询性能产生显着影响。使用 SSD 磁盘可以提高查询性能和数据库性能。
12. 查看访问权限
一旦您确定您的数据库硬件是健康的,您应该检查哪些应用程序正在访问您的数据库。如果您的某个服务或应用程序性能不佳,请务必不要假设是哪个应用程序导致了性能问题。多种因素可能导致或影响较差的数据库性能。整个数据库可能被感染,或者单个客户端可能性能不佳。
如果您的所有数据库客户端都遭受性能不佳的困扰,您可能需要确认您的主机是健康的。在这种情况下,您的硬件可能难以应付负载。如果单个服务的响应时间很短,请深入了解该服务的指标以确定可能导致问题的原因。
13. 了解服务实例的负载和响应时间
如果单个服务的数据库性能不佳,请仔细查看该服务如何与数据库通信。您应该调查以下内容:
- 执行了哪些查询?
- 查询返回多少行?
- 查询执行的频率(每个请求)?
- 如果您正在运行单个服务的多个实例,是所有实例都受到影响还是只有一个实例受到影响?
- 是否有任何理由说明每个请求应该多次执行单个查询?
请记住,在数据库级别出现的问题可能根源于其他地方,问题的根源可能与数据库的访问方式有关。一旦您考虑了每个请求调用查询的频率,您可能会发现可以通过增强服务的数据库缓存来减少数据库查询的数量。如果您找到一个很好的理由让单个查询在每个请求中执行多次,那么应用智能缓存策略可能是有利的。在某些情况下,这些策略可以显着提高性能。
14. 不要忽视网络
虚拟化基础架构的物理限制很容易被忽视,但它们在性能方面发挥着重要作用。不幸的是,电缆、路由器和其他硬件可能会出现故障。如果在几个月没有任何问题的情况下突然出现问题,那么您的基础设施可能遇到了物理问题。要确认这一点,您应该检查您的路由器、电缆和网络接口。您应该在出现问题的第一个迹象时检查这些组件,这样您就有最大的机会在它影响您的业务之前修复它。
通常,压力过大或过载的进程会因为资源耗尽而丢弃数据包。如果您的网络问题不是由硬件问题引起的,则进程级别的可见性可能是识别故障组件的有用方法。
如何使用 DPA 和 DPM 提高数据库性能
本文中列出的大部分技巧可用于提高 MySQL 性能、Oracle 数据库性能和 SQL Server 性能。正确的专业软件可以帮助您持续管理这些实践的实施,从而提高数据库性能,而不会让您负担过重。全面的专业工具,如 SolarWinds DPA 和 DPM,可监控关键性能指标并让您访问一系列诊断功能。使用正确的数据库监控解决方案,您可以深入了解您的数据库并可以利用优化实用程序来提高性能。
SolarWinds 数据库性能分析器 (DPA)
SolarWinds DPA 是一个跨平台的数据库性能调整和优化工具,支持PostgreSQL、MySQL、Amazon Aurora、IBM DB2、SAP ASE、MariaDB、Oracle、Microsoft SQL Server 和 Azure SQL 数据库。DPA 使用响应时间分析方法来调整 SQL 和查询性能,使您能够提供显着的结果。响应时间分析,也称为等待时间分析,分析完成所需操作所花费的实际时间,而不是根据服务器健康状况进行估计。
该数据库管理软件有助于使资源配置与数据库性能保持一致,使您能够更加规范地推荐硬件。DPA 具有SQL 查询分析器,可用于识别资源配置如何影响数据库响应时间。这些功能还使开发人员能够以独特的视角了解VMware 基础架构及其对数据库性能的影响。
另一个有用的 DPA 功能是历史存储库,它突出显示了很容易进行SQL 调优的趋势和异常。DPA 使用历史数据来帮助您识别当前改进的机会,提供从五秒前到五年前的广泛数据。这种洞察力可帮助您快速解决性能问题。
DPA 提供一系列令人印象深刻的高级功能,包括由机器学习提供支持的异常检测。它提供实时洞察力、索引和查询优化顾问的专家建议,以及同时监控多个活动会话的能力。凭借能够快速隔离复杂问题根本原因的多维性能分析,以及对 SolarWinds PerfStack ™和 AppStack ™仪表板的集成支持,DPA 是一款功能强大的多功能工具。
DPA 也是用户友好的,具有动态和直观的用户界面。它为小型和大型公司提供成本效益和可扩展性,适合经验最少的数据库管理员。您可以在此处访问 DPA 的 14 天免费试用版。
SolarWinds 数据库性能监视器 (DPM)
SolarWinds DPA 更加注重分析,而 DPM 则提供深入的监控功能。该工具为您提供了一种高效便捷的方式来实时监控数据库的日常性能。使用 DPM,检查很简单,并且您可以获得专家指导,填补了监控堆栈中潜在的关键空白。
DPA 提供 24/7 实时监控,帮助您实现减少失败部署、可用性、部署频率、MTTD、MTTR、变更提前期等的 KPI 目标。该工具会向您发送有关服务器配置更改和性能不佳查询的即时建议。DPM 是应用程序开发的理想选择,并且作为保持数据库健康的一种方式在 DevOps 团队中很受欢迎。
DPA 也是一种灵活的工具,允许您构建自定义仪表板,因此您可以将优先事项放在首位和中心位置。仪表板具有数据库和系统的运行状况摘要,让您可以跟踪指标并观察趋势。它们允许您探索性能异常值、管理资源容量等等。
DPM 可帮助您降低变更失败率、加快恢复速度,并通过 DPM Notebooks 在团队中分享您学到的知识。此实用程序允许您创建和共享包含文本、代码片段、链接和图像的事后分析文档。借助 DPM,您可以通过将查询响应或行为与系统指标关联起来,深入了解查询如何影响您的数据库。该工具还允许您隔离异常行为和潜在影响因素,以及探索查询详细信息和性能(包括执行计划、示例等)。
此 SaaS 平台具有基于 Web 的用户友好型用户界面,使 DPM 适合经验不足的用户。与 DPA 一样,DPM 提供跨平台支持,包括 MySQL、MongoDB、PostgreSQL、Redis和 Amazon Aurora。DPM 有14 天的免费试用期。
开始使用性能改进数据库技巧
实施本指南中提到的技巧而又不让您的团队工作量过大的最有效方法是利用专业软件。虽然有大量可用的数据库监控和分析工具,但强烈推荐使用 SolarWinds DPA 和 DPM。这些工具是可扩展的、用户友好的,并提供了一系列合适的实用程序,旨在让您以最小的努力显着提高数据库性能。