mysql8性能参数查看及优化

mysql的整体性能和基本环境和参数配置都有很大的关系,在特定项目环境下,mysql的运行环境就是确定的,比如cpu配置,内存大小,磁盘类型等。为了充分利用环境提供的处理能力,就有必要对相关参数进行优化配置,以达到性能优化的目的。

当然,参数值的优化配置也是需要和具体的环境信息进行综合考虑的,比如对于16G内存的服务器和8G以及4G内存的服务器,优化后的参数值通常是不一样的。除此之外,还需要根据业务特定进行优化,比如对于需要快速响应的业务需求和批处理业务需求,可能在参数优化上的侧重点就会不一样。

下面对相关参数,分别列举了云生产环境、测试环境和本地开发环境,对比之后,就可以找到合适的参数配置:

1. innodb_buffer_pool_size(*)

innodb_buffer_pool_size一般为内存的70%~80%

innodb_buffer_pool_size = 256MB

查看方法:

-- 云生产环境 cloud mysql:
mysql> SELECT 'innodb_buffer_pool_size' AS name, @@innodb_buffer_pool_size/1024/1024 AS 'value(MB)';
+-------------------------+---------------+
| name                    | value(MB)     |
+-------------------------+---------------+
| innodb_buffer_pool_size | 2868.00000000 |
+-------------------------+---------------+
1 row in set (0.00 sec)-- 测试环境 192.168.4.125:
mysql> SELECT 'innodb_buffer_pool_size' AS name, @@innodb_buffer_pool_size/1024/1024 AS 'value(MB)';
+-------------------------+--------------+
| name                    | value(MB)    |
+-------------------------+--------------+
| innodb_buffer_pool_size | 128.00000000 |
+-------------------------+--------------+
1 row in set (0.02 sec)-- 本地开发环境 localhost
mysql> SELECT 'innodb_buffer_pool_size' AS name, @@innodb_buffer_pool_size/1024/1024 AS 'value(MB)';
+-------------------------+------------+
| name                    | value(MB)  |
+-------------------------+------------+
| innodb_buffer_pool_size | 8.00000000 |
+-------------------------+------------+
1 row in set

2. join_buffer_size

join_buffer_size = 16M

-- 云生产环境 cloud mysql:mysql> SELECT 'join_buffer_size' AS name, @@join_buffer_size/1024/1024 AS 'value(MB)';
+------------------+------------+
| name             | value(MB)  |
+------------------+------------+
| join_buffer_size | 0.34375000 |
+------------------+------------+
1 row in set (0.00 sec)-- 测试环境 192.168.4.125:mysql> SELECT 'join_buffer_size' AS name, @@join_buffer_size/1024/1024 AS 'value(MB)';
+------------------+------------+
| name             | value(MB)  |
+------------------+------------+
| join_buffer_size | 0.25000000 |
+------------------+------------+
1 row in set (0.00 sec)

3. query_cache_size

query_cache_size = 64M

-- 云生产环境cloud mysql:mysql> SELECT 'query_cache_size' AS name, @@query_cache_size/1024/1024 AS 'value(MB)';
+------------------+------------+
| name             | value(MB)  |
+------------------+------------+
| query_cache_size | 3.00000000 |
+------------------+------------+
1 row in set (0.00 sec)-- 测试环境192.168.4.125:mysql> SELECT 'query_cache_size' AS name, @@query_cache_size/1024/1024 AS 'value(MB)';
+------------------+------------+
| name             | value(MB)  |
+------------------+------------+
| query_cache_size | 1.00000000 |
+------------------+------------+
1 row in set, 1 warning (0.00 sec)

4. sort_buffer_size

配置文件:

sort_buffer_size = 16M

-- 云生产环境cloud mysql:mysql> SELECT 'sort_buffer_size' AS name, @@sort_buffer_size/1024/1024 AS 'value(MB)';
+------------------+------------+
| name             | value(MB)  |
+------------------+------------+
| sort_buffer_size | 0.68750000 |
+------------------+------------+
1 row in set (0.00 sec)-- 测试环境192.168.4.125:mysql> SELECT 'sort_buffer_size' AS name, @@sort_buffer_size/1024/1024 AS 'value(MB)';
+------------------+------------+
| name             | value(MB)  |
+------------------+------------+
| sort_buffer_size | 0.50000000 |
+------------------+------------+
1 row in set (0.00 sec)-- 本地开发环境localhostmysql> SELECT 'sort_buffer_size' AS name, @@sort_buffer_size/1024/1024 AS 'value(MB)';
+------------------+------------+
| name             | value(MB)  |
+------------------+------------+
| sort_buffer_size | 0.25000000 |
+------------------+------------+
1 row in set

