码迷,mamicode.com
首页 > 数据库 > 详细

(DBA之路【八】)关于show variables那些参数的故事

时间:2015-06-12 22:27:06      阅读:519      评论:0      收藏:0      [点我收藏+]

标签:数据库   文件夹   敏感性   优先级   操作系统   

基于我自己的版本:5.5.35-1ubuntu对http://blog.csdn.net/beiigang/article/details/39030695进行了修改。

1)low_priority_updates

在myisam表中此参数用于调整读锁和写锁的优先级。默认为0.

注:(以***释来自网上)

  • 通过指定启动参数low-priority-updates,使MyISAM引擎默认给予读请求以优先的权利。
    在 my.cnf 的配置方法
    [mysqld]
    low-priority-updates

  • 通过执行命令SET LOW_PRIORITY_UPDATES=1,使该连接发出的更新请求优先级降低。

  • 通过指定INSERT、UPDATE、DELETE语句的LOW_PRIORITY属性,降低该语句的优先级。


2)lower_case_file_system/lower_case_table_name

MySQL中,一个库会对应一个文件夹,库里的表会则以文件的方式存放在文件夹内,所以,操作系统对大小写的敏感性决定了数据库和表的大小写敏感(MySQL有一个只读的系统变量lower_case_file_system,其值反映的正是当前文件系统是否区分大小写)

我的是默认lower_case_file_system=OFF,lower_case_table_name=0,表示文件系统和表名都是区分大小写的。

注:(以***释来自网上)

MYSQL在LINUX下数据库名、表名、列名、别名大小写规则如下: 
1.数据库名与表名是严格区分大小写的 
2.表的别名是严格区分大小写的 
3.列名与列的别名在所有的情况下均是忽略大小写的 
4.变量名也是严格区分大小写的 


3)max_allowed_packet  

value:16777216

最大接收包的大小(可以理解为指令集大小)

修改方法1) 方法1可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。

max_allowed_packet = 20M如果找不到my.cnf可以通过mysql --help | grep my.cnf去寻找my.cnf文件。

2) 方法2 进入mysql server在mysql 命令行中运行set global max_allowed_packet = 2*1024*1024*10然后关闭掉这此mysql server链接,再进入。show VARIABLES like ‘%max_allowed_packet%‘;查看下max_allowed_packet是否编辑成功



4)max_binlog_cache_size

max_binlog_cache_size 表示的是binlog 能够使用的最大cache 内存大小

当我们执行多语句事务的时候 所有session的使用的内存超过max_binlog_cache_size的值时

就会报错:“Multi-statement transaction required more than ‘max_binlog_cache_size‘ bytes ofstorage”



5)max_binlog_size

二进制日志最大大小

当停止或者重启时,服务器会把日志文件记入下一个日志文件,Mysql会在重启时生成一个新 的日志文件,文件序号递增,此外,如果日志文件超过max_binlog_size系统变量配置的上限时,也会生成新的日志文件,不定期处理的话长期以往硬盘扛不住。

mysql提供了mysqlbinlog命令来查看日志文件,如mysqlbinlog xxx-bin.001 | more。在记 录每条变更日志的时候,日志文件都会把当前时间给记录下来,以便进行数据库恢复。

通过SET SQL_LOG_BIN的值来设定是否启用日志。


数据恢复:

如果遇到灾难事件,应该用最近一次制作的完整备份恢复数据库,然后使用备份之后的日志 文件把数据库恢复到最接近现在的可用状态。  使用日志进行恢复时需要依次进行,即最早生成的日志文件要最先恢复:

 mysqlbinlog xxx-bin.00001 | mysql –u root –p

mysqlbinlog xxx-bin.00002 | mysql –u root –p


日志:(以***释来自网上)

1、MySQL日志文件系统的组成
  a、错误日志:记录启动、运行或停止mysqld时出现的问题。
  b、通用日志:记录建立的客户端连接和执行的语句。
  c、更新日志:记录更改数据的语句。该日志在MySQL 5.1中已不再使用。
  d、二进制日志:记录所有更改数据的语句。还用于复制。
  e、慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。
  f、Innodb日志:innodb redo log

查看日志:mysqlbinlog [options] log_file ...

例如,要显示名字为binlog.000003的日志文件,按如下方式调用即可:mysqlbinlog binlog.000003提供了mysqlbinlog命令来查看日志文件,如mysqlbinlog xxx-bin.001 | more。在记录每条变更日志的时候,日志文件都会把当前时间给记录下来,以便进行数据库恢复。

注意在进行数据恢复的时候要按文件顺序来恢复。

技术分享

技术分享技术分享

 



6)max_binlog_stmt_cache_size

max_binlog_stmt_cache_size 这个值load data导入超大的文件(10G以上)必须要加大。


7)max_connections

 实际MySQL服务器允许的最大连接数; 


8)max_connect_errors 

当客户端连接服务端超时(超过connect_timeout), 服务端就会给这个客户端记录一次error,当出错的次数达到max_connect_errors的时候,这个客户端就会被锁定。除非执行FLUSH HOSTS命令,建议:能设多大就设多大


