MySQL配置简单优化与读写测试

测试方法

  1. 先使用sysbench对默认配置的MySQL单节点进行压测,单表数据量为100万,数据库总数据量为2000万,每次压测300秒。
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 \--mysql-host=192.168.0.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 \--mysql-db=benchtest --tables=20 \--table_size=1000000 oltp_read_write --db-ps-mode=disable run
  1. 再增加innodb缓存池大小。对于单机只跑MySQL的服务器,业界一般设置为系统内存的70%左右。比如总内存64G的服务器,innodb缓存池大小可以设置为45G。该参数可以动态设置,不需要重启MySQL。
  2. 在修改innodb缓存池大小之后,修改读写IO的线程数加起来等于CPU核心数。比如CPU核心数为16,则读IO线程数修改为8,写IO线程数修改为8。该配置只能修改配置文件,不能动态配置。

检查当前配置

-- innodb缓冲池大小
SHOW VARIABLES LIKE "%innodb_buffer_pool_size";
-- change_buffer在缓冲池的占用比
SHOW VARIABLES LIKE "%innodb_change_buffer_max_size";
-- innodb的读io线程数
SHOW VARIABLES LIKE "%innodb_read_io_threads";
-- innodb的写io线程数
SHOW VARIABLES LIKE "%innodb_write_io_threads";
-- 查看innodb脏页刷新线程数
SHOW VARIABLES LIKE "%innodb_page_cleaners";
SHOW GLOBAL STATUS LIKE "innodb%wait_free";
-- 查询缓存是否开启
SHOW VARIABLES LIKE "%query_cache_type";

修改配置

-- 增大innodb缓冲池大小为5G
SET GLOBAL innodb_buffer_pool_size = 5368709120;
-- 读写IO线程数只能修改配置文件重启MySQL才能生效

测试

  • 默认配置。innodb_buffer_pool默认只有128MB,读写线程数分别为4。
# SQL执行统计
SQL statistics:queries performed:read:                            89432 # 读SQL数write:                           25552 # 写SQL数other:                           12776total:                           127760 # 总SQL数transactions:                        6388   (21.23 per sec.)queries:                             127760 (424.70 per sec.) # 平均每秒执行424.70条SQLignored errors:                      0      (0.00 per sec.)reconnects:                          0      (0.00 per sec.)
General statistics:total time:                          300.8215stotal number of events:              6388
Latency (ms):min:                                   27.55avg:                                  470.25max:                                 1907.7895th percentile:                      943.16sum:                              3003956.97
Threads fairness:events (avg/stddev):           638.8000/5.72execution time (avg/stddev):   300.3957/0.14
  • 增大innodb_buffer_pool到5G。读SQL执行数增长63.8%,写SQL执行数增长63.8%,总执行SQL数增长63.8%,完成总事件数增长63.8%。相较于默认配置,性能提升63.8%。
SQL statistics:queries performed:read:                            146468write:                           41848other:                           20924total:                           209240transactions:                        10462  (34.79 per sec.)queries:                             209240 (695.78 per sec.)ignored errors:                      0      (0.00 per sec.)reconnects:                          0      (0.00 per sec.)
General statistics:total time:                          300.7235stotal number of events:              10462
Latency (ms):min:                                   33.13avg:                                  287.15max:                                 1199.8195th percentile:                      559.50sum:                              3004126.18
Threads fairness:events (avg/stddev):           1046.2000/6.38execution time (avg/stddev):   300.4126/0.10
  • 再将读写IO线程各改为12。性能提升相较于增加innodb缓存池5G,增长52.3%;相较于默认配置,增长149.4%。
