mysql忧化参数
转自 https://blog.51cto.com/tongcheng/1710265
以下参数是在mysql-5.6.27中使用,可能mysql版本不同使用方法不一样
1.线程参数
innodb_read_io_threads=6 --innodb存储引擎读线程数,供客户端读取数据,默认值是4
innodb_read_io_threads=7 --innodb存储引擎写线程数,供客户端写入数据,默认值是4
innodb_purge_threads=2 --innodb存储引擎回收purge页线程,清空脏数据,默认值是1
innodb_lru_scan_depth=1024 --控制LRU的可用页的数量,默认值是1024
innodb_max_dirty_pages_pct=75 --innodb缓冲池中的脏页大于75%时,checkpoint将一部分的脏页强制刷新到磁盘,一般是100个脏页
innodb_io_capacity=200 --磁盘IO在吞吐量,当数据量很大时默认刷新100个脏页,合并20个插入缓冲时可能忙不过来,此值可以刷新200个脏页,合并200 X 5%=100个插入缓冲,默认值是200
innodb_adaptive_flushing=on --自动刷新脏页,当innodb_max_dirty_pages_pct值小于75时也可以刷新脏页
innodb_purge_batch_size=300 --每次回收undo页的数量,默认值是300个页
innodb_max_purge_lag = 0 --控制history list的长度,history list是根据事物提交的顺序将undo log进行链接。
binlog_max_flush_queue_time = 0 --用来控制Flush阶段中的等待时间,也就是事物与事物之间的等待时间。
innodb_change_buffering=all --插入缓冲只缓冲哪些语句,选项值有inserts,updates,deletes,purges,all,none等.none表示都不进行缓冲,all表示都进行缓冲.默认值是all
innodb_change_buffer_max_size=25 --插入缓冲大小占整个缓冲池的25%内存大小,最大值是50
innodb_adaptive_hash_index=on --启用自适应哈稀索引(AHI),哈稀索引是一次读取数据,只能等值使用
innodb_page_size=16KB --innodb存储引擎默认页(块)是16KB,可以自己调整,默认区大小是1M
innodb_file_format=Antelope --字段的文件格式(文件格式有Compact,Redudant,Antelope,Compressed,Dynamic)
innodb_file_format_check=ON --检查字段是否支持的文件格式
lower_case_table_names=1 --mysql数据库对表名是否区分大小写,1 表示不区分大小写,0 表示区分大小写
auto-rehash --命令补全功能,只补全库名,表名,字段名.(是mysql客房端参数,定义在[mysql]下面)
foreign_key_checks=0 --关闭外键检查,关闭后导入导出数据的时间变快
old_alter_table=off --创建和删除索引的算法,COPY 表示创建临时表,INPLACE 不需要创建临时表,off默认是INPLACE
innodb_online_alter_log_max_size=128M --记录在创建和删除索引时,将DML语句写入缓存日志,如果有大量的写事物可调大参数
innodb_stats_sample_pages=8 --统计Caridinality(索引散列)时每次采样页的数量,默认值是8
innodb_stats_method=nulls_equal --如何对待索引页的null值记录,nulls_equal NULL视为相等的记录,nulls_unequal NULL视为相等记录或NULL忽略记录,nulls_ignored 忽略null值记录.
innodb_stats_persistent=ON --是否将命令aalyze table计算到的Cardinality值存放到磁盘上
innodb_stats_on_metadata=OFF --命令show table status和show index是否重新需要计算索引到Cardinality值
innodb_stats_persistent_sample_pages=20 --命令analyze table更新Cardinality值时每次采样页的数量,默认值是20
innodb_stats_transient_sample_pages=8 --每次采样的数量,默认值是8
innodb_ft_aux_table=test/fts_a --将test库fts_a表的全文索引信息记录到表中,表名information_schema.INNODB_FT_INDEX_TABLE记录分词信息
innodb_ft_cache_size=31M --全文索引缓存的大小,默认是32M
innodb_optimize_fulltext_only=ON --启用全文索引忧化,删除多余的文档
innodb_ft_num_word_optimize=2000 --每次删除分的数量,默认是2000
innodb_ft_enable_stopword=ON --启用不需要分词的参数
innodb_ft_server_stopword_table=test/fts_a --对不需要分词的word写入列表中,对应的分词在information_scema.INNODB_FT_DEFAULT_STOPWORD表中
innodb_ft_min_token_size=3 --分词word中最小的长度,默认是3
innodb_ft_max_token_size=84 --分词word中最大的长度,默认是84
innodb_autoinc_lock_mode=1 --控制自增长模式,默认值是1
innodb_lock_wait_timeout=50 --锁等待默认是50秒(适用于innodb存储引擎)
innodb_rollback_on_timeout=off --锁表后数据是否回滚,默认不回滚
table_lock_wait_timeout=50 --表锁等待(myisam存储引擎)
slave-skip-errors=错误值 --在主从有错误时可以跳过指定的错误代码值
2.缓冲池参数
innodb_buffer_pool_size=2G --innodb存储引擎缓冲池包括数据页,索引页,插入缓冲,自适应哈稀索引,数据字典,锁信息.myisam只缓存索引文件.默认值134217728字节(128M).
innodb_buffer_pool_instances=8 --innodb的缓冲池个数,与innodb_buffer_pool_size配合使用
innodb_old_blocks_pct=37 --使用LRU(最近最少算法)算法计算缓冲池,缓冲池前面63%为最活跃数据,63%以后为历史数据,最活跃数据命中率高.
innodb_old_blocks_time=100 --数据被读后100s才加入到最活跃缓冲池中
innodb_log_buffer_size=8M --重做日志缓冲大小,不宜设置太大,master thread是每秒同步到磁盘,事物提交同步到磁盘,重做日志空间剩余1/2也同步到磁盘,默认为8M
innodb_use_native_aio=on --开启异步io,默认是开启
innodb_flush_neighbors=1 --开启刷新邻近接页,刷新相邻的脏页,默认开启
3.数据恢复
innodb_fast_shutdown=1 --0表示关闭mysql时完成所有的full purge和merge insterbuffer操作.1表示将缓冲池刷新到磁盘,2表示将所有操作写入日志,下次启动时进行恢复
innodb_force_recover=1 --1表示忽略检查corrupt页,将所有脏页同步到磁盘,2表示阻止主线程运行,3表示不执行事物回滚操作,4表示不执行缓冲插入操作,5表示不查看重做日志,6表示不执行前滚操作
innodb_undo_directory = . --回滚段存放的目录
innodb_undo_logs = 128 --回滚段的数量
innodb_undo_tablespaces = 0 --构成回滚段的文件数量
completion_type=NO_CHAIN --不使用链事物(0 commit与commit work是等价的,1 commit work与commit and chain是等价的,事物提交后自动启动相同隔离级别的事物.2 commit work与commit and release等价,事物提交后自动断开服务器)
4.日志
slow_query_log=on --开启慢查询日志,记录查询较慢的sql语句
slow_query_log_file='文件路径' --存放慢查询文件的路径
long_query_time=2 --慢查询的时间,默认是10秒
log_queries_not_using_indexes=off --记录在查询中没有使用索引的查询,默认不使用索引
log_throttle_queries_not_using_indexes=0 --记录多少行慢查询,0表示无限制
log_output=FILE --指定慢查询日志输出是文件还是表(TABLE)
log_bin=master_bin.log --开启二进制日志
log_bin_index=master_index.log --指定二进日志文件的索引文件
max_binlog_size=1G --每个二进日志的大小,默认值是1G
binlog_cache_size=8MB --二进日志缓存,默认大小32KB
max_binlog_cache_size=128MB --最大二进制日志缓存(show status like'%Binlog_cache_use%' 使用缓存写二进的次数,show status like'%Binlog_cache_disk_use%' 使用临时文件写二进日志的次数)
sync_binlog=1 --事物提交同步到磁盘
binlog_do_db=数据库 --需要同步的数据库(指定数据库写入二进日志)
binlog-ignore-db=数据库 --不需要同步的数据库(忽略数据库写入二进日志)
binlog_format=STATEMENT --二进制日志输出格式,默认是语句模式,还有混合模式(MITEX)和行模式(ROW)
binlog_max_flush_queue_time=0 --控制Flush阶段中等待的时间,默认是0
innodb_support_xa=ON --分布式事务,如果事物未提交发生宕机事物进行回滚
log_slave_updates=ON --将主数据库的二进日志同步到从数据库的二进制日志中
innodb_log_file_size=2G --重做日志文件的大小,默认4GB
innodb_log_files_in_group=3 --重做日志文件组的数量,默认是2
innodb_mirrored_log_groups=1 --重做日志文件的镜像,默认值是1,表示没有镜像
innodb_log_group_home_dir=./ --重做日志文件的路径,./表示在数据目录下
innodb_flush_log_at_trx_commit=1 --事物提交时将重做日志写入到磁盘,0 表示事物提交时不将重做日志写入到磁盘,等master线程每秒刷新,2表示将重做日志异步到磁盘
completion_type=0 --值是0表示事物提交进行下一个事物,值是1就是链事物,当一个事物完成性必须提交,值是2就是事物提交自动会断开与服务器的连接.
4.mysql 5.6新特性
slave_parallel_workers = 4 --开启并行复制,减少复制的延迟,增加slave快速读取中继日志的内容
gtid_mode = on --从 5.6 开始mysql 增加了gtid(Global Transaction Identifiers),开启了这个参数,就在change master to 的时候就无需再指定 MASTER_LOG_FILE 和 MASTER_LOG_POS,而只需要增加auto_master_postition =1 就行了,如开启这个参数需要相应增加--log-slave-updates --enforce-gtid-consistency 这2个参数
延时复制方案:
如果你想slave 延时复制的话,可以把slave 停掉之后,用命令 change master to master_delay=n n 为你想要延时的时间
5.二次写(doublewrite由两部分组成,一部分是内存中的doublewrite buffer,大小为2MB,另一部分是物理磁盘上的共享表空间连续的128个页,大小也是2MB)
mysql> show global status like '%innodb_db%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| Innodb_dblwr_pages_written | 1 | --一共写了多少个页
| Innodb_dblwr_writes | 1 | --写了多少个页,如果(总数:写入)小于64:1证明写入负载不大
+----------------------------+-------+
2 rows in set (0.00 sec)
mysql>
mysql忧化参数的更多相关文章
- MySQL容器化详细教程
前言: 上篇文章介绍了Docker工具的安装及常用命令使用.本篇文章我们会介绍如何在Docker中运行MySQL实例,可能有的小伙伴会问:为什么要在Docker里运行MySQL呢?因为在Docker ...
- MySQL数据库实例参数对比脚本
如何对比两个MySQL实例的参数情况,生产中常会有这样的需求,最近写了个python脚本,可基本实现该需求. 脚本 #!/usr/bin/python import MySQLdb,sys def f ...
- MySQL 各种超时参数的含义
MySQL 各种超时参数的含义 今日在查看锁超时的设置时,看到show variables like '%timeout%';语句输出结果中的十几种超时参数时突然想整理一下,不知道大家有没有想过,这么 ...
- mysql命令行参数(转)
MySQL命令行参数 Usage: mysql [OPTIONS] [database] //命令方式 -?, --help //显示帮助信息并退出 -I, --help //显示帮助信息并退出 ...
- mysql 命令行参数
MySQL命令行参数 Usage: mysql [OPTIONS] [database] //命令方式 例如: mysql -h${HOSTNAME} -P${PORT} -u${USERNAM ...
- Mysql常用show命令,show variables like xxx 详解,mysql运行时参数
MySQL中有很多的基本命令,show命令也是其中之一,在很多使用者中对show命令的使用还容易产生混淆,本文汇集了show命令的众多用法. 详细: http://dev.mysql.com/doc/ ...
- MySQL 有输入输出参数的存储过程实例
1.MySQL 有输入输出参数的存储过程实例 DELIMITER // DROP PROCEDURE IF EXISTS `test`.`p_getvalue` // CREATE PROCEDURE ...
- MySql 链接url 参数详解
最近 整理了一下网上关于MySql 链接url 参数的设置,有不正确的地方希望大家多多指教: mysql JDBC URL格式如下: jdbc:mysql://[host:port],[host:po ...
- MySQL复制相关参数详解
MySQL复制相关参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.复制相关系统变量 1>.server_id 是必须设置在master和每个slave上的唯一标 ...
随机推荐
- 微软与阿里云合作推出“开放应用模型(OAM)”
英文原文:Announcing the Open Application Model (OAM) 原文标题:微软与阿里云合作推出“开放应用模型(OAM)” 用于 Kubernetes 及更多平台的应用 ...
- 删除列表中重复元素以及求list中元素个数
Python 去除列表中重复的元素 来自比较容易记忆的是用内置的set l1 = ['b','c','d','b','c','a','a'] l2 = list(set(l1)) print l2 还 ...
- 源码角度分析-newFixedThreadPool线程池导致的内存飙升问题
前言 使用无界队列的线程池会导致内存飙升吗?面试官经常会问这个问题,本文将基于源码,去分析newFixedThreadPool线程池导致的内存飙升问题,希望能加深大家的理解. (想自学习编程的小伙伴请 ...
- 浅析JNDI注入Bypass
之前在Veracode的这篇博客中https://www.veracode.com/blog/research/exploiting-jndi-injections-java看到对于JDK 1.8.0 ...
- C# -- Quartz.Net入门案例
1. 入门案例 using Quartz;using Quartz.Impl; public class PrintTime : IJob { public Task Execute(IJobExec ...
- 一文理解Java IO/NIO/AIO
目录 概述 一.IO流(同步.阻塞) 二.NIO(同步.非阻塞) 三.NIO2(异步.非阻塞) 正文 概述 在我们学习Java的IO流之前,我们都要了解几个关键词 同步与异步(synchronou ...
- JPA中实现单向多对一的关联关系
场景 JPA入门简介与搭建HelloWorld(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103473937 ...
- Redis Python(二)
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.NoSQL(Not only SQL)1.泛指非关系数据库2.不支持SQL语法3.存储结构与传统的关系型数据库 ...
- Android View的background和padding
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/181 最近在做一个需求,是对im聊天消息设置气泡背景,之前 ...
- 微信小程序框架部署:mpvue+typescript
开发前提: 1.在微信公众平台注册申请 AppID 2.安装开发者工具https://developers.weixin.qq.com/miniprogram/dev/devtools/downloa ...