9)max_delayed_thread 其实与max_insert_delayed_thread数目同

设定最大启动线程来处理INSERT DELAYED语句也就是可以启动的最大处理insert delayed的数量 


10)max_error_count

运行出现的最大错误总数


11)max_tmp_tables:

它规定了内部内存临时表的最大值,每个线程都要分配。(实际起限制作用的是tmp_table_size和max_heap_table_size的最小值。)如果内存临时表超出了限制,MySQL就会自动地把它转化为基于磁盘的MyISAM表,存储在指定的tmpdir目录下,

默认:mysql> show variables like "tmpdir";

优化查询语句的时候,要避免使用临时表,如果实在避免不了的话,要保证这些临时表是存在内存中的。如果需要的话并且你有很多group by语句,并且你有很多内存,增大tmp_table_size(和max_heap_table_size)的值。


12)max_heap_table_size

这个变量定义了用户可以创建的内存表(memory table)的大小.这个值用来计算内存表的最大行数值。这个变量支持动态改变,即set @max_heap_table_size=#,但是对于已经存在的内存表就没有什么用了,除非这个表被重新创建(create table)或者修改(alter table)或者truncate table。服务重启也会设置已经存在的内存表为全局max_heap_table_size的值。这个变量和tmp_table_size一起限制了内部内存表的大小。


13)max_insert_delayed_thread

Innodb提供有insert buffer以批量操作减少IO(最新版本扩充为change buffer),MyISAM也有类似功能,称作insert delayed,即延迟提交;延迟插入的记录保存在内存中,如果此时断电则会丢失,当新插入行不立即被查询时可用此功能提升IO;

设定最大启动线程来处理INSERT DELAYED语句也就是可以启动的最大处理insert delayed的数量 


14)max_join_size 

允许读取的连接的数量


15)max_length_for_sort_data

mysql有两种文件排序算法(双路排序和单路排序),如果需要排序的列的总大小加上order by列的大小超过了 max_length_for_sort_data定义的字节,mysql就会使用双路排序。

可以通过改变 max_length_for_sort_data变量的值来影响mysql选择的算法。因为单路排序为将要排序的每一行创建了固定的缓冲区,varchar列的最大长度是 max_length_for_sort_data规定的值,而不是排序数据的实际大小。

双路排序:(以***释来自网上)

读取行指针和order by列,对他们进行排序,然后扫描已经排序好的列表,按照列表中的值重新从列表中读取对应的数据输出。

双路排序的开销可能会非常巨大,因为他会读取表两次,第二次读取会引发大量的随机IO,对于myisam涞说,这个代价尤其昂贵,myisam表利用系统调用去提取每行的数据。


单路排序:
读取查询需要的所有列,按照order by 列对他们进行排序,然后扫描排序后的列表进行输出,它的效率更快一些,避免了第二次读取数据。并且把随机IO变成了顺序IO,但是它会使用更多的空间,因为它把每一行都保存在内存中了。


16)max_long_data_size

最大输入数据的长度


17)max_prepare_stmt_count

最大预处理命令数目,变量设置预处理语句限制数。这个功能能防止拒绝服务攻击,因为攻击可以通过大量的预处理语句致使服务器内存溢出来攻击。设置此变量就是一道安全屏障,此变量对原有的预处理语句不影响,但若是预处理语句的数量超过该变量的值,则不会新增预处理语句,而是等到预处理语句的值小于max_prepared_stmt_count的值才增加新语句。


18)max_relay_log_size

标记relay log 允许的最大值,如果该值为0,则默认值为max_binlog_size(1G);如果不为0,则max_relay_log_size则为最大的relay_log文件大小;

区别是:从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后SQL线程会读取relay-log日志的内容并应用到从服务器。


19)max_seeks_for_key

查询时最大搜索的key的个数,可以用来查询优化,启动 mysqld 时使用参数 --max-seeks-for-key=1000 或者执行 SET max_seeks_for_key=1000 来告诉优化程序,所有的索引都不会导致超过1000次的索引搜索。总之:建议这个值设定的小一点。


20)max_sort_length 

在排序blob或者text时使用的字节数量


21)max_sp_recursion_depth

mysql递归型存储的最大深度


22)max_user_connections 

是 MySQL 用户连接数的最大值设置,默认为0意思为无限制


23)max_write_lock_count

最大写锁的数量


24)max_metadata_locks_count

设定mysqld元数据锁缓存的上限。此缓存可用来避免创建或销毁同步对象(synchronization object)。


25)min_examined_row_limit

这也是判断一个查询是否是慢查询的一个变量,  若查询的结果集行数大于min_examined_row_limit值,则查询被当作慢查询写入慢查询日志。



26)multi_range_count

 设定查询语句中range范围最大个数,这个变量没什么用。


27)myisam-data-pointer-size

默认指针大小,单位是字节, MAX_ROWS不指定时,CREATE TABLE使用该变量创建MyISAM表。默认值是6。值域:2~7


28)myisam-max-sort-file-size
当用到REPAIRTABLE, ALTER TABLE, LOAD DATA INFILE的时候,相应的索引会被重建,然后要用到临时文件,此变量就是设置临时文件大小的。如果索引文件大小比此值小,系统则调用速度更慢的键值创建索引。