5. read_buffer_size

配置文件:

read_buffer_size = 16M

-- 云生产环境cloud mysql:mysql> SELECT 'read_buffer_size' AS name, @@read_buffer_size/1024/1024 AS 'value(MB)';
+------------------+------------+
| name             | value(MB)  |
+------------------+------------+
| read_buffer_size | 0.68750000 |
+------------------+------------+
1 row in set (0.00 sec)-- 测试环境192.168.4.125:mysql> SELECT 'read_buffer_size' AS name, @@read_buffer_size/1024/1024 AS 'value(MB)';
+------------------+------------+
| name             | value(MB)  |
+------------------+------------+
| read_buffer_size | 0.25000000 |
+------------------+------------+
1 row in set (0.00 sec)-- 本地开发环境localhostmysql> SELECT 'read_buffer_size' AS name, @@read_buffer_size/1024/1024 AS 'value(MB)';
+------------------+------------+
| name             | value(MB)  |
+------------------+------------+
| read_buffer_size | 0.06250000 |
+------------------+------------+
1 row in set

6. max_connections(*)

配置文件:

max_connections = 768

-- 云生产环境cloud mysql:mysql> SELECT 'max_connections' AS name, @@max_connections AS 'value';
+-----------------+-------+
| name            | value |
+-----------------+-------+
| max_connections |  1712 |
+-----------------+-------+
1 row in set (0.00 sec)-- 测试环境192.168.4.125:mysql> SELECT 'max_connections' AS name, @@max_connections AS 'value';
+-----------------+-------+
| name            | value |
+-----------------+-------+
| max_connections |   151 |
+-----------------+-------+
1 row in set (0.00 sec)-- 本地开发环境localhostmysql> SELECT 'max_connections' AS name, @@max_connections AS 'value';
+-----------------+-------+
| name            | value |
+-----------------+-------+
| max_connections |   151 |
+-----------------+-------+
1 row in set

7. max_allowed_packet(*)

max_allowed_packet = 4M

-- 云生产环境cloud mysql:mysql> SELECT 'max_allowed_packet' AS name, @@max_allowed_packet/1024/1024 AS 'value(MB)';
+--------------------+---------------+
| name               | value(MB)     |
+--------------------+---------------+
| max_allowed_packet | 1024.00000000 |
+--------------------+---------------+
1 row in set (0.00 sec)-- 测试环境192.168.4.125:mysql> SELECT 'max_allowed_packet' AS name, @@max_allowed_packet/1024/1024 AS 'value(MB)';
+--------------------+------------+
| name               | value(MB)  |
+--------------------+------------+
| max_allowed_packet | 1.00000000 |
+--------------------+------------+
1 row in set (0.00 sec)-- 本地开发环境localhostmysql> SELECT 'max_allowed_packet' AS name, @@max_allowed_packet/1024/1024 AS 'value(MB)';
+--------------------+------------+
| name               | value(MB)  |
+--------------------+------------+
| max_allowed_packet | 4.00000000 |
+--------------------+------------+
1 row in set

8. key_buffer_size

key_buffer_size = 128M

-- 云生产环境cloud mysql:mysql> SELECT 'key_buffer_size' AS name, @@key_buffer_size/1024/1024 AS 'value(MB)';
+-----------------+-------------+
| name            | value(MB)   |
+-----------------+-------------+
| key_buffer_size | 16.00000000 |
+-----------------+-------------+
1 row in set (0.00 sec)-- 测试环境192.168.4.125:mysql> SELECT 'key_buffer_size' AS name, @@key_buffer_size/1024/1024 AS 'value(MB)';
+-----------------+-------------+
| name            | value(MB)   |
+-----------------+-------------+
| key_buffer_size | 16.00000000 |
+-----------------+-------------+
1 row in set (0.00 sec)-- 本地开发环境localhostmysql> SELECT 'key_buffer_size' AS name, @@key_buffer_size/1024/1024 AS 'value(MB)';
+-----------------+------------+
| name            | value(MB)  |
+-----------------+------------+
| key_buffer_size | 8.00000000 |
+-----------------+------------+
1 row in set

