设为首页 收藏本站
查看: 966|回复: 0

[经验分享] mysql忧化参数

[复制链接]

尚未签到

发表于 2018-10-3 11:29:50 | 显示全部楼层 |阅读模式
  以下参数是在mysql-5.6.27中使用,可能mysql版本不同使用方法不一样。
  mysql dba群 378190849
  linux群 236415619
  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>  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>  延时复制方案:
  如果你想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>


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-609172-1-1.html 上篇帖子: MySQL空间类型测试 下篇帖子: mysql SELECT查询
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表