官网建议:如果MyISAM索引文件大于2G且硬盘空间允许,增大该值可以提高性能。注意的是增加的空间是包含原来索引文件空间的。


29)myisam-mmap-size

Mmp:memorymapping 内存映射

设置使用内存映射压缩MyISAM表文件的最大内存量的变量

如果许多压缩MyISAM表使用,可以通过降低该值来减低内存交换问题出现的可能性。


30)myisam_recover_options                

设置MyISAM存储模式,它的值可以是OFF, DEFAULT, BACKUP, FORCE, QUICK任意组合,组合值则用‘,’隔开。

默认是backup。

若非OFF的话,表示每次打开MyISAM表都检查表是否崩溃或者非正常保存,否则和尝试修复表。

修复按照值选项而定:

OFF:关闭

DEFAULT:修复中没有BACKUP, FORCE,QUICK

BACKUP:如果修复过程中用户修改数据,则把“表名.MYD”文件备份成“表名-时间.BAK”文件

FORCE:继续修复数据即便是丢失大量数据

QUICK:不检查表中的行,如果没有任何删除块。

还有的是,修复之前,mysql会在错误日志中写入note,这个note关于修复的。

官网建议:如果想在不受用户打扰的情况下修复数据,则设置为“BACKUP, FORCE”。这样的话,就强制修复即便有人删除数据,修复完了还可以用备份数据查看发生情况。


31)myisam_repair_threads               

myisam_repair_threads=1 则在repairby sort时,MyISAM表索引在各自线程中并发创建。



32)myisam_sort_buffer_size              

REPAIR TABLE或在 CREATEINDEX 和 ALTER TABLE创建索引的时候,.给分配的缓冲区的大小。


33)myisam_stats_method                    默认: nulls_unequal

变量告诉服务器,在服务器收集有关MyISAM表的索引值的分布统计时如何处理NULL值。变量可选三个值:nulls_equal,nulls_unequal, nulls_ignored.

Nulls_equal 时,所有null值都被当成一样,形成一个大小是null值个数的单值组。

nulls_unequal时,null被认为是不一样的(尽管我们看来是一样),每个null形成一个大小为1的不同值组。

nulls_ignored时,值被忽略

PS:至于为什么要这样区别对待,这里有讲解http://www.phpben.com/?post=69


34)myisam_use_mmap                   

这个变量开启的话,就利用内存映射来读和写myisam表,默认是关闭的OFF,一般内存不是很大的情况下是不会开启这一项


35)net_buffer_length

XXX  TCP/IP和套接字通信缓冲区大小,设定的大一点可以加快导入速度。


36)net_read_timeout

在终止读之前,从一个连接获得数据而等待的时间秒数;当服务正在从客户端读取数据时,net_read_timeout控制何时超时。这个参数在连接繁忙阶段(query)起作用。


37)slave_net_timeout

当slave认为连接master的连接有问题时,就等待N秒,然后断开连接,重新连接master


38)net_write_timeout

在终止写之前,等待多少秒把block写到连接;当服务正在写数据到客户端时,net_write_timeout控制何时超时,这个参数在连接繁忙阶段(query)起作用。


39)wait_timeout

与服务器端无交互状态的连接,直到被服务器端强制关闭而等待的时间,在连接空闲阶段(sleep)起作用


40)interactive_timeout 

与服务器端无交互状态的连接,直到被服务器端强制关闭而等待的时间,在连接空闲阶段(sleep)起作用


41)connect_timeout

等待一个连接响应的时间,在获取连接阶段(authenticate)起作用


42)net_retry_count                   

如果读或写一个通信端口中断,mysql放弃前尝试连接的次数。


43) new                                 

变量用于mysql4.0启用mysql4.1一些新功能,和为了保持向后兼容性。在mysql5.6中,这个变量的值都是OFF。


44) old                                    

Old是兼容性变量。默认被禁用(OFF),在旧版本的服务器可以通过重启服务器时启用。

目前,old被启用时,它改变使用索引提示的默认范围到MySQL5.1.17之前。也就是说,没有FOR子句仅适用于如何使用索引检索行,而不是解决ORDER BY或GROUP BY子句的索引提示。在复制设置启用这个变量时要注意些,基于语句的二进制日志,主从服务器有不同的模式可能会导致复制错误。


45)old_alter_table                        默认OFF

当该变量被启用,则mysql服务器不会使用alerttable 优化方法。在mysql5.0和更早版本,先用个临时表,复制数据进去,然后重命名到原始的临时表。


46)old_passwords                          默认OFF

变量设置是否启用mysql4.1之前的账户密码类型。


 47)open_files_limit                    

设置操作系统允许mysqld允许打开的文件数。这是系统允许的真正值,可能和你用--open-files-limit选项给mysqld或mysqld_safe设置的值不同。该值是0的系统上,MySQL不能更改打开的文件数


48)optimizer_prune_level                  默认1

变量为1,控制启发式应用在查询优化过程中,从优化空间中剪去不太有用的部分计划。