SQL statistics:queries performed:read:                            223020write:                           63720other:                           31860total:                           318600transactions:                        15930  (53.08 per sec.)queries:                             318600 (1061.64 per sec.)ignored errors:                      0      (0.00 per sec.)reconnects:                          0      (0.00 per sec.)
General statistics:total time:                          300.0967stotal number of events:              15930
Latency (ms):min:                                   27.77avg:                                  188.37max:                                 1133.2495th percentile:                      467.30sum:                              3000790.02
Threads fairness:events (avg/stddev):           1593.0000/13.57execution time (avg/stddev):   300.0790/0.01

其它

还有chenge_buffer和脏页刷新线程数可优化,但未详细测试。

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

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

相关文章

猎板深耕透明 PCB,解锁电子设计新边界

在电子技术快速迭代的当下,猎板始终关注行业前沿,透明 PCB 作为极具创新性的技术,正在改变电子设备的设计与应用格局。​ 从传统的绿色、棕色 PCB 到如今的透明 PCB,其突破在于特殊基材与导电材料的运用,实现 85%-92%…

FLAML:快速轻量级自动机器学习框架

概述 FLAML(Fast and Lightweight AutoML)是微软开发的一个高效的自动机器学习(AutoML)框架。它专注于在有限的计算资源和时间约束下,自动化机器学习管道的构建过程,包括特征工程、模型选择、超参数调优等…

Github 以及 Docker的 wsl --list --online无法访问问题

修改电脑DNS 腾讯 DNS IP:119.29.29.29 备用:182.254.116.116 阿里DNS IP:223.5.5.5 223.6.6.6 百度DNS IP:180.76.76.76 谷歌DNS IP:8.8.8.8

Go 语言中的变量和常量

这篇文章已经放到腾讯智能工作台的知识库啦,链接在这里:ima.copilot-Go 入门到入土。要是你有啥不懂的地方,就去知识库找 AI 聊一聊吧。 1、变量的声明与使用 我们来探讨编程语言中最核心的概念之一:变量。 1、静态语言中的变量…

破局传统订货!云徙渠道订货系统赋能企业数字化渠道升级

在数字化浪潮的推动下,传统经销商订货模式面临着诸多挑战,如信息孤岛、系统崩溃、移动化不足等问题。云徙渠道订货系统凭借其创新的数字化架构和强大的功能模块,正在成为企业实现渠道数字化转型的重要工具。 系统功能与创新 云徙渠道订货系统…

SQL关键字三分钟入门:UNION 与 UNION ALL —— 数据合并全攻略

在处理数据时,有时我们需要将来自不同表或同一表的不同查询结果合并在一起。例如: 合并两个部门的员工名单;将多个地区的销售数据汇总;显示某段时间内所有新增和修改的记录。 这时候,我们就需要用到 SQL 中非常强大的…

SNMPv3 的安全命名空间详解

1. 安全命名空间的本质 安全命名空间是 SNMPv3 的核心安全机制,通过 上下文(Context) 实现: #mermaid-svg-6cV9146nTFF1zCMJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#merma…

【嵌入式硬件实例】-555定时器实现烟雾和易燃气体泄露检测

555定时器实现烟雾和易燃气体泄露检测 文章目录 555定时器实现烟雾和易燃气体泄露检测1、555定时器介绍2、MQ-2 气体/烟雾传感器模块介绍3、硬件准备与接线在本文中,我们将使用555定时器和MQ-2气体传感器构建一个气体泄漏检测和报警系统。它在煤气泄漏期间用作家庭安全警报器。…

【机器人】DualMap 具身导航 | 动态场景 开放词汇语义建图 导航系统

DualMap 是一个在线的开放词汇语义映射系统,使得机器人能够通过自然语言查询在动态变化的环境中理解和导航 双地图导航,结合全局抽象地图进行高层次候选选择,以及局部具体地图进行精确目标定位,有效管理和更新环境中的动态变化。…

【Fifty Project - D37】

fifty project算是失败了一半了 成功的那一半在于一定程度上拯救了我的作息和健康,两个月前入职体检的肝有点不健康,昨天复查发现全都回到了健康范围!尿酸也在正常范围!就是体重还是没减下来hhh 失败的一半在于自己很差劲的规划能…

