数据库优化 - 实例参数优化

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 数据库优化 - 实例参数优化

一个新安装的数据库使用默认的参数配置,那么数据库的性能很难达到生产要求。要想更好的发挥数据库性能,对数据库参数优化是必不可少的。

本文涵盖目前市面上所有主流数据库的优化配置(Oralce、MySQL、POSTGRES、达梦),掌握本文的参数的配置可以让你数据库飞起来,更能让你成为别人眼中的数据库高手!


数据库优化方法论


数据库优化目标

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

  • 业务角度(关键用户):
    减少用户页面响应时间
  • 数据库角度(开发):
    减少数据库SQL响应时间
  • 数据库服务器角度(运维):
    充分使用数据库服务器物理资源
    减少数据库服务器CPU使用率
    减少数据库服务器IO使用率
    减少数据库服务器内存使用率

数据库优化指标


要优化数据库,我们得先给本次优化建立一个优化目标,也就是优化指标。一般来说数据库优化可以建立以下几个指标:

  • SQL平均响应时间变短
  • 优化前:数据库平均响应时间500ms
  • 优化目标:数据库平均响应时间200ms
  • 数据库服务器CPU占用率变少
  • 优化前:数据库高峰期CPU使用率70%
  • 优化目标:数据库高峰期CPU使用率50%
  • 数据库服务器IO使用率变低
  • 优化前:数据库IO WAIT为30%
  • 优化目标:数据库IO WAIT低于10%

数据库优化误区

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

  • 优化之前一定要深入了解数据库内部原理
    其实数据库优化是有“套路”的,照着这些“套路”你也可以很好的完成数据库优化
  • 不断调整数据库参数就可以最终实现优化
    有时候设计不合理怎么调整参数都不行
  • 不断调整操作系统参数就可以最终实现优化
    同上
  • 数据库性能由应用、数据库架构决定,与应用开发关系不大
    恰恰相反,数据库性能与应用开发的关系很大
  • 必须要做读写分离,必须要弄分库分表
    数据量级只有达到一定的比例才有必要做读写分离,分表分库,否则徒增复杂度。一般来说Oracle的单表量级可以达到1亿,MySQL到1000万~2000万

数据库优化流程

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

首先我们需要尽可能的了解优化问题,收集问题期间系统信息并做好存档。

根据当前系统问题表现制定优化目标并与客户沟通目标达成一致;

通过一系列工具分析系统问题,制定优化方案,方案评审完成后由各负责人员进行实施。

若达到优化目标则编写优化报告,否则需要重新制定优化方案。


数据库实例优化


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

在数据库事务提交后需要将事务对数据页的修改刷( fsync)到磁盘上,才能保证数据的持久性。这个刷盘,是一个随机写,性能较低,如果每次事务提交都要刷盘,会极大影响数据库的性能。

所有数据库在架构设计中都会采用如下两个优化手法:

  • 先将事务写到日志文件RedoLog(WAL),将随机写优化成顺序写
  • 加一层缓存结构Buffer,将每次写优化成顺序写

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

数据库参数优化

主流数据库架构都有如下几个共同关注点:

  • 数据缓存
  • SQL解析区
  • 排序内存
  • redo log及undo log
  • 锁、LATCH、MUTEX
  • 监听及连接
  • 文件读写性能

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

ORACLE

参数分类 参数名 参数值 备注
数据缓存 SGA_TAGET、MEMORY_TARGET 物理内存70-80% 越大越好
数据缓存 DB_CACHE_SIZE 物理内存70-80% 越大越好
SQL解析 SHARED_POOL_SIZE 4-16G 不建议设置过大
监听及连接 PROCESSES、SESSIONS、OPEN_CURSORS 根据业务需求设置 一般为业务预估连接数的120%
其他 SESSION_CACHED_CURSORS 大于200 软软解析


MYSQL(INNODB)

参数分类 参数名 参数值 备注
数据缓存 INNODB_BUFFER_POOL_SIZE 物理内存50-80% 一般来说越大性能越好
日志相关 Innodb_log_buffer_size 16-32M 根据运行情况调整
日志相关 sync_binlog 1、100、0 1安全性最好
监听及连接 max_connections 根据业务情况调整 可以预留一部分值
文件读写性能 innodb_flush_log_at_trx_commit 2 安全和性能的折中考虑
其他 wait_timeout,interactive_timeout 28800 避免应用连接定时中断