值0禁用启发式优化执行穷举搜索。

值1时让优化器根据被检索的行数通过中间计划来剪去不太有用的计划。


49) optimizer_search_depth                  默认62

查询优化器进行的搜索的最大深度。如果值大于查询中的关系数则查询方案比较佳,但生成查询执行方案需要的时间更长。值大于查询中的关系数则返回的执行方案更快,但方案远没有优化。如果设置为0, 系统自动选择合理的值


50)optimizer_switch                       |默认index_merge=on,index_merge_union=on,

index_merge_sort_union=on,index_merge_intersection=on

优化器选项,有很多选项。(以下来自网络)

batched_key_access

Controls use of BKA join algorithm

block_nested_loop

Controls use of BNL join algorithm

engine_condition_pushdown

Controls engine condition pushdown

index_condition_pushdown

Controls index condition pushdown

index_merge

Controls all Index Merge optimizations

index_merge_intersection

Controls the Index Merge Intersection Access optimization

index_merge_sort_union

Controls the Index Merge Sort-Union Access optimization

index_merge_union

Controls the Index Merge Union Access optimization

mrr

Controls the Multi-Range Read strategy

mrr_cost_based

Controls use of cost-based MRR if mrr=on

semijoin

Controls all semi-join strategies

firstmatch

Controls the semi-join FirstMatch strategy

loosescan

Controls the semi-join LooseScan strategy (not to be confused with LooseScan for GROUP BY)

materialization

Controls materialization (including semi-join materialization)


51)performance_schema    默认OFF

主要用于收集数据库服务器性能参数

performance_schema提供以下功能:
1.提供进程等待的详细信息,包括锁、互斥变量、文件信息;
2.保存历史的事件汇总信息,为提供MySQL服务器性能做出详细的判断;
3.对于新增和删除监控事件点都非常容易,并可以随意改变mysql服务器的监控周期,例如(CYCLE、MICROSECOND)


Performance的开启很简单,在my.cnf中[mysqld]加入performanc_schema,检查性能数据库是否启动的命令:

SHOW VARIABLES LIKE ‘performance_schema’;

若是返回的 值为ON,则说明性能数据库正常开启状态。


它还包括了许多具体的设置参数

performance_schema_XXX_size



51)pid_file                              

进程ID(PID)文件的路径名。可以用--pid-file选项设置该变量




52) plugin_dir                            

插件目录的路径。在MySQL 5.1.2中加入了该变量

如果插件目录对服务器可写,则有可能给用户通过“SELECT ... INTO DUMPFILE”在目录中写可执行代码。可以通过设置插件目录只读来阻止或者给目录设置--secure-file-priv select可保持安全 。

类型:目录名

默认是:mysql安装目录/lib/pligin


53) port                          

Mysql监听tcp/ip端口号

默认3306


54) preload_buffer_size           

重载索引时分配的缓冲区大小

作用域:全局、会话


55) profiling                              默认 OFF

设置showprofile 命令是否可用。

当profiling=0/OFF 则show profile不可用

当profiling=1/ON 则show profile可用

ps: show profile是显示查询一些信息。



56)profiling_history_size                  默认15

设置showprofile 命令显示多少条查询的。

默认是15,最大值是100

若此变量的值是0则profiling=0/OFF


57)protocol_version                        默认10

MySQL服务器使用的客户端/服务器协议的版本


58)proxy_user   默认空

代理用户,

通过使用proxy user可以有效地避免密码泄露问题


59) pseudo_thread_id                   

这个变量是内部服务器使用。


60) pseudo_slave_mode                    

伪从机模式,默认为OFF



61)query_alloc_block_size           

语句解析和执行过程中创建的对象分配的内存块分配大小。如果你有内存碎片的问题,它可能有助于提高此参数。



62)query_cache_limit                      默认1048576

不要缓存大于该值的结果。默认值是1048576(1MB)。


 63)query_cache_min_res_unit                

查询缓存分配的最小块的大小(字节)。 默认值是4096(4KB)


64)query_cache_size                    这里不为0 

为缓存查询结果分配的内存的数量。默认值是0,即禁用查询缓存。

请注意即使query_cache_type设置为0也将分配此数量的内存。


65)query_cache_type                       |默认ON

设置查询缓存类型。设置GLOBAL值可以设置后面的所有客户端连接的类型。客户端可以设置SESSION值以影响他们自己对查询缓存的使用。下面的表显示了可能的值。

0或OFF

不要缓存或查询结果。请注意这样不会取消分配的查询缓存区。要想取消,你应将query_cache_size设置为0。

1或ON

缓存除了以SELECT SQL_NO_CACHE开头的所有查询结果。

2或DEMAND

只缓存以SELECTSQL_NO_CACHE开头的查询结果。


66)query_cache_wlock_invalidate           默认OFF

一般情况,当客户端对MyISAM表进行WRITE锁定时,如果查询结果位于查询缓存中,则其它客户端未被锁定,可以对该表进行查询。将该变量设置为1,则可以对表进行WRITE锁定,使查询缓存内所有对该表进行的查询变得非法。这样当锁定生效时,可以强制其它试图访问表的客户端来等待。


