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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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:                           12776
        total:                           127760 # 总SQL数
    transactions:                        6388   (21.23 per sec.)
    queries:                             127760 (424.70 per sec.) # 平均每秒执行424.70条SQL
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)
General statistics:
    total time:                          300.8215s
    total number of events:              6388
Latency (ms):
         min:                                   27.55
         avg:                                  470.25
         max:                                 1907.78
         95th percentile:                      943.16
         sum:                              3003956.97
Threads fairness:
    events (avg/stddev):           638.8000/5.72
    execution 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:                            146468
        write:                           41848
        other:                           20924
        total:                           209240
    transactions:                        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.7235s
    total number of events:              10462
Latency (ms):
         min:                                   33.13
         avg:                                  287.15
         max:                                 1199.81
         95th percentile:                      559.50
         sum:                              3004126.18
Threads fairness:
    events (avg/stddev):           1046.2000/6.38
    execution time (avg/stddev):   300.4126/0.10
  • 再将读写IO线程各改为12。性能提升相较于增加innodb缓存池5G,增长52.3%;相较于默认配置,增长149.4%。
SQL statistics:
    queries performed:
        read:                            223020
        write:                           63720
        other:                           31860
        total:                           318600
    transactions:                        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.0967s
    total number of events:              15930
Latency (ms):
         min:                                   27.77
         avg:                                  188.37
         max:                                 1133.24
         95th percentile:                      467.30
         sum:                              3000790.02
Threads fairness:
    events (avg/stddev):           1593.0000/13.57
    execution time (avg/stddev):   300.0790/0.01

其它

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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
人工智能 前端开发 测试技术
探索软件测试中的自动化框架选择与优化策略####
本文深入剖析了当前主流的自动化测试框架,通过对比分析各自的优势、局限性及适用场景,为读者提供了一套系统性的选择与优化指南。文章首先概述了自动化测试的重要性及其在软件开发生命周期中的位置,接着逐一探讨了Selenium、Appium、Cypress等热门框架的特点,并通过实际案例展示了如何根据项目需求灵活选用与配置框架,以提升测试效率和质量。最后,文章还分享了若干最佳实践和未来趋势预测,旨在帮助测试工程师更好地应对复杂多变的测试环境。 ####
21 4
|
10天前
|
机器学习/深度学习 前端开发 测试技术
探索软件测试中的自动化测试框架选择与优化策略####
本文深入探讨了在当前软件开发生命周期中,自动化测试框架的选择对于提升测试效率、保障产品质量的重要性。通过分析市场上主流的自动化测试工具,如Selenium、Appium、Jest等,结合具体项目需求,提出了一套系统化的选型与优化策略。文章首先概述了自动化测试的基本原理及其在现代软件开发中的角色变迁,随后详细对比了各主流框架的功能特点、适用场景及优缺点,最后基于实际案例,阐述了如何根据项目特性量身定制自动化测试解决方案,并给出了持续集成/持续部署(CI/CD)环境下的最佳实践建议。 --- ####
|
9天前
|
SQL 关系型数据库 MySQL
MySQL慢查询优化、索引优化、以及表等优化详解
本文详细介绍了MySQL优化方案,包括索引优化、SQL慢查询优化和数据库表优化,帮助提升数据库性能。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
MySQL慢查询优化、索引优化、以及表等优化详解
|
9天前
|
关系型数据库 MySQL 测试技术
【赵渝强老师】MySQL的基准测试与sysbench
本文介绍了MySQL数据库的基准测试及其重要性,并详细讲解了如何使用sysbench工具进行测试。内容涵盖sysbench的安装、基本使用方法,以及具体测试MySQL数据库的步骤,包括创建测试数据库、准备测试数据、执行测试和清理测试数据。通过这些步骤,可以帮助读者掌握如何有效地评估MySQL数据库的性能。
|
10天前
|
缓存 监控 测试技术
全网最全压测指南!教你如何测试和优化系统极限性能
大家好,我是小米。本文将介绍如何在实际项目中进行性能压测和优化,包括单台服务器和集群压测、使用JMeter、监控CPU和内存使用率、优化Tomcat和数据库配置等方面的内容,帮助你在高并发场景下提升系统性能。希望这些实战经验能助你一臂之力!
25 3
|
14天前
|
缓存 监控 关系型数据库
如何优化MySQL查询速度?
如何优化MySQL查询速度?【10月更文挑战第31天】
41 3
|
16天前
|
缓存 关系型数据库 MySQL
如何优化 MySQL 数据库的性能?
【10月更文挑战第28天】
38 1
|
17天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
85 1
|
18天前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
17 1
|
18天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
47 0