Mysql常用参数整理

来源:互联网 发布:java中的包是什么意思 编辑:程序博客网 时间:2024/06/05 06:06
back_log
等待连接
binlog_checksum
主从复制时,将checksum也同时写入binary log采用的压缩算法,可选NONE或者CRC32
binlog_row_image
参数,可只记录row格式下所用字段的修改(而不是像以前一样记录全部列),节省空间等资源。设置为 minimal(记录必要列),full(全部列),noblob(不包括 blob 或者 text 的所有列)来控制最小或者最大记录。
character_set_server
字符集=[utf8|latin1|gbk|utf8mb4]
concurrent_insert
MyISAM引擎的数据表来控制是否可以insert语句的并发或insert与select语句的并发。
0-关闭,1-(默认)在没有空数据块的MyISAM表中启用并行插入,2-为所有MyISAM表启用并行插入。如果表有空记录或正被另一线程使用,新行将插入到表的最后。如果表未使用,MySQL将进行普通读锁定并将新行插入空记录。
connect_timeout
The number of seconds that the mysqld server waits for a connectpacket before responding with Bad handshake.
interactive_timeout
The number of seconds the server waits for activity on aninteractive connection before closing it.
wait_timeout
The number of seconds the server waits for activity on anoninteractive connection before closing it.
delayed_insert_limit
在每写入delayed_insert_limit行后,处理器检查是否任何SELECT语句仍然是未完成,如果这样,在继续之前允许执行这些语句。
delayed_insert_timeout
INSERT语句的执行超时时间。若超时,mysql将终止本次INSERT操作。
delayed_queue_size
延迟队列长度。
MySQLDELAY_KEY_WRITE
在MyISAM插入大数据量时可以关闭索引的选项
div_precision_increment
除法精度。
ft_min_word_len
full text 最小单词长度,1-针对英文,但中文一般是2~4个字为一个词,可以设为4。(用于全文索引查询)
ft_query_expansion_limit
full text 查询限制数量(资料不足)
group_concat_max_len
GROUP_CONCAT()是MySQL数据库提供的一个函数,通常跟GROUP BY一起用。
用group_concat连接字段的时候时的长度限制。
innodb_autoinc_lock_mode
自增长ID表中进行插入时
0:traditonal (每次都会产生表锁)
1:consecutive (默认,可预判行数时使用新方式,不可时使用表锁,对于simpleinsert会获得批量的锁,保证连续插入)
2:interleaved (不会锁表,来一个处理一个,并发最高)
高并发情况下,那就悲催了,表锁会引起SQL阻塞,极大的影响性能,还可能会达到max_connections值。
innodb_concurrency_tickets
innodb要进行读写时,需要检查innodb内部的线程计数,如果内部线程计数超过innodb_thread_concurrency,就等待innodb_thread_sleep_delay变量设置的微妙后再尝试进入。如果第二次仍然不成功-进入线程队列sleep(FIFO);而当线程ENTERED(进入)成功时,就会得到innodb_concurrency_tickets票数,以便以后的innodb_concurrency_tickets变量次数线程都不会再次检测,可以免check进入。
一旦线程在获得ticket(srv_conc_enter_innodb)后,允许进入innodb内核执行同样SQL的次数。在这个次数内不会再次进行check验证。通过这种方式节约大量的信号操作。
innodb_flush_log_at_trx_commit
0是不写日志;1(默认)-每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘;2-不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬盘,所以你一般不会丢失超过1-2秒的更新。
innodb_ft_max_token_size
存储在InnoDB的FULLTEXT索引中的最大词长。设置这样一个限制后可通过忽略过长的关键字等有效降低索引大小从而加速查询。
innodb_ft_min_token_size
存储在InnoDB的FULLTEXT索引中的最小词长。如果进行汉字查询时,最低好像是3个。
innodb_large_prefix
参数默认值是OFF,单列索引限制767。当改为ON时,允许列索引最大达到3072。
innodb_lock_wait_timeout
指的是事务等待获取资源等待的最长时间,超过这个时间还未分配到资源则会返回应用失败;参数的时间单位是秒,最小可设置为1s。(处理死锁问题)
innodb_max_dirty_pages_pct
控制了Dirty_Page在Buffer_Pool中所占的比率。如果值过大,内存也很大或者服务器压力很大,那么效率很降低,如果设置的值过小,那么硬盘的压力会增加,建议是在75-80.并且innodbplugin引进了innodb_adaptive_flushng(自适应的刷新),该值影响每秒刷新脏页的数量。
innodb_old_blocks_pct
innodb_old_blocks_time
InnoDB会缓存数据块。如果系统中的数据量并不大,或者或者活跃数据量并不大时,InnoDB会将这些数据块全部缓存到BufferPool(内存)中,这样可以最大限度的提高提供的响应速度,特别是读取。当用户请求需要查询数据块时,InnoDB会首先在BufferPool中查找数据,如果BufferPool中没有该数据块时,InnoDB会从磁盘上Load对应的数据块,并通过LRU算法替代当前BufferPool的缓存块。这样LRU算法的一个缺点是,如果有某一个查询做了一次全表扫描(例如备份,临时DDL等),都可能会导致整个BufferPool中LRU链表中的数据块都被替换了,甚至很多热点数据也会被替换,而这些新进的数据块可能在这一次查询之后就再也不会被读到了。我们也称这种情况为“BufferPool被污染”了。
LRU链表中的数据分为两部分:Sublist of new和Sublist ofold。后者包含访问最近没有访问的数据块(链表越后面的数据块,最近越没有被访问)。默认情况,前者占63%(5/8),后者37%(3/8)。
innodb_old_blocks_pct: 控制old sublist在LRU队列的长度
innodb_old_blocks_time:该参数决定了,当Block被插入到midpoint(oldsublist)后,必须要在oldsublist停留超过innodb_old_blocks_time(ms)时间后,才有可能被转移到newsublist。例如,将innodb_old_blocks_time设置为1000(即1s),当出现Tablescan出现时,InnoDB先将数据块载入到midpoint(old sublist)上,程序读取数据块,因为这时,数据块在oldsublist中的停留时间还不到innodb_old_blocks_time,所以不会被转移到newsublist中。这就避免了Buffer Pool被污染的情况。更酷的是,这个参数是动态调整的,所以在做意外的Tablescan时,动态调整一下该参数就可以了。
innodb_open_files
innodb_buffer_pool_size
这个参数主要缓存innodb表的索引,数据,插入数据时的缓冲。为Innodb加速优化首要参数。该参数分配内存的原则:这个参数默认分配只有8M,可以说是非常小的一个值。如果是一个专用DB服务器,那么他可以占到内存的70%-80%。这个参数不能动态更改,所以分配需多考虑。分配过大,会使Swap占用过多,致使Mysql的查询特慢。如果你的数据比较小,那么可分配是你的数据大小+10%左右做为这个参数的值。
innodb_additional_mem_pool
用来存放Innodb的内部目录,这个值不用分配太大,系统可以自动调。
innodb_log_file_size
参考取值:几个日志成员大小加起来差不多和你的innodb_buffer_pool_size相等。
innodb_log_files_in_group
指定有几个日志组
innodb_log_buffer_size
事务在内存中的缓冲;参考Innodb_os_log_written(show global status可以拿到),如果这个值增长过快,可以适当的增加innodb_log_buffer_size,另外如果你需要处理大理的TEXT,或是BLOB字段,可以考虑增加这个参数的值。
innodb_open_files
限制Innodb能打开的表的数据,如果库里的表特别多的情况,请增加这个并适当的增加table_cache。
innodb_purge_threads
控制是否使用独立purge线程。
innodb_purge_batch_size
表示一次完成多少个undologpage;但这个值有一个有趣的副作用是会影响到undolog的释放,因为总是在128轮purge后释放undologpage,在5.5及之后版本,开始支持128个回滚段。
innodb_read_ahead_threshold
线性预读取时,如果innodb_read_ahead_threshold个page可以顺序访问,InnoDB可以一次读取一个extent(64个连续的page,如果不压缩每个page为1MB)。
innodb_read_io_threads
innodb_write_io_threads
Linux系统中无效,针对windows的配置。
innodb_rollback_on_timeout
超时后是否对事务回滚,默认off只撤销失败sql
innodb_stats_method(统计有关的参数)
Nulls_equal:所有Null都相等,即算作一个value group;若Null过多则会导致average groupsize偏大
Nulls_unequal:所有Null互不相同,每个算作一个value group;如果non-null groupsize过大且null数量过多,此设置会拉低整体的average group size,可能导致滥用索引
Nulls_ignored:忽略Null
innodb_stats_on_metadata
对INFORMATION_SCHEMA中的一些表进行查询操作,以方便索引统计信息,如果读要求高的建议关闭。
innodb_stats_sample_pages
INNODB通过抽样的方式来计算统计信息,首先读取少量的索引页面,默认是8个索引页面,新版本可通过innodb_stats_sample_pages来设置样本页的数量。
innodb_strict_mode
开启InnoDB严格检查模式,尤其采用了页数据压缩功能后,最好是开启该功能。开启此功能后,当创建表(CREATETABLE)、更改表(ALTER TABLE)和创建索引(CREATEINDEX)语句时,如果写法有错误,不会有警告信息,而是直接抛出错误,这样就可直接将问题扼杀在摇篮里。
innodb_table_locks
是否允许使用表级锁。
key_cache_age_threshold
MyISAM中,如果key_buffer里的热链里的某个缓存块在这个变量所设定的时间里没有被访问过,MySQL服务器就会把它调整到暖链里去。这个参数值越大,缓存块在热链里停留的时间就越长。
key_cache_block_size
MyISAM中key_buffer缓存块的单位长度,以字节为单位,默认值为1024。
key_cache_division_limit
控制着缓存块重用算法。默认值为100,此值为key_buffer_size中暖链所占的大小百分比(其中有暖链和热链),100意味着全是暖链。
log_queries_not_using_indexes
如果运行的SQL语句没有使用索引,则mysql数据库同样会将这条SQL语句记录到慢查询日志文件中。
long_query_time
慢查询的阈值。
query_alloc_block_size
为查询分析和执行过程中创建的对象分配的内存块大小
query_cache_limit
指定单个查询能够使用的缓冲区大小,缺省为1M。
query_cache_type
是否使用查询缓冲,可以设置为0、1、2,该变量是 SESSION级的变量。
query_cache_size
查询缓冲区大小
0 0
原创粉丝点击