67)query_prealloc_size                     默认8192

用于查询分析和执行的固定缓冲区的大小。在查询之间该缓冲区不释放。如果你执行复杂查询,分配更大的query_prealloc_size值可以帮助提高性能,因为它可以降低查询过程中服务器分配内存的需求。


68)rand_seed1                            

69)rand_seed2                           

这两个变量只作用域只是会话层,可以可写不可读,所以用show vriabales是显示不了变量的值。

这两个变量是为了使rand()函数支持被复制。在含有rand()查询中,主服务器必须给从服务器传递两个值,它们用于种子随机数发生器。从服务器使用这些值来设置会话变量rand_seed1和rand_seed2 以至从服务器产生与主服务器相同的值。


70)range_alloc_block_size                 默认4096

变量是设置范围优化时分配的块的大小。


71) read_buffer_size                   

每个线程连续扫描时为扫描的每个表分配的缓冲区的大小(字节)。如果进行多次连续扫描,可能需要增加该值, 默认值为131072。该值应是4K的倍数,如果不是4k的倍数,则回滚到最接近4k倍数的值。


72)read_only

只读模式,但是该变量对有super权限的用户没有用,该变量默认OFF

具体说明:

变量对复制从服务器设置为ON时,从服务器不允许更新,除非通过从服务器的线程或用户拥有SUPER权限。可以确保从服务器不接受客户端的更新命令。

READ_ONLY不适用临时表,也防止服务器日志表插入行,这个变量并不妨碍分析TABLE或OPTIMIZE TABLE命令语句的使用,因为其目的是为了防止表的结构或内容的变化。

READ_ONLY只存在一个全局变量,所以需要SUPER权限才能改变其值。在主服务器上的设置为READ_ONLY不会被复制到从服务器。可以在主从服务器上分开、独立的设置READ_ONLY的值。


73) read_rnd_buffer_size                    默认262144

当排序后按排序后的顺序读取行时,则通过该缓冲区读取行,避免搜索硬盘。将该变量设置为较大的值可以大大改进ORDER BY的性能。但是,这是为每个客户端分配的缓冲区,因此你不应将全局变量设置为较大的值。相反,只为需要运行大查询的客户端更改会话变量


74)relay_log_index                       

使用的中继日志索引文件的名称。默认名称是HOST_NAM_relay_bin.index数据目录中,其中host_name是从服务器的名称。

如果指定此选项,指定的值也被用作中继日志的主档名。

值:文件名


75)relay_log_info_file                    默认relay-log.info

这是从服务器保存中继日志有关信息的文件名。

默认是relay-log.info


76) relay_log_purge                         默认ON

当不再需要中继日志时禁用或启用自动清空中继日志。默认值是1(启用)。

这是一个全局变量且可以通过SET GLOBAL relay_log_purge = N.来动态改变。


77) relay_log_space_limit                   默认0

所有中继日志空间大小。

作用域:全局


78) relay_log_recovery              默认OFF 

这参数的作用是:当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。默认情况下该功能是关闭的,将relay_log_recovery的值设置为 1时,可在slave从库上开启该功能,建议开启。


79)report_host                           

-- report_host 选项的值


 80)report_password                        

--report_password 选项的值 ,与MySQL的复制用户帐户使用的密码不相同。


 81)report_port

默认为3306


82)report_user

-- report_user 选项的值 ,与MySQL的复制用户,帐户使用的账户不相同。


83) rpl_recovery_rank     

路由协议恢复范围,半同步复制时可能需要设置。


84) secure_auth                             默认OFF

如果用--secure-auth选项启动了MySQL服务器,它将阻塞有旧格式(4.1之前)密码的所有账户所发起的连接。在这种情况下,该变量的值为ON,否则为OFF。

 

如果你想要防止使用旧格式的密码(致使网络通信不安全),你应启用该选项。

Version()<=5.6.4默认是OFF

Version()>=5.6.5 默认是ON



85) secure_file_priv                       

变量默认为空,若给该变量赋值(目录),则限制函数load_file(),load data,和select … into outfile 语句只有在相应目录下起作用。

作用域:全局

默认为空


83、server_id                          

--server-id选项的值。用于主复制服务器和从复制服务器。

默认值:0


84)skip_external_locking                  默认ON

如果mysqld使用外部锁定,该值为OFF,否则是ON。这个在MYISAM表中有作用


85)skip_name_resolve                      默认 OFF

这是变量是通过选项—skip-name-resolve设置。

若是ON,在检查客户端连接时,mysqld会解析主机名。

若是OFF,mysqld使用唯一的IP号码和所有在授权表的Host列值必须是IP地址或localhost


86)skip_networking                        默认OFF

如果服务器只允许本地(非TCP/IP)连接,该值为ON。在Unix中,本地连接使用Unix套接字文件。在Windows中,本地连接使用命名管道或共享内存。在NetWare中,只支持TCP/IP连接,因此不要将该变量设置为ON。


87) skip_show_database                      默认OFF