9. back_log(*)

back_log = 500

-- 云生产环境cloud mysql:mysql> SELECT 'back_log' AS name, @@back_log AS 'value';
+----------+-------+
| name     | value |
+----------+-------+
| back_log |  3000 |
+----------+-------+
1 row in set (0.00 sec)-- 测试环境192.168.4.125:mysql> SELECT 'back_log' AS name, @@back_log AS 'value';
+----------+-------+
| name     | value |
+----------+-------+
| back_log |    80 |
+----------+-------+
1 row in set (0.00 sec)-- 本地开发环境localhostmysql> SELECT 'back_log' AS name, @@back_log AS 'value';
+----------+-------+
| name     | value |
+----------+-------+
| back_log |    80 |
+----------+-------+
1 row in set

10. innodb_flush_log_at_trx_commit

innodb_flush_log_at_trx_commit = 0

事务日志写盘配置

 N=0    每隔一秒,把事务日志缓存区的数据写到日志文件中,以及把日志文件的数据刷新到磁盘上;

 N=1    每个事务提交时候,把事务日志从缓存区写到日志文件中,并且刷新日志文件的数据到磁盘上; 

N=2    每事务提交的时候,把事务日志数据从缓存区写到日志文件中;

-- 云生产环境cloud mysql:mysql> SELECT 'innodb_flush_log_at_trx_commit' AS name, @@innodb_flush_log_at_trx_commit AS 'value';
+--------------------------------+-------+
| name                           | value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit |     1 |
+--------------------------------+-------+
1 row in set (0.00 sec)-- 测试环境192.168.4.125:mysql> SELECT 'innodb_flush_log_at_trx_commit' AS name, @@innodb_flush_log_at_trx_commit AS 'value';
+--------------------------------+-------+
| name                           | value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit |     1 |
+--------------------------------+-------+
1 row in set (0.00 sec)-- 本地开发环境localhostmysql> SELECT 'innodb_flush_log_at_trx_commit' AS name, @@innodb_flush_log_at_trx_commit AS 'value';
+--------------------------------+-------+
| name                           | value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit |     1 |
+--------------------------------+-------+
1 row in set

11. sync_binlog

sync_binlog =  N: 

N>0    每向二进制日志文件写入N条SQL或N个事务后,则把二进制日志文件的数据刷新到磁盘上; 
N=0    不主动刷新二进制日志文件的数据到磁盘上,而是由操作系统决定;

-- 云生产环境cloud mysql:mysql> SELECT 'sync_binlog' AS name, @@sync_binlog AS 'value';
+-------------+-------+
| name        | value |
+-------------+-------+
| sync_binlog |     1 |
+-------------+-------+
1 row in set (0.00 sec)-- 测试环境192.168.4.125:mysql> SELECT 'sync_binlog' AS name, @@sync_binlog AS 'value';
+-------------+-------+
| name        | value |
+-------------+-------+
| sync_binlog |     1 |
+-------------+-------+
1 row in set (0.00 sec)

12. innodb_buffer_pool_instances(*)

mysql innodb的性能与缓冲池的大小有很大的关系。可以通过以下两个参数进行调整。

innodb_buffer_pool_size 和 innodb_buffer_pool_instances

-- 云生产环境cloud mysql:mysql> SELECT 'innodb_buffer_pool_instances' AS name, @@innodb_buffer_pool_instances AS 'value';
+------------------------------+-------+
| name                         | value |
+------------------------------+-------+
| innodb_buffer_pool_instances |     8 |
+------------------------------+-------+
1 row in set (0.00 sec)-- 测试环境192.168.4.125:mysql> SELECT 'innodb_buffer_pool_instances' AS name, @@innodb_buffer_pool_instances AS 'value';
+------------------------------+-------+
| name                         | value |
+------------------------------+-------+
| innodb_buffer_pool_instances |     1 |
+------------------------------+-------+
1 row in set (0.00 sec)

13. innodb_log_buffer_size

innodb_log_buffer_size = 2M

