zoukankan      html  css  js  c++  java
  • 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>

  • 相关阅读:
    ActiveMQ 即时通讯服务 浅析
    Asp.net Mvc (Filter及其执行顺序)
    ActiveMQ基本介绍
    ActiveMQ持久化消息的三种方式
    Windows Azure Virtual Machine (27) 使用psping工具,测试Azure VM网络连通性
    Azure China (10) 使用Azure China SAS Token
    Windows Azure Affinity Groups (3) 修改虚拟网络地缘组(Affinity Group)的配置
    Windows Azure Storage (22) Azure Storage如何支持多级目录
    Windows Azure Virtual Machine (26) 使用高级存储(SSD)和DS系列VM
    Azure Redis Cache (2) 创建和使用Azure Redis Cache
  • 原文地址:https://www.cnblogs.com/ritchy/p/10944800.html
Copyright © 2011-2022 走看看