防止不具有SHOW DATABASES权限的人们使用SHOW DATABASES语句。如果你担心用户能够看见属于其它用户的数据库,这样设置可以提高安全性。其效果取决于SHOW DATABASES权限:如果变量值为ON,只允许具有SHOW DATABASES权限的人们使用SHOW DATABASES 语句,并且该语句将显示所有数据库名。如果值为OFF,允许所有用户执行SHOW DATABASES,但只显示用户具有SHOW DATABASES或其它权限的数据库的名称。

ps:这个对mysql服务器安全性能提升很有用



88) slave_compressed_protocol              

如果ON,则在主、从服务器均支持,使用从/主压缩协议。

默认是OFF


89) slave_exec_mode                         默认STRICT

控制在复制的冲突解决和错误检查中是使用IDEMPOTENT模式还是STRICT模式。

IDEMPOTENT模式会发生抑制重复键和no-key-found错误,这种模式下,应采用多主复制,循环复制,和其他一些特殊的复制场景。

STRICT是默认模式,并适用于其他大多数情况下。


90)slave_load_tmpdir                     默认/temp

这是从服务器复制load data infile语句时在哪里生成临时文件的目录。

默认是是系统的tmp文件夹。


91)slave_net_timeout                      默认3600

放弃读操作前等待主/从连接的更多数据的等待秒数。

作用域:全局

默认3600

最小值1


92) slave_skip_errors                      默认 OFF

正常的来说,当出现错误的时候,复制就会停止。

变量为ON的时候,则告诉服务器复制不管在任何错误提示的情况下都继续进行下去。

默认:OFF

值有以下:

[list of error codes]

all

ddl_exist_errors


93)slave_transaction_retries              默认10

如果因为InnoDB出现死锁或超过InnoDB的innodb_lock_wait_timeout设置的时间,复制从服务器SQL线程未能执行事务,在提示错误并停止前它自动重复slave_transaction_retries次。 默认值是10。


94)slave_max_allowed_pocket

见名知意,理论上应该越大越好


95)slave_type_conversions

 这个参数在mysql5.5.3 引入,目的是启用row 格式的bin-log 的时候,如果主从的column 的数据类型不一致,会导致复制失败,mysql5.5.3 之后支持,主库是int 从库是bigint 这种类型的复制,这个参数的意义就是控制些类型转换容错性。如果从库的类型比主库类型大,那么复制没有问题的。如果从库类型比主库类型小,比如从int 复制到tinyint 这个参数就会起作用。


96) slow_launch_time                        默认2

当创建线程的时间超过该秒数,服务器则增加Slow_launch_threads状态变量


97)slow_query_log                           默认OFF

98)slow_query_log_file                 

slow_query_log是否开启慢查询日志。slow_query_log_file是慢查询日志的路径。

这个和第一点类似


99) socket                               

在uninx平台上,该变量的值是用于本地客户端连接的socket文件的名字,默认是/var/run/mysqld/mysqld.socket


100) sort_buffer_size                     

每个排序线程分配的缓冲区的大小。增加该值可以加快ORDER BY或GROUP BY操作。

当用showglobal status输出信息后,看到很多Sort_merge_passes输出,则要增加sort_buffer_size 的值来提高order by 、group by 的性能,这种情况通过优化器优化和索引是不起作用。

默认2G 最大4G


101)sql_auto_is_null                     默认是OFF

如果sql_auto_is_null=1/ON,则会自动的插入给自动增长列插入值。

该值可以通过一下来获取

SELECT * FROMtbl_name WHERE auto_col IS NULL

如果有返回行数据,则插入的数值和last_insert_id()函数返回的值是一致。



102) sql_big_selects     默认是ON

SQL_BIG_SELECTS = {ON | OFF}

如果设置为 OFF ,则 MySQL 会放弃那些可能会耗费很长时间(是指那些通过优化程序估计到需要检查的行数会超过 max_join_size 设定值的情况)的 SELECT 语句。这在有不可取的 WHERE 语句出现时十分有用。 每个新连接的 SQL_BIG_SELECTS 默认值为 ON ,以允许执行所有的 SELECT 语句。如果设置系统变量 max_join_size 为非默认值( DEFAULT ),则 SQL_BIG_SELECTS 也会被自动设置成为 ON


104)sql_big_tables                          默认OFF

保存所有临时值在文件中来启用大型结果集,此选项可防止最“表已满”的错误,而且还减慢查询内存中的表就足够了。自MySQL3.23.2中,服务器能够处理大的结果,小临时表使用内存和切换到磁盘表在必要时自动设置。


105) sql_buffer_result                       默认OFF

若是1,sql_buffer_result强迫用select语句返回的结果保存在临时表。这样可以提前解开表的锁定,且当给客户端发送结果集要很久的情况下很有用。


106)sql_log_bin                            默认ON

变量控制语句是否写进二进制日志。

默认是开启。通过改变此变量来改变会话值,不过要有super权限

Ps:在version 5.6中没交易或子查询的情况下不可以通过set @@session.sql_log_bin来设置


107)sql_log_off                             默认OFF

变量控制是否写进常规日志。默认是OFF表示写,通过改变此变量来改变会话值,不过要有super权限


108) sql_low_priority_updates               默认 OFF

