博客
关于我
MySQL数据库服务器端核心参数详解和推荐配置(一)
阅读量:789 次
发布时间:2023-02-12

本文共 1664 字,大约阅读时间需要 5 分钟。

MySQL服务器端参数优化配置指南

1. lower_case_table_names

在类Unix平台上,文件名称大小写敏感。为了减少开发成本,建议将数据库、表和存储过程等对象名称默认转换为小写。这样可以避免大小写相关的潜在问题。

2. max_connect_errors

默认值为10,表示在一台物理服务器上,mysqld线程在异常中断次数超过10次后,将无法再连接到服务。建议将该参数设置为至少10000或更高,以提高连接的稳定性。如果异常中断次数超过设置值,可通过执行FLUSH HOSTS;或重新启动mysqld服务来解决问题。

3. interactive_timeout 和 wait_timeout

  • interactive_timeout:表示处于交互状态的连接在服务器端被强制关闭前的等待时间,单位为秒。
  • wait_timeout:表示在无交互状态下,连接直到服务器端强制关闭前的等待时间,此参数仅对基于TCP/IP或Socket通信协议的连接有效,单位为秒。
    推荐设置:将interactive_timeoutwait_timeout都设置为172800秒。

4. transaction-isolation 和 binlog-format

根据业务需求选择合适的隔离级别和binlog格式:

  • 只读为主的业务场景:设置transaction-isolation = read-committedbinlog-format = mixed(适用于MySQL 5.1.12及以上版本,MySQL 5.0.x版本仅支持statement格式)。
  • 非只读为主的业务场景:设置transaction-isolation = repeatable-readbinlog-format = mixed(同上,MySQL 5.0.x版本仅支持statement格式)。

5. event_scheduler

默认状态下,事务调度是禁用的。建议在需要时临时启用:SET GLOBAL event_scheduler=1;

MySQL 5.1.x版本引入了事件机制,可用于定时任务管理,减少对外部程序的依赖。

6. skip_external_locking

外部锁定机制(操作系统锁)仅适用于MyISAM引擎,易导致死锁。建议禁用外部锁定,以提升性能。

7. innodb_buffer_pool_size

用于缓存InnoDB引擎表数据和索引,默认值为128MB(受限于系统架构和内存大小)。

配置建议:根据物理内存总量设置为80%(专用数据库服务器)。若遇到内存竞争、缓冲区初始化时间过长等问题,可适当减小缓冲池大小。

8. innodb_additional_mem_pool_size

用于缓存数据字典和内部数据结构,默认值为8MB(Plugin版本)。建议根据表数量和数据量调整该参数,以避免内存不足问题。

9. innodb_adaptive_hash_index

InnoDB引擎支持基于访问频率的自适应哈希索引,减少内存占用并提升查询效率。

10. innodb_max_dirty_pages_pct

允许缓存空间中不刷回磁盘的最大百分比,默认为90%。建议根据业务特点调整,通常设置为20%~50%。

11. table_open_cache

限制表缓存的最大数量,默认值为64。通过open_tables / table_cacheopen_tables / table_cache比率监控缓存使用情况。

12. innodb_commit_concurrency

默认值为0,允许同一时刻最多有0个线程提交事务。范围1-1000。注意:不能随意更改,只能在非0值之间调整。

13. innodb_concurrency_tickets

默认值为500,限定同一时刻访问InnoDB引擎的线程数。线程超过限制时,进入队列等待。

通过合理配置上述参数,可以显著提升MySQL服务器的性能和稳定性。

转载地址:http://ecdfk.baihongyu.com/

你可能感兴趣的文章
MySql报错Deadlock found when trying to get lock; try restarting transaction 的问题解决
查看>>
MySQL报错ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘
查看>>
Mysql报错Packet for query is too large问题解决
查看>>
mysql报错级别_更改MySQL日志错误级别记录非法登陆(Access denied)
查看>>
Mysql报错:too many connections
查看>>
MySQL报错:无法启动MySQL服务
查看>>
mysql授权用户,创建用户名密码,授权单个数据库,授权多个数据库
查看>>
mysql排序查询
查看>>
MySQL排序的艺术:你真的懂 Order By吗?
查看>>
MySQL排序的艺术:你真的懂 Order By吗?
查看>>
Mysql推荐书籍
查看>>
Mysql插入数据从指定选项中随机选择、插入时间从指定范围随机生成、Navicat使用存储过程模拟插入测试数据
查看>>
MYSQL搜索引擎
查看>>
mysql操作数据表的命令_MySQL数据表操作命令
查看>>
mysql操作日志记录查询_如何使用SpringBoot AOP 记录操作日志、异常日志?
查看>>
MySQL支持的事务隔离级别,以及悲观锁和乐观锁的原理和应用场景?
查看>>
mysql支持表情
查看>>
MySQL支撑百万级流量高并发的网站部署详解
查看>>
MySQL改动rootpassword的多种方法
查看>>
mysql数据分组索引_MYSQL之索引配置方法分类
查看>>