-- 云生产环境cloud mysql:mysql> SELECT 'innodb_log_buffer_size' AS name, @@innodb_log_buffer_size/1024/1024 AS 'value(MB)';
+------------------------+------------+
| name                   | value(MB)  |
+------------------------+------------+
| innodb_log_buffer_size | 8.00000000 |
+------------------------+------------+
1 row in set (0.01 sec)-- 测试环境192.168.4.125:mysql> SELECT 'innodb_log_buffer_size' AS name, @@innodb_log_buffer_size/1024/1024 AS 'value(MB)';
+------------------------+-------------+
| name                   | value(MB)   |
+------------------------+-------------+
| innodb_log_buffer_size | 16.00000000 |
+------------------------+-------------+
1 row in set (0.00 sec)

14. tmp_table_size

tmp_table_size = 256M

-- 云生产环境cloud mysql:mysql> SELECT 'tmp_table_size' AS name, @@tmp_table_size/1024/1024 AS 'value(MB)';
+----------------+------------+
| name           | value(MB)  |
+----------------+------------+
| tmp_table_size | 2.00000000 |
+----------------+------------+
1 row in set (0.01 sec)-- 测试环境 192.168.4.125:mysql> SELECT 'tmp_table_size' AS name, @@tmp_table_size/1024/1024 AS 'value(MB)';
+----------------+-------------+
| name           | value(MB)   |
+----------------+-------------+
| tmp_table_size | 16.00000000 |
+----------------+-------------+
1 row in set (0.00 sec)

15. 优化配置

为了能够让配置的参数能够在mysql重启后仍然有效,建议将优化参数配置在mysql的配置文件中,这样,每次mysql重启后,都能使用优化参数进行运行。

这里以8G内存服务器为例配置的优化参数。

innodb_buffer_pool_size = 4096MB
innodb_buffer_pool_instances = 8max_connections = 1200
max_allowed_packet = 8Mback_log = 1000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/457205.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何快速解决游戏提示系统中的emp.dll缺失问题

emp.dll是一个动态链接库(Dynamic Link Library, DLL)文件,这类文件在Windows操作系统中扮演着至关重要的角色。它们包含了可由多个程序同时使用的代码和数据,其主要目的是实现模块化,以便于程序的更新和动态链接。emp…

es实现自动补全

目录 自动补全 拼音分词器 安装拼音分词器 第一步:下载zip包,并解压缩 第二步:去docker找到es-plugins数据卷挂载的位置,并进入这个目录 第三步:把拼音分词器的安装包拖到这个目录下 第四步:重启es 第…

RV1126音视频学习(二)-----VI模块

文章目录 前言2.RV1126的视频输入vi模块2.1什么是VI模块2.3RV1126VI模块主要APIRK_MPI_SYS_Init()RK_MPI_VI_SetChnAttrRK_MPI_VI_EnableChnRK_S32 RK_MPI_VI_DisableChnRK_MPI_VI_StartStreamRK_MPI_SYS_GetMediaBufferRK_MPI_MB_GetPtrRK_MPI_MB_GetSizeRK_MPI_MB_ReleaseBuf…

【NOIP提高组】加分二叉树