该控制控制读写优先级。

若值为1/ON,则读优先于写。即是所有INSERT, UPDATE, DELETE和 LOCK TABLEWRITE 语句都要等没有 SELECT或LOCKTABLE READ作用于表上才可执行操作

ps:一般情况下写优先于读


109)sql_max_join_size                      

不允许可能需要检查多于max_join_size行(为单个表语句)或行组合(为多个表语句)或可能执行大于max_join_size次硬盘查询的SELECT语句。通过设置该值,你可以捕获键使用不正确并可能花很长时间的SELECT语句。如果用户想要执行没有WHERE的子句且花较长时间或返回数百万行的联接,则设置它。

将该变量设置为DEFAULT之外的值,将SQL_BIG_SELECTS的值重设为0。如果你重新设置SQL_BIG_SELECTS值,sql_max_join_size变量被忽略。

如果查询结果位于查询缓存中,则不检查结果大小,因为前面已经计算了结果,不会要求服务器将它发送给客户端。

ps: max_join_size等同于sql_max_join_size


110)sql_mode    默认为空

SQL_MODE的设置其实是比较冒险的一种设置,因为在这种设置下可以允许一些非法操作,比如可以将NULL插入NOT NULL的字段中,也可以插入一些非法日期,如“2012-12-32”。因此在生产环境中强烈建议开发人员将这个值设为严格模式,这样有些问题可以在数据库的设计和开发阶段就能发现,而如果在生产环境下运行数据库后发现这类问题,那么修改的代价将变得十分巨大。此外,正确地设置SQL_MODE还可以做一些约束(Constraint)检查的工作。

严格模式是指将SQL_MODE变量设置为STRICT_TRANS_TABLES或STRICT_ALL_TABLES中的至少一种。

设置:

mysql> SET GLOBAL sql_mode=‘strict_trans_tables‘;



111) sql_notes                               默认ON

若是1/on,warning_count数会增加且服务器会记录警告内容,否者不会。

mysqldump输出内容到这个变量设置为0,使重载转储文件不会产生警告事件不影响重载操作的完整性。


112)sql_quote_show_create                  默认 ON

若值为1,则会给SHOW CREATE TABLE和SHOW CREATE DATABASE添加服务器引号表示符,

否则引号被禁用。


113) sql_safe_updates                       默认 OFF

值若是ON,则mysql则退出在where和limit字句中没关键字的update或delete语句。这有利于捕抓到键使用不当的update或delete语句。

默认值是OFF


114)sql_select_limit                

这是设置select查询语句返回数据最大行数。一个新的连接的默认值是服务器允许每个表的最大行数。如果你已经改变了极限,默认值可以通过指定一个DEFAULT值恢复。


115)sql_slave_skip_counter               

在主从库维护中,有时候需要跳过某个无法执行的命令,需要在slave处于stop状态下,执行 set global sql_slave_skip_counter=N以跳过命令。常用的且不易用错的是N=1的情况

set global sql_slave_skip_counter=N的意思,即为在start slave时,当N=1时,会连续跳过若干个event,直到当前所在的事务结束,  当然如果N>1,则每跳过一个event都要N--.

   小结:

   1、set global sql_slave_skip_counter=N中的N是指跳过N个event

   2、最好记的是N被设置为1时,效果跳过下一个事务

   3、跳过第N个event后,位置若刚好落在一个事务内部,则会跳过这整个事务

   4、一个insert/update/delete不一定只对应一个event,由引擎和日志格式决定



116) sql_warnings                           默认OFF

变量操作单行插入数据出现warning错误时是否产生一个warning字符串信息。

默认值是OFF,设置为ON的话就产生信息。


117) ssl_ca                              

一个受信任的SSL的CA列表中的文件路径。


118)ssl_capath                            

包含受信任的SSL PEM格式的CA证书目录的路径。


119)ssl_cert                               

为建立一个安全的连接使用的SSL证书文件的名称。


120) ssl_cipher                         

允许使用SSL加密的密码列表。


121)ssl_key                             

为建立一个安全的连接而使用的SSL密钥文件的名称。


122)storage_engine                          默认InnoDB

默认的存储引擎。


123)sync_binlog                             默认0

当值>0,则每一个sync_binlog写二进制日志后mysql都同步该日志到磁盘中(fddatasync()).



124)sync_frm                                默认ON

若值为true,任何非临时表在创建其.frm文件时会同步到磁盘。这会速度变慢但数据奔溃时安全点。

默认是:true


125)sync_master_info   

默认为0,如果大于0,从机同步master.info文件到磁盘后,每sync_master_info事件都会导致备库额外的fsync()操作


126)sync_relay_log

默认值0,如果大于0时,服务器中继日志同步到磁盘后,每一个sync_relay_log写入中继日志


127)sync_relay_log_info

默认值0,如果大于0,从机同步继电器log.info文件到磁盘后,每sync_relay_log_info交易会导致备库额外的fsync()操作


(125-127建议关闭)


128)system_time_zone                     

