mysql性能优化学习笔记-参数介绍及优化建议

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySQL服务器参数介绍mysql参数介绍(客户端中执行),尽量只修改session级别的参数。全局参数(新连接的session才会生效,原有已经连接的session不生效)set global 参数名=参数值;set @@global.

MySQL服务器参数介绍

mysql参数介绍(客户端中执行),尽量只修改session级别的参数。

全局参数(新连接的session才会生效,原有已经连接的session不生效)

  • set global 参数名=参数值;
  • set @@global.参数名 :=参数值;

会话参数

  • set [session] 参数名=参数值;
  • set @@session.参数名 :=参数值;

内存配置相关参数

  • 确定可以使用的内存的上限
  • 确定mysql每个连接使用的内存
sort_buffer_size:需要注意,每个连接分配指定大小的内存;

join_buffer_size;

read_buffer_size;

read_rnd_buffer_size。

上述都为每个进程分别进行设置,所以要注意配置大小。
  • 确定需要为操作系统保留多少内存
  • 如何为缓存池分配内存
Innodb_buffer_pool_size:总内存 - (每个线程所需内存 * 连接数) - 系统保留内存

key_buffer_size:主要用于myisam引擎

IO相关配置参数

Innodb I/O相关配置

  • Innodb_log_file_size:单个日志文件大小
  • Innodb_log_files_in_group:日志文件的个数
  • 事务日志总大小:
Innodb_log_files_in_group * Innodb_log_file_size
  • Innodb_log_buffer_size:日志缓冲区大小
  • Innodb_flush_log_at_trx_commit:日志刷新的频率
0:每秒进行一次log写入cache,并flush log到磁盘。如果mysql关闭或重启会导致至少1秒日志的丢失。

1:『默认』,在每次事务提交执行log写入cache,并flush log到磁盘。保证不会导致事务日志的丢失。

2:【建议】,每次事务提交,执行log数据写入到cache。每秒执行一次flush log到磁盘。
  • Innodb_flush_method=O_DIRECT:Innodb刷新的方式。
  • Innodb_file_per_table=1:表空间。强烈建议启用。
  • Innodb_doublewrite=1:

Myisam I/O相关配置

  • delay_key_write
OFF:每次写操作后刷新新建缓冲区的脏块到磁盘
ON:只对建表是指定了delay_key_write选项的表使用延迟刷新。
ALL:对所有MYISAM表使用延迟键写入。会导致表损坏,使用相关命令进行修复。

安全相关配置参数

  • expire_logs_days指定自动清理binlog的天数
  • max_allowed_packet控制mysql可以接收的包的大小
  • skip_name_resolve禁用DNS查找
  • sysdate_is_now确保sysdate和now返回的日期是一样的。(同一条sql同时使用sysdate返回的结果有可能是不同的,因而建议启用)
  • read_only禁止非super用户写权限:在做主从复制时,建议备库启用这个配置项。
  • skip_slave_start警用slave自动恢复,(从服务器中进行配置)
  • sql_mode设置mysql所使用的sql模式。(建议不要在生产换环境中调整这个值,有可能会导致系统不可用)
strict_trans_tables

no_engine_subtitution

no_zero_date

no_zero_in_date

only_full_group_by:select字句需要全部列出group by字段,否则报错。

其它常用配置参数

  • sync_binlog控制mysql如何向磁盘中刷新binlog
  • tmp_table_size和max_heap_table_size控制内存临时表的大小。两个值应保持一致
  • max_connections允许最大连接数,一般设置为2000都可以。

数据库设计对性能的影响(所有优化的重点,其它的所有优化加起来都未必有数据库设计优化对性能的影响大)

  • 过分的反范式话为表建立太多的列
  • 过多的范式话造成太多表的关联(最多只允许61个表关联)
  • 在OLTP中使用不恰当的分区表
  • 使用外键保证数据的完整性(性能很低,建议不要使用外键约束)

优化建议

性能优化顺序

  • 数据库结构和sql语句优化
  • 数据库引擎的选择和参数配置(不要混合使用存储引擎)
  • 系统选择及优化
  • 硬件升级
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
MySQL进阶之性能优化与调优技巧
MySQL进阶之性能优化与调优技巧
|
21天前
|
存储 SQL 关系型数据库
MySQL性能优化
MySQL性能优化
13 0
|
3月前
|
存储 SQL 关系型数据库
MySQL相关(四)- 性能优化不得不知道的事情
MySQL相关(四)- 性能优化不得不知道的事情
27 5
|
9月前
|
SQL 缓存 监控
mysql的性能优化
MySQL性能优化是提高数据库系统性能和响应速度的一系列技术和策略。
64 0
|
存储 SQL 缓存
MySQL性能优化--优化数据库结构之优化数据大小
MySQL性能优化--优化数据库结构之优化数据大小
88 0
|
存储 固态存储 关系型数据库
MySQL性能优化--优化数据库结构之优化数据类型
MySQL性能优化--优化数据库结构之优化数据类型
86 0
|
SQL 存储 缓存
|
SQL 关系型数据库 MySQL
关于MySQL性能优化方式,这一篇就够!
关于MySQL性能优化方式,这一篇就够!
80 0
关于MySQL性能优化方式,这一篇就够!
|
SQL 存储 缓存
MySQL性能优化的【4工具+10技巧】
MySQL:4种性能优化定位工具+10大优化技巧,助力快速、解决定位生产性能问题!
340 0
|
SQL 存储 关系型数据库
Mysql从入门到入神之(六)查询性能优化
前言 文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820… 种一棵树最好的时间是十年前,其次是现在
168 0