【NOIP提高组】加分二叉树 💐The Begin💐点点关注,收藏不迷路💐 设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中数字1,2,3,…,n为节点编号。每个节点都有一个分数(均为正整…

读《认知觉醒》:浅谈费曼技巧

最近在阅读《认知觉醒》这本书,封面如下: 读到了里面对于费曼技巧的介绍(在第八章),感觉受到了一些启发,在这里分享给大家。 其实之前很早就接触过了费曼技巧,但是并没有很好的应用起来&#x…

零代码快速开发智能体 |甘肃旅游通

零代码快速开发智能体 |甘肃旅游通 本文仅用于文心智能体的活动征文 参与人:mengbei_admin 文心智能体平台是人工智能领域的佼佼者。它拥有强大的语言理解与生成能力,能精准回应各种问题,出色完成文本创作、知识问答和翻译等任…

线性表之双向链表

链表花里胡哨,一应俱全 前言 在这之前,我们已经学习了单链表。我们发现这些链表都是一个接一个朝一个方向接下去,有时,我们想要查找某个结点的时候还得从头开始遍历查找,尽管我们已经学习了顺序表,查找某个…

免费PDF页面提取小工具

下载地址 https://download.csdn.net/download/woshichenpi/89922797 使用说明:PDF页面提取工具 1. 启动应用程序 双击程序的启动图标或者通过命令行运行程序。 2. 选择PDF文件 在应用程序窗口中找到“选择PDF”按钮并点击它。在弹出的文件选择对话框中&#x…

Windows server 2003服务器的安装

Windows server 2003服务器的安装 安装前的准备: 1.镜像SN序列号 图1-1 Windows server 2003的安装包非常人性化 2.指定一个安装位置 图1-2 选择好安装位置 3.启动虚拟机打开安装向导 图1-3 打开VMware17安装向导 图1-4 给虚拟光驱插入光盘镜像 图1-5 输入SN并…

Linux系统安装Redis详细操作步骤(二进制发布包安装方式)

安装方式介绍 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 安装方式特点二进制发布包安装软件已经针对具体平台编译打包发布,只要解压,修改配置即可rpm安装软件已经按照redhat的包管理规范进…

Redis 集群 总结

前言 相关系列 《Redis & 目录》(持续更新)《Redis & 集群 & 源码》(学习过程/多有漏误/仅作参考/不再更新)《Redis & 集群 & 总结》(学习总结/最新最准/持续更新)《Redis & 集群…

计算机网络:网络层 —— IPv4 地址与 MAC 地址 | ARP 协议

文章目录 IPv4地址与MAC地址的封装位置IPv4地址与MAC地址的关系地址解析协议ARP工作原理ARP高速缓存表 IPv4地址与MAC地址的封装位置 在数据传输过程中,每一层都会添加自己的头部信息,最终形成完整的数据包。具体来说: 应用层生成的应用程序…

Java--反射机制

前言: 反射与之前的知识的区别 1.面向对象中创建对象,调用指定结构(属性、方法)等功能,可以不使用反射,也可以使用反射。请问有什么区别? 不使用反射,我们需要考虑封装性。比如:出了自定义类之后,就不能…

WPF+MVVM案例实战(六)- 自定义分页控件实现

文章目录 1、项目准备2、功能实现1、分页控件 DataPager 实现2、分页控件数据模型与查询行为3、数据界面实现 3、运行效果4、源代码获取 1、项目准备 打开项目 Wpf_Examples,新建 PageBarWindow.xaml 界面、PageBarViewModel.cs ,在用户控件库 UserControlLib中创建…

电池的主被动均衡

只有串联的电池需要进行电压均衡,并联的电池由于电压一致,所以并不需要进行均衡: 被动均衡有一个很明显的特征就是会看到很多大电阻,串联在MOS和电池之间:下图中的保护板就是被动均衡板子以及它的原理图: …

软硬件开发面试问题大汇总篇——针对非常规八股问题的提问与应答

软硬件开发,从微控制器编程到复杂的嵌入式系统开发,离不开下位机、操作系统、上位机等,涵盖范围很广。 如何快速一行代码操作硬件寄存器 直接操作硬件寄存器的代码通常依赖于特定平台和编程语言。在 C 或 C 中,常见的方法是使用指…

WORFBENCH:一个创新的评估基准,目的是全面测试大型语言模型在生成复杂工作流 方面的性能。

2024-10-10,由浙江大学和阿里巴巴集团联合创建的WORFBENCH,一个用于评估大型语言模型(LLMs)生成工作流能力的基准测试。它包含了一系列的测试和评估协议,用于量化和分析LLMs在处理复杂任务时分解问题和规划执行步骤的能力。WORFBE…

智慧停车场导航系统架构及反向寻车系统解决方案

一、系统概述: 随着当前室内定位导航技术在大型公共场所如政务中心、商业综合体、车站中的应用越来越多,人们对智慧停车场的需求也日益凸显出来,并且智慧停车场对大型公共场所智慧化的整体建设起到重要作用。如何更有效提高停车效率&#xf…

如何加密电脑磁盘?电脑本地磁盘加密方法介绍

随着信息技术的不断发展,电脑磁盘加密已经成为保护个人隐私和数据安全的重要手段。本文将介绍几种常见的电脑本地磁盘加密方法,帮助用户保护自己的数据安全。 文件夹只读加密专家 文件夹只读加密专家不仅可以加密电脑中的文件夹,还可以加密保…

Android 13 SystemUI 隐藏下拉快捷面板部分模块(wifi,bt,nfc等)入口

frameworks/base/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java createTileInternal(tileSpec)方法注释想隐藏的模块即可。