服务器系统时区。当 服务器开始执行时,它继承机器默认时区设置值,可以由运行服务器的账户或在启动脚本中进行修改。该值用来设置system_time_zone。典型情况用TZ环境变量来指定时区。还可以用mysqld_safe脚本的--timez选项来指定。


129)table_definition_cache               

可以存储在定义缓存的表定义的数目,如果使用大量的表,你可以创建一个大表的定义缓存,加快开放表,他表定义缓存占用较少的空间,并且不使用文件描述符,不像正常的表缓存。最低和默认值均为400。


130) table_open_cache                     

所有线程一共能打开的表的数量,增加该值增加mysqld要求的文件描述符的数量。

可以通过检查Opened_tables状态变量来检查是否要增加该值。

如果Opened_tables状态变量很大则不需要用flush tables,而是增加该变量的值。


131)thread_cache_size                       

变量设置多少个线程服务器重用缓存。当一个客户端断开连接的时候,该客户端的线程总数还没超过该值数时,则还是保存在缓冲区内。

如果有很多新的连接,则可以通过增加该值来提交性能。

通常情况下,这并不能提供一个显着的性能改进,除非你有一个很好的线程执行。

但是,如果服务器每秒有成千新连接的话,则需要确保该值足够大以至于新的连接的线程可以保存在缓存区内。


132)thread_handling                     

服务器用什么线程句柄来控制连接线程。

当值是no-theads,服务器使用单独的线程

当值是one-thread-per-connection,服务器用一个线程控制每一个客户连接。

当值是no-threads,在linux下debug是很有用的。


133)thread_concurrency    

 默认设置为 0,表示不限制并发数,这里推荐设置为0,更好去发挥CPU多核处理能力,提高并发量。这个参数在linux下面是有效的。默认是10,我改成0并被系统强制变成1之后,造成了经常阻塞的问题。目前我设置的是16,等于CPU线程数。其实10已经够用了,不建议修改此参数。


134)thread_stack                       

每个线程的栈的大小。crash-me测试检测到的限制,很多都是依赖于这个值。

如果线程的堆栈大小是太小了,它限制了复杂的服务器可以处理的SQL语句,存储过程的递归深度,和其他消耗内存的行动。


135) time_format                             |%H:%i:%s

变量被弃用


136)time_zone                              | SYSTEM

当前的时区。初使值是‘SYSTEM‘(使用system_time_zone的值),但可以用--default-time-zone选项在服务器启动时显式指定。


137)timed_mutexes                          |OFF

这个参数用来控制是否对Innodb引擎的mutex wait进行 计时统计,以方便进行性能诊断

timed_mutexes控制的mutex wait时间统计,因为只在debug模式下进行编译,而且5.6以后使用performance schema的等待事件进行替代,所以参数做了删除处理。


138) timestamp                           

TIMESTAMP值可以从1970的某时的开始一直到2037年,精度为一秒,其值作为数字显示。


139) tmp_table_size                      

如果内存内的临时表超过该值,MySQL自动将它转换为硬盘上的MyISAM表。如果你执行许多高级GROUP BY查询并且有大量内存,最好增加tmp_table_size的值。


140) tmpdir                                

临时目录的路径


141) transaction_alloc_block_size     

将保存到二进制日志中的事务因查询而分配的内存块的大小


142)transaction_prealloc_size             

为transaction_alloc_blocks分配的固定缓冲区的大小(字节),在两次查询之间不会释放。使该值足够大,将所有查询固定到一个事务中,可以避免多次malloc()调用。


143) tx_isolation                         

默认事务隔离级别。默认值为REPEATABLE-READ

变量可以被直接设置(全局),也可以通过set transaction=值 语句来设置。

值可以是:

READ-UNCOMMITTED

READ-COMMITTED

REPEATABLE-READ

SERIALIZABLE


144)unique_checks                           

变量控制是否在InnoDB表的辅助索引的唯一性进行检查。

当值是0/OFF,则服务器假设输入的数据不存在重复键,储存引擎跳过运行。(这个是你要储存的数据不用唯一性所以设为OFF)

默认值是ON


145)updatable_views_with_limit          

变量控制如果更新包含LIMIT子句,是否可以在当前表中使用不包含主关键字的视图进行更新。(通常用GUI工具生成这类更新)。更新指UPDATE或DELETE语句。这儿主关键字指PRIMARY KEY,或一个UNIQUE索引,其中任何列不可以包含NULL。

变量有两个值:

值是1或YES:只发出警告(没有错误消息)。这是 默认值。

值是0或NO:禁止更新。

默认值是YES


146)version                             

服务器的版本号


147)version_comment                      

configure脚本有一个--with-comment选项,当构建MySQL时可以进行注释。该变量包含注释值


148)version_compile_machine              

该Mysql程序是用什么工具编译出来的


149)version_compile_os                

该Mysql程序是编译时的操作系统


150)wait_timeout                          

服务器关闭非交互连接之前等待活动的秒数


151) warning_count                         

上一个查询语句出现的errors, warnings, notes错误的数目。

(DBA之路【八】)关于show variables那些参数的故事

标签:数据库   文件夹   敏感性   优先级   操作系统   

原文地址:http://10170308.blog.51cto.com/10160308/1661352

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!