POSTGRES

参数分类 参数名 参数值 备注
数据缓存 SHARED_BUFFERS 物理内存10-25%
数据缓存 CACHE_BUFFER_SIZE 物理内存50-60%
日志相关 wal_buffer 8-64M 不建议设置过大过小
监听及连接 max_connections 根据业务情况调整 一般为业务预估连接数的120%
其他 maintenance_work_mem 512M或更大
其他 work_mem 8-16M 原始配置1M过小
其他 checkpoint_segments 32或者更大


达梦数据库

参数分类 参数名 参数值 备注
数据缓存 MEMROY_TARGET、MEMROY_POOL 物理内存90%
数据缓存 BUFFER 物理内存60% 数据缓存
数据缓存 MAX_BUFFER 物理内存70% 最大数据缓存
监听及连接 max_sessions 根据业务需求设置 一般为业务预估连接数的120%


小结


数据库的优化手法有很多,比如有换磁盘阵列升级硬件的,有改写SQL脚本添加索引的,还有数据库参数调整优化性能,甚至还可以业务架构来对数据库进行优化。

本文从数据库参数的角度进行调优,大家根据上面几张表中的配置对数据库参数调整后可以让数据库性能达到数据库最佳性能的80%。


看完本文记得给我个三连哟:点赞,转发,评论咱们下期见!

收藏 等于白嫖点赞 才是真情!

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
1月前
|
存储 人工智能 NoSQL
AI大模型应用实践 八:如何通过RAG数据库实现大模型的私有化定制与优化
RAG技术通过融合外部知识库与大模型,实现知识动态更新与私有化定制,解决大模型知识固化、幻觉及数据安全难题。本文详解RAG原理、数据库选型(向量库、图库、知识图谱、混合架构)及应用场景,助力企业高效构建安全、可解释的智能系统。
|
2月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
5月前
|
关系型数据库 MySQL 数据库连接
Django数据库配置避坑指南:从初始化到生产环境的实战优化
本文介绍了Django数据库配置与初始化实战,涵盖MySQL等主流数据库的配置方法及常见问题处理。内容包括数据库连接设置、驱动安装、配置检查、数据表生成、初始数据导入导出,并提供真实项目部署场景的操作步骤与示例代码,适用于开发、测试及生产环境搭建。
229 1
|
1月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
180 6
|
2月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
532 5
|
3月前
|
存储 关系型数据库 MySQL
【赵渝强老师】MySQL数据库的多实例环境
MySQL多实例是指在一台服务器上运行多个MySQL服务,通过不同端口提供独立的数据服务。各实例共享安装程序,但使用各自的配置文件和数据文件,实现资源高效利用。本文详细介绍了如何通过“mysqld_multi”工具配置和启动多个MySQL实例,并演示了目录创建、初始化、配置文件修改及实例启动等操作步骤。
156 1
|
4月前
|
机器学习/深度学习 SQL 运维
数据库出问题还靠猜?教你一招用机器学习优化运维,稳得一批!
数据库出问题还靠猜?教你一招用机器学习优化运维,稳得一批!
161 4
|
8月前
|
SQL 关系型数据库 MySQL
如何优化SQL查询以提高数据库性能?
这篇文章以生动的比喻介绍了优化SQL查询的重要性及方法。它首先将未优化的SQL查询比作在自助餐厅贪多嚼不烂的行为,强调了只获取必要数据的必要性。接着,文章详细讲解了四种优化策略:**精简选择**(避免使用`SELECT *`)、**专业筛选**(利用`WHERE`缩小范围)、**高效联接**(索引和限制数据量)以及**使用索引**(加速搜索)。此外,还探讨了如何避免N+1查询问题、使用分页限制结果、理解执行计划以及定期维护数据库健康。通过这些技巧,可以显著提升数据库性能,让查询更高效流畅。
|
2月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
128 3

热门文章

最新文章

下一篇
oss云网关配置