数据库优化 - 实例优化

简介: 从网上去搜数据库优化基本都是从SQL层次进行优化的,很少有提及到数据库本身的实例优化。就算有也都是基于某个特定数据库的实例优化,本文涵盖目前市面上所有主流数据库的实例优化(Oralce、MySQL、POSTGRES、达梦),按照文章的配置能够将你数据库性能用到80%或以上。

数据库优化方法论


这部分为理论知识,不感兴趣的同学可以直接跳到后面参数配置部分。


数据库优化目标


根据角色的不同,数据库优化分为以下几个目标:


  • 业务角度(关键用户): 减少用户页面响应时间


  • 数据库角度(开发): 减少数据库SQL响应时间


  • 数据库服务器角度(运维): 充分使用数据库服务器物理资源 减少数据库服务器CPU使用率 减少数据库服务器IO使用率 减少数据库服务器内存使用率


数据库优化指标


SQL平均响应时间变短


  • 优化前:数据库平均响应时间500ms


  • 优化目标:数据库平均响应时间200ms


数据库服务器CPU占用率变少


  • 优化前:数据库高峰期CPU使用率70%


  • 优化目标:数据库高峰期CPU使用率50%


数据库服务器IO使用率变低


  • 优化前:数据库IO WAIT为30%


  • 优化目标:数据库IO WAIT低于10%


数据库优化误区


在进行数据库优化的时候可能会有以下几个误区:


优化之前一定要深入了解数据库内部原理 优化是有“套路”的,照着这些“套路”你也可以很好的完成数据库优化


不断调整数据库参数就可以最终实现优化 有时候设计不合理怎么调整参数都不行


不断调整操作系统参数就可以最终实现优化 同上


数据库性能由应用、数据库架构决定,与应用开发关系不大 恰恰相反,应用开发的关系很大


必须要做读写分离,必须要弄分库分表 数据量级只有达到一定的比例才有必要做读写分离,分表分库,否则徒增复杂度。一般来说Oracle的单表量级可以达到1亿,MySQL到1000万~2000万


数据库优化流程


完整的数据库优化流程如下:



1.png


首先需要尽可能的了解优化问题,收集问题期间系统信息并做好存档。根据当前系统问题表现制定优化目标并与客户沟通目标达成一致;通过一系列工具分析系统问题,制定优化方案,方案评审完成后由各负责人员进行实施。若达到优化目标则编写优化报告,否则需要重新制定优化方案。


数据库实例优化


数据库实例优化遵循三句口诀:日志不能小、缓存足够大、连接要够用。


数据库事务提交后需要将事务对数据页的修改刷( fsync)到磁盘上,才能保证数据的持久性。这个刷盘,是一个随机写,性能较低,如果每次事务提交都要刷盘,会极大影响数据库的性能。数据库在架构设计中都会采用如下两个优化手法:


  • 先将事务写到日志文件RedoLog(WAL),将随机写优化成顺序写


  • 加一层缓存结构Buffer,将每次写优化成批量写


所以日志跟缓存对数据库实例尤其重要。而连接如果不够用,数据库会直接抛出异常,系统无法访问。


数据库参数优化


主流数据库架构都有如下的共同点:


  • 数据缓存


  • SQL解析区


  • 排序内存


  • REDO及UNDO


  • 锁、LATCH、MUTEX


  • 监听及连接


  • 文件读写性能


接下来我们根据不同的数据库调整参数以使数据库达到最佳性能。


ORACLE


image.png


MYSQL(INNODB)


image.png


POSTGRES


image.png


达梦数据库


image.png


总结


数据库的优化手法太多太多,有换磁盘阵列升级硬件,有改写SQL脚本添加索引,还有数据库参数调整优化性能,甚至还可以调整数据库架构。本文从数据库本身参数进行调优,大家根据上面几张表中的参数进行调整基本能达到数据库最佳性能的80%。

目录
相关文章
|
12天前
|
存储 监控 安全
数据库多实例的部署与配置方法
【10月更文挑战第23天】数据库多实例的部署和配置需要综合考虑多个因素,包括硬件资源、软件设置、性能优化、安全保障等。通过合理的部署和配置,可以充分发挥多实例的优势,提高数据库系统的运行效率和可靠性。在实际操作中,要不断总结经验,根据实际情况进行调整和优化,以适应不断变化的业务需求。
|
12天前
|
负载均衡 网络协议 数据库
选择适合自己的数据库多实例负载均衡技术
【10月更文挑战第23天】选择适合自己的数据库多实例负载均衡技术需要全面考虑多种因素。通过深入的分析和评估,结合自身的实际情况,能够做出明智的决策,为数据库系统的高效运行提供有力保障。
|
12天前
|
存储 负载均衡 监控
数据库多实例的深入解析
【10月更文挑战第24天】数据库多实例是一种重要的数据库架构方式,它为数据库的高效运行和灵活管理提供了多种优势。在实际应用中,需要根据具体的业务需求和技术环境,合理选择和配置多实例,以充分发挥其优势,提高数据库系统的性能和可靠性。随着技术的不断发展和进步,数据库多实例技术也将不断完善和创新,为数据库管理带来更多的可能性和便利。
84 57
|
2天前
|
存储 SQL 数据库
深入浅出后端开发之数据库优化实战
【10月更文挑战第35天】在软件开发的世界里,数据库性能直接关系到应用的响应速度和用户体验。本文将带你了解如何通过合理的索引设计、查询优化以及恰当的数据存储策略来提升数据库性能。我们将一起探索这些技巧背后的原理,并通过实际案例感受优化带来的显著效果。
11 4
|
3天前
|
SQL druid 数据库
如何进行数据库连接池的参数优化?
数据库连接池参数优化包括:1) 确定合适的初始连接数,考虑数据库规模和应用需求;2) 调整最大连接数,依据并发量和资源状况;3) 设置最小空闲连接数,平衡资源利用和响应速度;4) 优化连接超时时间,确保系统响应和资源利用合理;5) 配置连接有效性检测,定期检查连接状态;6) 调整空闲连接回收时间,适应访问模式并配合数据库超时设置。
|
12天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
23 7
|
8天前
|
SQL 缓存 监控
数据库优化
【10月更文挑战第29天】数据库优化
18 1
|
12天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
16 5
|
8天前
|
缓存 关系型数据库 MySQL
如何优化 MySQL 数据库的性能?
【10月更文挑战第28天】
28 1
|
10天前
|
XML Java 数据库连接
如何使用HikariCP连接池来优化数据库连接管理
在Java应用中,高效管理数据库连接是提升性能的关键。本文介绍了如何使用HikariCP连接池来优化数据库连接管理。通过引入依赖、配置参数和获取连接,你可以显著提高系统的响应速度和吞吐量。 示例代码展示了从配置到使用的完整流程,帮助你轻松上手。
40 3
下一篇
无影云桌面