解码危险品物流背后的“隐形防线”

当急救药品跨越千里送达医院,当新能源电池准时抵达生产线,当化工原料安全运往工厂……这些与日常生活息息相关的场景背后,有一群人始终在和时间赛跑,与风险博弈。他们不是超级英雄,而是危险品物流从业者——一个鲜少被…

Flutter Melos在外包团队协作中的弊端与应对策略

引言 在大型Flutter项目开发中,Melos作为一款优秀的Monorepo管理工具,能够有效协调多包项目的开发流程。然而,当项目涉及外包团队协作时,Melos的使用会面临一系列独特的挑战。本文将深入分析Flutter Melos在外包团队协作环境中的…

<selectKey> 中的order 属性

在 MyBatis 中&#xff0c;<selectKey> 标签的 order 属性用于指定生成主键值的 SQL 语句执行时机。 除了 AFTER&#xff0c;MyBatis 还支持另一种模式&#xff1a;BEFORE&#xff0c; 它们有明确的使用场景和区别&#xff1a; order"AFTER" 适用数据库&#x…

BitsAndBytes(简称 BnB)是一个用于“压缩”大语言模型的工具包

BitsAndBytes&#xff08;简称 BnB&#xff09;是一个用于“压缩”大语言模型的工具包&#xff0c;能把模型从原来的16位或32位&#xff0c;压成4位或8位&#xff0c;减少显存占用&#xff0c;同时保持尽量高的精度。 &#x1f9e9; 为什么叫 Bits and Bytes&#xff1f; 它的…

【前端】 Vue 3 中二次封装组件

在 Vue 3 中二次封装组件是提高代码复用性和维护性的重要手段。以下是详细的封装方法和最佳实践&#xff1a; 一、封装原则 功能扩展&#xff1a;在原有组件基础上添加新功能定制样式&#xff1a;统一项目的 UI 设计规范简化接口&#xff1a;隐藏复杂逻辑&#xff0c;提供简洁…

分布式词表示(Distributed Word Representation):自然语言处理的核心基石

分布式词表示&#xff08;Distributed Word Representation&#xff09;&#xff1a;自然语言处理的核心基石 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;如何将离散的词汇转化为计算机可理解的数值形式&#xff0c;一直是技术突破的关键。传统的独热编码&…

Windows Playwright NotImplementedError问题深究

原文链接&#xff1a;Windows Playwright NotImplementedError问题深究 < Ping通途说 0. 引言 今天来看一下这个困扰我很久的问题。是关于在FastAPI / NiceGUI 等基于Uvicorn环境下使用Async Playwright 提示NotImplementedError的问题。 本解决方案仅适用基于Uvicorn的异步…

QCustomPlot 数据可视化方式详解

QCustomPlot 数据可视化方式详解 QCustomPlot 提供了多种灵活的数据显示方式,可以满足从简单静态图表到复杂实时数据可视化的各种需求。以下是 QCustomPlot 显示数据的核心方式和策略: 基本数据显示方式 1.1 完整数据设置 (setData)// 一次性设置完整数据集 QVector<doub…

家用旧电脑搭建小型服务器操作步骤教程:一步一步本地部署到公网访问

你家是不是也有一台吃灰的旧电脑&#xff1f;别急着扔&#xff0c;它其实还能发挥大作用&#xff01;小编最近就把家里一台十年前的老台式机&#xff0c;改造成了一个小型服务器&#xff0c;主要用来文件备份、当网站测试环境&#xff0c;还是比较有用的。今天就来手把手教你&a…

Python银行账户系统全解析

完整代码如下&#xff1a; class BankAccount:def __init__(self, account_holder, initial_balance0):"""初始化银行账户:param account_holder: 账户持有人姓名:param initial_balance: 初始余额&#xff0c;默认为0"""self.account_holder …