内容简介:本文主要介绍MariaDB引擎级参数调优的方法与实践,包括引擎级参数的基本概念、主要存储引擎参数、参数调优的基本原理等内容。通过实际案例讲解引擎级参数调优的实施过程,帮助读者掌握引擎级参数调优的技能。风哥教程参考MariaDB官方文档InnoDB Parameters、MyISAM Parameters等相关内容。
Part01-基础概念与理论知识
1.1 引擎级参数的基本概念
引擎级参数是指针对特定存储引擎的配置参数,用于控制存储引擎的行为和性能。在MariaDB中,不同的存储引擎有不同的参数集。
引擎级参数的主要作用:
- 控制存储引擎的行为
- 优化存储引擎的性能
- 调整存储引擎的资源使用
- 解决特定场景下的问题
1.2 主要存储引擎参数
MariaDB支持多种存储引擎,每种存储引擎都有其特定的参数:
- InnoDB参数:控制InnoDB存储引擎的行为,如缓冲池大小、日志配置等
- MyISAM参数:控制MyISAM存储引擎的行为,如键缓冲区大小、索引缓存等
- MyRocks参数:控制MyRocks存储引擎的行为,如压缩配置、写入优化等
- ColumnStore参数:控制ColumnStore存储引擎的行为,如查询优化、并行处理等
1.3 参数调优的基本原理
参数调优的基本原理:
- 了解参数的作用:理解每个参数的含义和影响
- 根据硬件配置调整:根据服务器的硬件配置调整参数
- 根据工作负载调整:根据应用的工作负载特点调整参数
- 进行测试验证:通过测试验证调优效果
- 持续监控和调整:定期监控系统性能,根据需要调整参数
更多视频教程www.fgedu.net.cn
Part02-生产环境规划与建议
2.1 引擎参数规划
引擎参数规划建议:
- 根据存储引擎选择参数:不同存储引擎有不同的参数集
- 根据硬件配置规划:根据服务器的CPU、内存、磁盘等配置规划参数
- 根据工作负载规划:根据应用的读写比例、并发度等规划参数
- 风哥教程参考最佳实践:参考官方文档和社区最佳实践
2.2 调优策略建议
调优策略建议:
- 循序渐进:逐步调整参数,避免一次性修改过多参数
- 测试验证:每次调整后进行测试,验证调优效果
- 监控性能:使用监控工具跟踪性能变化
- 记录变更:记录参数变更历史,便于回滚
- 持续优化:根据业务变化和硬件升级持续优化
2.3 性能影响评估
性能影响评估:
- 吞吐量:评估参数调整对系统吞吐量的影响
- 响应时间:评估参数调整对查询响应时间的影响
- 资源使用:评估参数调整对CPU、内存、I/O的影响
- 稳定性:评估参数调整对系统稳定性的影响
学习交流加群风哥微信: itpux-com
Part03-生产环境项目实施方案
3.1 InnoDB参数调优
更多学习教程公众号风哥教程itpux_com
# 查看InnoDB相关参数
MariaDB [(none)]> SHOW VARIABLES LIKE ‘innodb%’;
# 调整InnoDB缓冲池大小
SET GLOBAL innodb_buffer_pool_size = 12884901888;
# 12GB
# 调整InnoDB缓冲池实例数
SET GLOBAL innodb_buffer_pool_instances = 4;
# 调整InnoDB日志文件大小
SET GLOBAL innodb_log_file_size = 268435456;
# 256MB
# 调整InnoDB脏页刷新比例
SET GLOBAL innodb_max_dirty_pages_pct = 75;
# 调整InnoDB并发线程数
SET GLOBAL innodb_thread_concurrency = 0;
# 0表示不限制
MariaDB [(none)]> SHOW VARIABLES LIKE ‘innodb%’;
# 调整InnoDB缓冲池大小
SET GLOBAL innodb_buffer_pool_size = 12884901888;
# 12GB
# 调整InnoDB缓冲池实例数
SET GLOBAL innodb_buffer_pool_instances = 4;
# 调整InnoDB日志文件大小
SET GLOBAL innodb_log_file_size = 268435456;
# 256MB
# 调整InnoDB脏页刷新比例
SET GLOBAL innodb_max_dirty_pages_pct = 75;
# 调整InnoDB并发线程数
SET GLOBAL innodb_thread_concurrency = 0;
# 0表示不限制
3.2 MyISAM参数调优
# 查看MyISAM相关参数
MariaDB [(none)]> SHOW VARIABLES LIKE ‘myisam%’;
# 调整MyISAM键缓冲区大小
SET GLOBAL key_buffer_size = 1073741824;
# 1GB
# 调整MyISAM排序缓冲区大小
SET GLOBAL sort_buffer_size = 67108864;
# 64MB
# 调整MyISAM读缓冲区大小
SET GLOBAL read_buffer_size = 16777216;
# 16MB
# 调整MyISAM写缓冲区大小
SET GLOBAL write_buffer_size = 16777216;
# 16MB
MariaDB [(none)]> SHOW VARIABLES LIKE ‘myisam%’;
# 调整MyISAM键缓冲区大小
SET GLOBAL key_buffer_size = 1073741824;
# 1GB
# 调整MyISAM排序缓冲区大小
SET GLOBAL sort_buffer_size = 67108864;
# 64MB
# 调整MyISAM读缓冲区大小
SET GLOBAL read_buffer_size = 16777216;
# 16MB
# 调整MyISAM写缓冲区大小
SET GLOBAL write_buffer_size = 16777216;
# 16MB
3.3 MyRocks参数调优
# 查看MyRocks相关参数
MariaDB [(none)]> SHOW VARIABLES LIKE ‘rocksdb%’;
# 调整MyRocks压缩算法
SET GLOBAL rocksdb_compression_per_level = ‘kLZ4Compression’;
# 调整MyRocks写入缓冲区大小
SET GLOBAL rocksdb_write_buffer_size = 67108864;
# 64MB
# 调整MyRocks最大背景线程数
SET GLOBAL rocksdb_max_background_jobs = 4;
# 调整MyRocks块缓存大小
SET GLOBAL rocksdb_block_cache_size = 1073741824;
# 1GB
MariaDB [(none)]> SHOW VARIABLES LIKE ‘rocksdb%’;
# 调整MyRocks压缩算法
SET GLOBAL rocksdb_compression_per_level = ‘kLZ4Compression’;
# 调整MyRocks写入缓冲区大小
SET GLOBAL rocksdb_write_buffer_size = 67108864;
# 64MB
# 调整MyRocks最大背景线程数
SET GLOBAL rocksdb_max_background_jobs = 4;
# 调整MyRocks块缓存大小
SET GLOBAL rocksdb_block_cache_size = 1073741824;
# 1GB
学习交流加群风哥QQ113257174
Part04-生产案例与实战讲解
4.1 InnoDB性能调优案例
场景描述:优化InnoDB存储引擎性能,提高系统吞吐量。
# 查看当前InnoDB参数
MariaDB [(none)]> SHOW VARIABLES LIKE ‘innodb_buffer_pool_size’;
+————————-+———–+
| Variable_name | Value |
+————————-+———–+
| innodb_buffer_pool_size | 134217728 |
+————————-+———–+
# 调整InnoDB缓冲池大小(设置为物理内存的70-80%)
SET GLOBAL innodb_buffer_pool_size = 12884901888;
# 12GB
# 查看调整后的参数
SHOW VARIABLES LIKE ‘innodb_buffer_pool_size’;
+————————-+————+
| Variable_name | Value |
+————————-+————+
| innodb_buffer_pool_size | 12884901888 |
+————————-+————+
# 调整InnoDB日志文件大小
SET GLOBAL innodb_log_file_size = 268435456;
# 256MB
# 调整InnoDB并发线程数
SET GLOBAL innodb_thread_concurrency = 0;
# 0表示不限制
MariaDB [(none)]> SHOW VARIABLES LIKE ‘innodb_buffer_pool_size’;
+————————-+———–+
| Variable_name | Value |
+————————-+———–+
| innodb_buffer_pool_size | 134217728 |
+————————-+———–+
# 调整InnoDB缓冲池大小(设置为物理内存的70-80%)
SET GLOBAL innodb_buffer_pool_size = 12884901888;
# 12GB
# 查看调整后的参数
SHOW VARIABLES LIKE ‘innodb_buffer_pool_size’;
+————————-+————+
| Variable_name | Value |
+————————-+————+
| innodb_buffer_pool_size | 12884901888 |
+————————-+————+
# 调整InnoDB日志文件大小
SET GLOBAL innodb_log_file_size = 268435456;
# 256MB
# 调整InnoDB并发线程数
SET GLOBAL innodb_thread_concurrency = 0;
# 0表示不限制
执行结果:
+————————-+———–+
| Variable_name | Value |
+————————-+———–+
| innodb_buffer_pool_size | 134217728 |
+————————-+———–+
Query OK, 0 rows affected (0.00 sec)
+————————-+————+
| Variable_name | Value |
+————————-+————+
| innodb_buffer_pool_size | 12884901888 |
+————————-+————+
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
| Variable_name | Value |
+————————-+———–+
| innodb_buffer_pool_size | 134217728 |
+————————-+———–+
Query OK, 0 rows affected (0.00 sec)
+————————-+————+
| Variable_name | Value |
+————————-+————+
| innodb_buffer_pool_size | 12884901888 |
+————————-+————+
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
4.2 MyRocks写入性能调优案例
场景描述:优化MyRocks存储引擎的写入性能,适合高写入场景。
# 查看当前MyRocks参数
MariaDB [(none)]> SHOW VARIABLES LIKE ‘rocksdb_write_buffer_size’;
+————————-+———–+
| Variable_name | Value |
+————————-+———–+
| rocksdb_write_buffer_size | 16777216 |
+————————-+———–+
# 调整MyRocks写入缓冲区大小
SET GLOBAL rocksdb_write_buffer_size = 67108864;
# 64MB
# 调整MyRocks最大背景线程数
SET GLOBAL rocksdb_max_background_jobs = 4;
# 调整MyRocks压缩算法
SET GLOBAL rocksdb_compression_per_level = ‘kLZ4Compression’;
# 查看调整后的参数
SHOW VARIABLES LIKE ‘rocksdb_write_buffer_size’;
+————————-+———–+
| Variable_name | Value |
+————————-+———–+
| rocksdb_write_buffer_size | 67108864 |
+————————-+———–+
MariaDB [(none)]> SHOW VARIABLES LIKE ‘rocksdb_write_buffer_size’;
+————————-+———–+
| Variable_name | Value |
+————————-+———–+
| rocksdb_write_buffer_size | 16777216 |
+————————-+———–+
# 调整MyRocks写入缓冲区大小
SET GLOBAL rocksdb_write_buffer_size = 67108864;
# 64MB
# 调整MyRocks最大背景线程数
SET GLOBAL rocksdb_max_background_jobs = 4;
# 调整MyRocks压缩算法
SET GLOBAL rocksdb_compression_per_level = ‘kLZ4Compression’;
# 查看调整后的参数
SHOW VARIABLES LIKE ‘rocksdb_write_buffer_size’;
+————————-+———–+
| Variable_name | Value |
+————————-+———–+
| rocksdb_write_buffer_size | 67108864 |
+————————-+———–+
执行结果:
+————————-+———–+
| Variable_name | Value |
+————————-+———–+
| rocksdb_write_buffer_size | 16777216 |
+————————-+———–+
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
+————————-+———–+
| Variable_name | Value |
+————————-+———–+
| rocksdb_write_buffer_size | 67108864 |
+————————-+———–+
| Variable_name | Value |
+————————-+———–+
| rocksdb_write_buffer_size | 16777216 |
+————————-+———–+
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
+————————-+———–+
| Variable_name | Value |
+————————-+———–+
| rocksdb_write_buffer_size | 67108864 |
+————————-+———–+
4.3 混合存储引擎调优案例
场景描述:根据不同表的特点,使用不同的存储引擎,并进行相应的参数调优。
# 创建InnoDB表(适合事务型数据)
MariaDB [(none)]> CREATE TABLE fgedu_users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
email VARCHAR(255),
password VARCHAR(255),
created_at DATETIME
) ENGINE=InnoDB;
# 创建MyISAM表(适合读密集型数据)
CREATE TABLE fgedu_articles (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255),
content TEXT,
created_at DATETIME
) ENGINE=MyISAM;
# 创建MyRocks表(适合高写入数据)
CREATE TABLE fgedu_events (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
event_type VARCHAR(100),
event_data JSON,
created_at DATETIME
) ENGINE=MyRocks;
# 调整InnoDB参数
SET GLOBAL innodb_buffer_pool_size = 12884901888;
# 12GB
# 调整MyISAM参数
SET GLOBAL key_buffer_size = 1073741824;
# 1GB
# 调整MyRocks参数
SET GLOBAL rocksdb_write_buffer_size = 67108864;
# 64MB
MariaDB [(none)]> CREATE TABLE fgedu_users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
email VARCHAR(255),
password VARCHAR(255),
created_at DATETIME
) ENGINE=InnoDB;
# 创建MyISAM表(适合读密集型数据)
CREATE TABLE fgedu_articles (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255),
content TEXT,
created_at DATETIME
) ENGINE=MyISAM;
# 创建MyRocks表(适合高写入数据)
CREATE TABLE fgedu_events (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
event_type VARCHAR(100),
event_data JSON,
created_at DATETIME
) ENGINE=MyRocks;
# 调整InnoDB参数
SET GLOBAL innodb_buffer_pool_size = 12884901888;
# 12GB
# 调整MyISAM参数
SET GLOBAL key_buffer_size = 1073741824;
# 1GB
# 调整MyRocks参数
SET GLOBAL rocksdb_write_buffer_size = 67108864;
# 64MB
执行结果:
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
风哥提示:安全开发是防止SQL注入的第一道防线
Part05-风哥经验总结与分享
5.1 引擎参数调优最佳实践
风哥提示:在进行引擎参数调优时,应根据存储引擎的特点和应用的工作负载,选择合适的参数值,并通过测试验证调优效果。
- InnoDB调优:
- innodb_buffer_pool_size:设置为物理内存的70-80%
- innodb_buffer_pool_instances:根据CPU核心数设置,一般为4-8
- innodb_log_file_size:设置为256MB-1GB
- innodb_thread_concurrency:设置为0(不限制)或CPU核心数的2倍
- MyISAM调优:
- key_buffer_size:设置为物理内存的25%
- sort_buffer_size:设置为16-64MB
- read_buffer_size:设置为1-4MB
- write_buffer_size:设置为1-4MB
- MyRocks调优:
- rocksdb_write_buffer_size:设置为32-128MB
- rocksdb_max_background_jobs:设置为CPU核心数
- rocksdb_compression_per_level:选择合适的压缩算法
- rocksdb_block_cache_size:设置为物理内存的10-20%
5.2 调优技巧与注意事项
- 根据硬件配置调整:内存越大,innodb_buffer_pool_size可以设置越大
- 根据工作负载调整:读密集型应用可以增大缓冲区,写密集型应用可以调整日志和写入参数
- 避免过度调优:不要盲目调整参数,应根据实际需求和测试结果进行调整
- 监控性能变化:使用监控工具跟踪性能变化,及时发现问题
- 定期优化:根据业务变化和硬件升级定期优化参数
5.3 常见问题与解决方案
- 内存使用过高:调整innodb_buffer_pool_size等内存相关参数
- 写入性能差:调整innodb_log_file_size、rocksdb_write_buffer_size等参数
- 查询性能差:调整innodb_buffer_pool_size、key_buffer_size等参数
- 系统不稳定:检查参数设置是否合理,避免过度调优
- 参数冲突:避免参数之间的冲突,确保参数设置的一致性
# 引擎参数调优脚本示例
#!/bin/bash
# engine_parameter_tuning.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 调整InnoDB参数
mysql -u root -p -e “SET GLOBAL innodb_buffer_pool_size = 12884901888;
”
mysql -u root -p -e “SET GLOBAL innodb_buffer_pool_instances = 4;
”
mysql -u root -p -e “SET GLOBAL innodb_log_file_size = 268435456;
”
# 调整MyISAM参数
mysql -u root -p -e “SET GLOBAL key_buffer_size = 1073741824;
”
# 调整MyRocks参数
mysql -u root -p -e “SET GLOBAL rocksdb_write_buffer_size = 67108864;
”
mysql -u root -p -e “SET GLOBAL rocksdb_max_background_jobs = 4;
”
# 查看调整后的参数
mysql -u root -p -e “SHOW VARIABLES LIKE ‘innodb_buffer_pool_size’;
”
mysql -u root -p -e “SHOW VARIABLES LIKE ‘key_buffer_size’;
”
mysql -u root -p -e “SHOW VARIABLES LIKE ‘rocksdb_write_buffer_size’;
”
#!/bin/bash
# engine_parameter_tuning.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 调整InnoDB参数
mysql -u root -p -e “SET GLOBAL innodb_buffer_pool_size = 12884901888;
”
mysql -u root -p -e “SET GLOBAL innodb_buffer_pool_instances = 4;
”
mysql -u root -p -e “SET GLOBAL innodb_log_file_size = 268435456;
”
# 调整MyISAM参数
mysql -u root -p -e “SET GLOBAL key_buffer_size = 1073741824;
”
# 调整MyRocks参数
mysql -u root -p -e “SET GLOBAL rocksdb_write_buffer_size = 67108864;
”
mysql -u root -p -e “SET GLOBAL rocksdb_max_background_jobs = 4;
”
# 查看调整后的参数
mysql -u root -p -e “SHOW VARIABLES LIKE ‘innodb_buffer_pool_size’;
”
mysql -u root -p -e “SHOW VARIABLES LIKE ‘key_buffer_size’;
”
mysql -u root -p -e “SHOW VARIABLES LIKE ‘rocksdb_write_buffer_size’;
”
通过以上措施,可以有效优化MariaDB引擎级参数,提高系统性能和稳定性。
from MariaDB视频:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
