下面是msql5.1 和mysql5.5的全局变量和会话变量总数
MYSQLVERSION:
5.1.72-0ubuntu0.10.04.1-log
select count(*) from global_VARIABLES;
277
select count(*) from session_VARIABLES;
277
MYSQLVERSION:
5.5.38-0ubuntu0.12.04.1
select count(*) from global_VARIABLES;
317
select count(*) from session_VARIABLES;
329
这几天想系统了解一下mysql变量,总数有五六百个,还是不少,一点一点来吧,一口吃不了个胖子。到网上找了个还算比较全的,放在这儿备查,下面这个文档当时搞了十几天,吼吼。
以下转载自http://www.verydemo.com/demo_c152_i53025.html
要深入研究mysql那首先对mysql的一些系统/扩展变量有一定的了解,因为这些变量不仅决定mysql一些配置信息,还影响了mysql的性能优化提升,其中包括安全、优化、并发、复制等等。
笔者上网查了一下,这些资料有限,以及官网的一个中文文档介绍的内容简短(不包括值域,作用域,有些变量压根没翻译只是给出值)所以想写篇文章,一来学习巩固一下mysql,二来方便以后查阅。其中内容笔者前后用了14天,尽量查阅大量资料(问人,网上查阅,自己测试)以确保尽可能正确,且有些直接从官网英文文档翻译过来,但难免会出现因为知识结构不全面而有什么纰漏。
PS:
一、想知道有那些变量(系统变量、状态变量、集群变量、日志变量…),在mysqladmin 中输入:“mysqladmin –u 用户 –p 密码 variable” 或者在mysql命令端用“showvariables”显示
二、以下所有测试的环境:win7、mysql 5.1.49-community-log
三、以下变量中的作用域有全局、会话,值域表示变量值的范围(这些是中文文档锁没有的)
1、 log_slow_queries | OFF/ON
慢查询记录日志,慢查询是指查询时间超过设定时间(如下面设为2秒)的查询,(还有个指标是第29点的min_examined_row_limit)这个可以记录那些查询语句比较慢,然后通过分析语句而优化数据库或查询语句。具体配置在my.ini加入:
log_show_queries = “日志路径/文件名” #保存日志的路径和文件名,确保权限可写
long_query_time =2 #超过多少秒则保存查询数据
log-queries-not-using-indexs #不使用使用索引
PS:加上代码后重启mysql后log_slow_queries=ON状态(默认OFF)
测试:select * from zd_ask;
结果:在指定的文件里面记录如下
C:\ProgramFiles\MySQL\MySQL Server 5.1\bin\mysqld, Version: 5.1.49-community-log (MySQLCommunity Server (GPL)). started with:
TCP Port: 3306, NamedPipe: (null)
Time Id Command Argument
# Time: 12042520:40:49
# User@Host:root[root] @ localhost [127.0.0.1]
# Query_time:0.452026 Lock_time: 0.187010 Rows_sent: 12408 Rows_examined: 12408
use bus7zd;
SETtimestamp=1335357649;
select * from zd_ask;
说明:超过时间的查询语句:select * from zd_ask; 查到的结果数:12408 时间:0.452026 其他就是环境信息。
作用域:全局
————————————————-
2、log_warnings | 1
默认值为1,表示在错误日志当中添加更多日志,日至格式:
120426 11:55:09[Worning]内容,上网查了一下,国内这个变量的资料少得可怜,查看官网英文文档,会把一些断开链接的错误写进错误日志里面。
可以在配置文件my.ini 加入skip-log-warnings=1来停止log_warning 的使用, skip-log-warnings=1后在mysqladmin 里面用”mysqladmin –u 用户名 –p密码 variables”查看,会发现log_warning的值是0而不是默认的1.
作用域:全局
————————————————–
3、long_query_time |10.000000
这是和log_slow_queries一起使用的,它是设置慢查询时间,若值是0.2,则查询大于0.2秒的定为慢查询。如果启用了慢查询日志,则会把慢查询的信息写如慢查询日志文件中。具体可以查看
作用域:全局 、会话
本文第一点。慢查询:http://www.phpben.com/?post=67
————————————————-
4、 low_priority_updates |OFF
这个变量是降低mysql写数据的权限的,mysql默认情况下写操作权限高于读操作。附加一些知识:在mysql MYISAM表中读写是串行,即是select时锁表,insert等待释放再,反之一样。然后为了减少锁存和锁读的频率,则引入了concurrent_insert这个变量,使读写能并行操作(具体根据concurrent_insert值还有mysql版本而定)
作用域:全局 、会话
在mysql5.06版本之后,concurrent_insert=0则读(select)的时候不能执行写(insert)concurrent_insert=1则select时写操作把数据写在文件,concurrent_insert=2和1差不多,不同的是:1在数据没内存碎片(洞)才能写在文件尾,否则还是写在洞里;而2则是在select时并发写入文件尾,当select释放读锁时,数据写入洞里面。—推荐用current_insert=2
官网描述:
Value | Description |
0 | Disables concurrent inserts |
1 | (Default) Enables concurrent insert for MyISAM tables that do not have holes |
2 | Enables concurrent inserts for all MyISAM tables, even those that have holes. For a table with a hole, new rows are inserted at the end of the table if it is in use by another thread. Otherwise, MySQL acquires a normal write lock and inserts the row into the hole. |
回正题:
low_priority_updates=1则是比上述方法更极端,直接给读操作优先与写操作。(不推荐)
———————————————————-
5、lower_case_file_system |ON
这是控制mysql数据库文件名在文件系统中是否对大小写敏感,默认是ON对大小写不敏感,OFF的话就是对大小写敏感。
作用域:全局
———————————————————-
6、lower_case_table_names |1
此变量是设置数据库名或表别名是否大小写敏感。
作用域:全局
0:存储时按照指定的表名,比较时对大小写敏感。
1:存储时按照小写(不管表是否有大写),比较时对大小写不敏感。
2:存储时按给定的表名,比较时用小写。
对于windows和Mac OX S 这些文件系统对大小写敏感的系统一般不设0,windows默认设置为1,Mac OXS设置为2。
————————————————————
7、max_allowed_packet |1048576
8、net_buffer_length | 16384
先介绍net_buffer_length,它是每个客户端线程的连接缓存区和结果缓冲区都是通过net_buffer_length来初始化,net_buffer_length默认初始值是16384(16K),但其值最大可以达到max_allowed_packet设定值,max_allowed_packe默认值是1M,最大达到1073741824(1G),其值必须是1024的倍数,否则回落到最靠近1024倍数值(如1025则值是1024),在内存允许的情况下,max_allowed_packe越大越好。
若max_allowed_packe设置的小,当增改(insert/update/load data infile…)数据库时,若出现大字符串或blob类型列且大小大于max_allowed_packe值则会出现以下问题。
My.ini加入配置
net_buffer_length=1024 #默认是16384,这里改小为了测试
max_allowed_packet=1025#默认是1M,这里虽然是1025而事实上值是1024
笔者更新表某列(值大于1024)则出现:
ERROR 1153 (08S01):Got a packet bigger than ‘max_allowed_packet’ bytes
注意:在version()<5.0.84net_buffer_length可以设置但没有效,version()=5.0.84是只读
————————————————————
9、 max_binlog_cache_size |4294963200
这是设置最大二进制日志的缓存区大小的变量。若处理多语句事务时需要的内存大小比设置值大的话就会提示一个error:Multi-statement transaction required more than’max_binlog_cache_size’ bytes of storage 。
这个变量最小值是4096(4K),最大值,在32位的系统中是4G,64位的是16P。
作用域:全局
在mysql5.0中,max_binlog_cache_size一修改则所有会话都受影响(可能之前的受延迟,笔者没查证过)
————————————————————–
10、 max_binlog_size |1073741824
这是设置每个二进制日志文件内容大小的变量,如果当前文件的数据量大于max_binlog_size的值时,则会关闭此文件,新建下个文件写入数据。
但是,当处理多语句事务(大事务)时,会出现文件数据大小比此值设置值大的情况。这是因为事务的二进制日志是块存储的,也就是说不会分割出来存放在两个日志文件中。
作用域:全局
——————————————————————
11、 max_connect_errors |10
设置某客户端链接mysql服务器失败次数,若次数超过此值,则锁定禁止该客户端链接服务器且提示错误,若在未超过此值有一次成功链接,则计数器会清零。
这是一个与性能无关的变量,而是安全方面考虑的,主要防止穷举法破解数据库用户和密码。
作用域:全局
默认值是10,32位系统1~ 4294967295,64位的是1~18446744073709547520
官方说:一旦锁定,要解锁只有方法:在mysql客户端flush hosts ;在mysqladmin中用mysqladmin flush-host
笔者在本机测试过:这个功能用不了 。
——————————————————————
12、 max_connections | 100
这个设置数据库并发可连接的数量
作用域:全局
值域:
Version()<=5.1.14 :默认100
Version()>=5.1.15 :默认151 1~16384
Version()>=5.1.17 :默认151 1~100000
这是网站成长必要修改的一个变量,允许多少人在网站上并发操作。
——————————————————————
13、max_delayed_threads |20
延迟操作Delay_insert最大线程数
作用域:全局 、会话
默认20 值域:0~16384
—————————————————————–
14、 max_error_count |64
Show warning 或show error 显示warning或Error显示的最大个数,默认是64,值域0~65535.此值不能改太小,否者若错误提示个数比此值多的话不方便调试。
作用域:全局 、会话
注意:此值不要调太小;对于已经运行系统,可设为0,不会提示错误。
—————————————————————–
15、max_heap_table_size |16777216
内存表最大行数。
作用域:全局 、会话
值域:32位操作系统16384~4294967295 64位操作系统16384 ~1844674407370954752
默认值都是16777216
更新设置此值对已存在的内存表没影响(重启mysql服务器就有),对create/update/truncate语句有影响。
——————————————————————-
16、max_insert_delayed_threads |20
是max_delayed_threads的别名,看第13点。
作用域:全局 、会话
———————————————————————–
17、 max_join_size |18446744073709551615
18、 sql_big_selects | ON
max_join_size和sql_big_selects
作用域:全局 、会话
sql_big_selects默认值是1,表示所有select查询都执行(不管时间长短)。
sql_big_selects=0/OFF时,mysql先估算单表查询结果行数或多表查询组合行数的大小,若比max_join_size大时,就会放弃该查询语句。
max_join_size默认是4294967295,值域:1~4294967295
注意:sql_big_selects=0/OF的情况下,max_join_size不齐作用,且当max_join_size设置为非默认值时,sql_big_selects会被重置为0.
————————————————————————
19、 max_length_for_sort_data | 1024 ====
确定使用的filesort算法的索引值大小的限值。
作用域:全局 、会话
=========以下引用网上内容这是地址:http://www.itpub.net/thread-1417429-1-1.html
mysql的filesort算法有两种:
一种是最初的算法,在MySQL 4.1以前只有这种算法,一种是改进的filesort算法,它出现在MySQL 4.1以后(blob和text类型的字段不能采用这种改进算法)
“最初的算法”流程如下:
1.读取所有的满足条件的数据,只包含sort key和row pointer两种数据
2.在buffer中执行qsort排序
3.排完序后,再根据row pointer去读取相应的行数据
从中可以看出,每次排序都需要读两次表,而根据row pointer去读表往往都是随机离散读的,所有其开销非常大。
改进后的filesort算法是:
1.读取所需要的数据,包含sort key,rowpointer和查询所需要访问的字段
2.根据sort key排序
3.按排序后的顺序读取数据,由于sort_buffer_size中包含了所需要的字段,因此不需要再回表了,可以直接返回结果给客户端。
很明显,这种改进的方法对sort_buffer_size的需求也大大增加.
所以为了防止性能下降,mysql增加了一个参数max_length_for_sort_data,当第一步中除了sort key以外的字段内容大于max_length_for_sort_data这个参数时,mysql将采用第一种排序算法。
——————————————————————–
20、max_prepared_stmt_count | 16382
该变量设置预处理语句限制数。这个功能能防止拒绝服务攻击,因为攻击可以通过大量的预处理语句致使服务器内存溢出来攻击。设置此变量就是一道安全屏障,此变量对原有的预处理语句不影响,但若是预处理语句的数量超过该变量的值,则不会新增预处理语句,而是等到预处理语句的值小于max_prepared_stmt_count的值才增加新语句。
作用域:全局
默认值:16382 值域:0~1048576
若设为0则表示不允许预处理语句。
注意:该变量是version()>5.0.21才有
—————————————————————–
21、max_relay_log_size |0
中继日志大小,和第10点的max_binlog_size类同,只不过中继日志是保存从服务器的日志,是从主服务器复制过来的二进制日志。
当max_relay_log_size=0则max_relay_log_size=max_binlog_size
当max_relay_log_size>0则中继日志大小是max_relay_log_size设定的值
作用域:全局
默认值:0 值域:0~1073741824
—————————————————————–
22、max_seeks_for_key |4294967295
此变量假定索引搜索行数最大值。也就是说这个值是索引搜索最大值。查询优化器会忽略索引基数(用show index fromtable 可看到基数cardinality),它假定扫描索引匹配的行数不会超过max_seeks_for_key设定值。
官网:可以通过改小这个值来强制mysql使用索引来代替全表扫描。
作用域:全局 、会话
在32位系统:默认4294967295,值域:1~ 4294967295
在64位系统:默认18446744073709547520,值域1~18446744073709547520
——————————————————————–
23、 max_sort_length |1024
当排序BLOB或者TEXT类型列数据时用的字节数。当数据长度> max_sort_length设定值,排序就用max_sort_length的长度来排序,后面的数据被忽略。
作用域:全局 、会话
默认是1024 值域:4~ 8388608
———————————————————————-
25、max_sp_recursion_depth | 0
设定存储过程(sp=>save procedures)最大递归数。
作用域:全局 、会话
默认0,禁止存储过程递归,最大值255
PS:此变量在version()=5.0.17引入
———————————————————————-
26、 max_tmp_tables | 32
设定客户端同时能打开临时表个数的最大值
作用域:全局 、会话
32位系统:默认32 值域:1~4294967295
64位系统:默认32 值域:1~18446744073709547520
PS: 官网:This variable does not yet doanything(该变量还没生效)
————————————————————
27、max_user_connections |0
Mysql每个用户能同时链接服务器最大值。0表示没有限制
默认值:0 值域:1~ 4294967295
作用域:全局 、会话
———————————————————————-
28、max_write_lock_count |4294967295
设定数据表写锁定最大数,注意:这是对同一个表来说的。
作用域:全局
值域:
32位系统:默认4294967295 值域:1~ 4294967295
64位系统:默认18446744073709547520 值域:1~18446744073709547520
网上有人说:当对同一个表锁定个数超过设定值的时候,服务器会释放读锁定。
笔者有些怀疑,做了个测试:
max_write_lock_count=4294967295
开启三个客户端,第一个锁定写,第二个select读取,第三个有加一个锁定,顺序1、2、3
当笔者开第一个锁定时,读客户端还在等待。
max_write_lock_count=2
第一锁定表,第二selcet语句,第三锁定表
1、 解开第一个锁,select这边没反应
2、 再加一个锁定(三个,解开一个还有两个),selcct这边还是没反应
3、 加一个客户端insert数据,即时3锁1插入1查找,当解开一个锁时,selcet和插入都有了反应且正常运行。
笔者结论是:
应该是:当写锁定超过限制且有其他客户端写操作时,部分读操作被释放。
——————————————————————
29、min_examined_row_limit |0
这也是判断一个查询是否是慢查询的一个变量,参考第1点的log_slow_queries
若查询的结果集行数大于min_examined_row_limit值,则查询被当作慢查询写入慢查询日志。
作用域:全局 、会话
值域:
32位系统:默认4294967295值域:1~ 4294967295
64位系统:默认18446744073709547520 值域:1~18446744073709547520
——————————————————————-
30、multi_range_count |256
veriosn=5.03加入该变量
设定查询语句中range范围最大个数,如“whereid>100 and userId<50”是两个范围。
默认是256
作用域:全局 、会话
值域:1~ 4294967295
一般不改此参数。
———————————————————————
31、 myisam_data_pointer_size |6
默认指针大小,单位是字节, MAX_ROWS不指定时,CREATE TABLE使用该变量创建MyISAM表。默认值是6。值域:2~7
作用域:全局
——————————————————————–
32、 myisam_max_sort_file_size |107374182400
当用到REPAIRTABLE, ALTER TABLE, LOAD DATA INFILE的时候,相应的索引会被重建,然后要用到临时文件,此变量就是设置临时文件大小的。如果索引文件大小比此值小,系统则调用速度更慢的键值创建索引。
作用域:全局
默认是2G
官网建议:如果MyISAM索引文件大于2G且硬盘空间允许,增大该值可以提高性能。注意的是增加的空间是包含原来索引文件空间的。
———————————————————————–
33、 myisam_mmap_size |4294967295
Mmp:memorymapping 内存映射
设置使用内存映射压缩MyISAM表文件的最大内存量的变量。
如果许多压缩MyISAM表使用,可以通过降低该值来减低内存交换问题出现的可能性。
作用域:全局
值域:
32位系统:默认4294967295值域:1~ 4294967295
64位系统:默认18446744073709547520 值域:1~18446744073709547520
——————————————————————-
34、myisam_recover_options |OFF
设置MyISAM存储模式,它的值可以是OFF, DEFAULT, BACKUP, FORCE, QUICK任意组合,组合值则用‘,’隔开。
默认是OFF。
若非OFF的话,表示每次打开MyISAM表都检查表是否崩溃或者非正常保存,否则和尝试修复表。
修复按照值选项而定:
OFF:关闭
DEFAULT:修复中没有BACKUP, FORCE,QUICK
BACKUP:如果修复过程中用户修改数据,则把“表名.MYD”文件备份成“表名-时间.BAK”文件
FORCE:继续修复数据即便是丢失大量数据
QUICK:不检查表中的行,如果没有任何删除块。
还有的是,修复之前,mysql会在错误日志中写入note,这个note关于修复的。
官网建议:如果想在不受用户打扰的情况下修复数据,则设置为“BACKUP, FORCE”。这样的话,就强制修复即便有人删除数据,修复完了还可以用备份数据查看发生情况。
作用域:全局
———————————————————————-
35、 myisam_repair_threads | 1
myisam_repair_threads=1 则在repairby sort时,MyISAM表索引在各自线程中并发创建。
作用域:全局|会话
值域:
32位系统:默认1 值域:1~ 4294967295
64位系统:默认1 值域:1~18446744073709547520
————————————————————————
36、 myisam_sort_buffer_size |31457280
REPAIR TABLE或则 CREATEINDEX 和 ALTER TABLE创建索引的时候,.给分配的缓冲区的大小。
作用域:全局|会话
值域:
32位系统:默认8388608 值域:4~ 4294967295
64位系统:默认8388608 值域:4~18446744073709547520
————————————————————————
37、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
———————————————————————–
38、myisam_use_mmap |OFF
这个变量开启的话,就利用内存映射来读和写myisam表,默认是关闭的OFF,一般内存服饰很大的情况下是不会开启这一项
作用域:全局
—————————————————————————
39、named_pipe |OFF
该变量指示mysql服务器是否支持管道连接。
只使用windows系统
作用域:全局
—————————————————————————
40、 net_read_timeout |30
设置服务器放弃读前多少秒以等到更多的连接数据,当服务器从客户端读取,net_read_timeout是设施多少秒后终止读,而类是的变量net_write_timeout设置终止写。也就是mysql为了保证连接不被浪费在无尽的等待中,mysql 通过net_read_timeout、net_write_timeout来主动终止连接。
作用域:全局、会话
值域:默认30 最小是1
—————————————————————————-
41、net_write_timeout | 60
看上。
作用域:全局、会话
值域:默认60 最小是1
—————————————————————————-
42、net_retry_count |10
如果读或写一个通信端口中断,mysql放弃前尝试连接的次数。在FreeBSD系统中此值应设置很高,因为FreeBSD内部中断被发送到所有线程去。
作用域:全局|会话
值域:
32位系统:默认10 值域:1~ 4294967295
64位系统:默认10 值域:1~18446744073709547520
—————————————————————————–
43、 new |OFF
该变量用于mysql4.0启用mysql4.1一些新功能,和为了保持向后兼容性。在mysql5.6中,这个变量的值都是OFF。
作用域:全局|会话
默认是False
—————————————————————————–
44、 old |OFF
Old是兼容性变量。默认被禁用,在旧版本的服务器可以通过重启服务器时启用。
目前,old被启用时,它改变使用索引提示的默认范围到MySQL5.1.17之前。也就是说,没有FOR子句仅适用于如何使用索引检索行,而不是解决ORDER BY或GROUP BY子句的索引提示。在复制设置启用这个变量时要注意些,基于语句的二进制日志,主从服务器有不同的模式可能会导致复制错误。
作用域:全局
默认是:OFF
——————————————————————————-
45、old_alter_table |OFF
当该变量被启用,则mysql服务器不会使用alerttable 优化方法。在mysql5.0和更早版本,先用个临时表,复制数据进去,然后重命名到原始的临时表。
作用域:全局
默认值:OFF
———————————————————————————-
46、old_passwords |OFF
该变量设置是否启用mysql4.1之前的账户密码类型。
作用域:全局
默认值:OFF
———————————————————————————
47、 open_files_limit |622
设置操作系统允许mysqld允许打开的文件数。这是系统允许的真正值,可能和你用–open-files-limit选项给mysqld或mysqld_safe设置的值不同。该值是0的系统上,MySQL不能更改打开的文件数
作用域:全局
默认值:0 值域:0-65535
——————————————————————————
48、optimizer_prune_level |1
该变量为1,控制启发式应用在查询优化过程中,从优化空间中剪去不太有用的部分计划。
值0禁用启发式优化执行穷举搜索。
值1时让优化器根据被检索的行数通过中间计划来剪去不太有用的计划。
作用域:全局、会话
默认值:1
值域是:0或1
———————————————————————————
49、 optimizer_search_depth |62
查询优化器进行的搜索的最大深度。如果值大于查询中的关系数则查询方案比较佳,但生成查询执行方案需要的时间更长。值大于查询中的关系数则返回的执行方案更快,但方案远没有优化。如果设置为0, 系统自动选择合理的值。
作用域:全局、会话
默认值:62
值域是:0-62
ps:上述的关系数即时join连结中的表数。
如果optimizer_search_depth设置过大,那么join时,获取最优执行计划的代价十分巨大。
optimizer_search_depth= join tables的数量,一定能获得最优执行计划(根据mysql的代价估计模型),但是计算代价大。
optimizer_search_depth< join tables的数量,获取的执行计划,是局部最优,但是计算代价小。
optimizer_search_depth参数,对于单表查询无意义。
———————————————————————————-
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、pid_file |C:\ProgramData\MySQL\MySQL Server 5.1\Data\Bsky-PC.pid
进程ID(PID)文件的路径名。可以用–pid-file选项设置该变量
作用域:全局
值域是:文件目录,字符串
————————————————————————————-
52、 plugin_dir |C:\Program Files\MySQL\MySQL Server
5.1\lib/plugin
插件目录的路径。在MySQL 5.1.2中加入了该变量。
如果插件目录对服务器可写,则有可能给用户通过“SELECT … INTO DUMPFILE”在目录中写可执行代码。可以通过设置插件目录只读来阻止或者给目录设置–secure-file-priv select可写老保持安全 。
类型:目录名
默认是:mysql安装目录/lib/pligin
—————————————————————————————-
53、 port | 3306
Mysql监听tcp/ip端口号
默认3306
—————————————————————————————-
54、 preload_buffer_size |32768
重载索引时分配的缓冲区大小
作用域:全局、会话
默认值:32768
值域是:1024~1073741824
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、 pseudo_thread_id |0
这个变量是内部服务器使用。
——————————————————————————————–
59、query_alloc_block_size |8192
语句解析和执行过程中创建的对象分配的内存块分配大小。如果你有内存碎片的问题,它可能有助于提高此参数。
作用域:全局,会话
值域:
32位系统:默认8192 值域:1024~ 4294967295
64位系统:默认8192 值域:1024~18446744073709547520
———————————————————————————————-
60、query_cache_limit |1048576
不要缓存大于该值的结果。默认值是1048576(1MB)。
作用域:全局,会话
值域:
32位系统:默认1048576 值域:0~ 4294967295
64位系统:默认1048576 值域:0~18446744073709547520
——————————————————————————————–
61、 query_cache_min_res_unit |4096
查询缓存分配的最小块的大小(字节)。 默认值是4096(4KB)
作用域:全局
值域:
32位系统:默认4096 值域:512~ 4294967295
64位系统:默认4096 值域:512~18446744073709547520
——————————————————————————————-
62、query_cache_size |104857600
为缓存查询结果分配的内存的数量。默认值是0,即禁用查询缓存。
请注意即使query_cache_type设置为0也将分配此数量的内存。
作用域:全局
值域:
32位系统:默认0 值域:0~ 4294967295
64位系统:默认0 值域:0~18446744073709547520
——————————————————————————————–
63、query_cache_type | ON
设置查询缓存类型。设置GLOBAL值可以设置后面的所有客户端连接的类型。客户端可以设置SESSION值以影响他们自己对查询缓存的使用。下面的表显示了可能的值。
0或OFF
不要缓存或查询结果。请注意这样不会取消分配的查询缓存区。要想取消,你应将query_cache_size设置为0。
1或ON
缓存除了以SELECT SQL_NO_CACHE开头的所有查询结果。
2或DEMAND
只缓存以SELECTSQL_NO_CACHE开头的查询结果。
—————————————————————————————-
64、query_cache_wlock_invalidate |OFF
一般情况,当客户端对MyISAM表进行WRITE锁定时,如果查询结果位于查询缓存中,则其它客户端未被锁定,可以对该表进行查询。将该变量设置为1,则可以对表进行WRITE锁定,使查询缓存内所有对该表进行的查询变得非法。这样当锁定生效时,可以强制其它试图访问表的客户端来等待。
作用域:全局
值域:
默认FALSE
————————————————————————————-
65、query_prealloc_size |8192
用于查询分析和执行的固定缓冲区的大小。在查询之间该缓冲区不释放。如果你执行复杂查询,分配更大的query_prealloc_size值可以帮助提高性能,因为它可以降低查询过程中服务器分配内存的需求。
作用域:全局、会话
值域:
32位系统:默认8192 值域:8192~ 4294967295
64位系统:默认8192 值域:8192~18446744073709547520
————————————————————————————
66、rand_seed1 |
67、rand_seed2 |
这两个变量只作用域只是会话层,可以可写不可读,所以用show vriabales是显示不了变量的值。
这两个变量是为了使rand()函数支持被复制。在含有rand()查询中,主服务器必须给从服务器传递两个值,它们用于种子随机数发生器。从服务器使用这些值来设置会话变量rand_seed1和rand_seed2 以至从服务器产生与主服务器相同的值。
————————————————————————————–
68、range_alloc_block_size |4096
该变量是设置范围优化时分配的块的大小。
作用域:全局、会话
默认8192
值域:8192~ 4294967295
————————————————————————————-
69、 read_buffer_size |2097152
每个线程连续扫描时为扫描的每个表分配的缓冲区的大小(字节)。如果进行多次连续扫描,可能需要增加该值, 默认值为131072。该值应是4K的倍数,如果不是4k的倍数,则回滚到最接近4k倍数的值。
值域:4K~2G
—————————————————————————————
70、read_only |OFF
当变量对复制从服务器设置为ON时,从服务器不允许更新,除非通过从服务器的线程或用户拥有SUPER权限。可以确保从服务器不接受客户端的更新命令。
READ_ONLY不适用临时表,也防止服务器日志表插入行,这个变量并不妨碍分析TABLE或OPTIMIZE TABLE命令语句的使用,因为其目的是为了防止表的结构或内容的变化。
READ_ONLY只存在一个全局变量,所以需要SUPER权限才能改变其值。在主服务器上的设置为READ_ONLY不会被复制到从服务器。可以在主从服务器上分开、独立的设置READ_ONLY的值。
作用域:全局
默认是:false
——————————————————————————————
71、 read_rnd_buffer_size |262144
当排序后按排序后的顺序读取行时,则通过该缓冲区读取行,避免搜索硬盘。将该变量设置为较大的值可以大大改进ORDER BY的性能。但是,这是为每个客户端分配的缓冲区,因此你不应将全局变量设置为较大的值。相反,只为需要运行大查询的客户端更改会话变量。
作用域:全局、会话
默认262144
值域:8200~ 4294967295
——————————————————————————————
72、relay_log_index |
使用的中继日志索引文件的名称。默认名称是HOST_NAM_relay_bin.index数据目录中,其中host_name是从服务器的名称。
如果指定此选项,指定的值也被用作中继日志的主档名。
作用域:全局、会话
值:文件名
ps:笔者这里没有中继日志,所以为空。
——————————————————————————————
73、relay_log_info_file |relay-log.info
这是从服务器保存中继日志有关信息的文件名。
默认是relay-log.info
——————————————————————————————
74、 relay_log_purge |ON
当不再需要中继日志时禁用或启用自动清空中继日志。默认值是1(启用)。
这是一个全局变量且可以通过SET GLOBAL relay_log_purge = N.来动态改变。
——————————————————————————————
75、 relay_log_space_limit |0
所有中继日志空间大小。
作用域:全局
值域:
32位系统:默认0 值域:0~ 4294967295
64位系统:默认0 值域:0~18446744073709547520
——————————————————————————————
76、 report_host |
— report_host 选项的值
作用域:全局
字符串类型值
——————————————————————————————
77、 report_password |
–report_password 选项的值 ,与MySQL的复制用户帐户使用的密码不相同。
作用域:全局
字符串类型值
——————————————————————————————
78、 report_port |3306
— report_port 选项的值
作用域:全局
默认是0
Ps:version()>5.6.5
——————————————————————————————
79、 report_user |
— report_user 选项的值 ,与MySQL的复制用户帐户使用的账户不相同。
作用域:全局
——————————————————————————————
80、 rpl_recovery_rank |0
——————————————————————————————
81、 secure_auth |OFF
如果用–secure-auth选项启动了MySQL服务器,它将阻塞有旧格式(4.1之前)密码的所有账户所发起的连接。在这种情况下,该变量的值为ON,否则为OFF。
如果你想要防止使用旧格式的密码(致使网络通信不安全),你应启用该选项。
Version()<=5.6.4默认是OFF
Version()>=5.6.5 默认是ON
——————————————————————————————
82、 secure_file_priv |
该变量默认为空,若给该变量赋值(目录),则限制函数load_file(),load data,和select … into outfile 语句只有在相应目录下起作用。
作用域:全局
默认为空
——————————————————————————————
83、server_id |0
–server-id选项的值。用于主复制服务器和从复制服务器。
默认值:0
值域:0~ 4294967295
——————————————————————————————
84、 shared_memory |OFF
(只用于Windows)服务器是否允许共享内存连接。
作用域:全局
——————————————————————————————
85、shared_memory_base_name |MYSQL
(只用于Windows)说明服务器是否允许共享内存连接,并为共享内存设置识别符。当在单台机器上运行多个MySQL实例时很有用。
作用域:全局
——————————————————————————————
86、skip_external_locking |ON
如果mysqld使用外部锁定,该值为OFF,否则是ON。这个在MYISAM表中有作用
——————————————————————————————
87、skip_name_resolve | OFF
这是变量是通过选项—skip-name-resolve设置。
若是ON,在检查客户端连接时,mysqld会解析主机名。
若是OFF,mysqld使用唯一的IP号码和所有在授权表的Host列值必须是IP地址或localhost
——————————————————————————————
88、skip_networking |OFF
如果服务器只允许本地(非TCP/IP)连接,该值为ON。在Unix中,本地连接使用Unix套接字文件。在Windows中,本地连接使用命名管道或共享内存。在NetWare中,只支持TCP/IP连接,因此不要将该变量设置为ON。
——————————————————————————————
89、 skip_show_database |OFF
防止不具有SHOW DATABASES权限的人们使用SHOW DATABASES语句。如果你担心用户能够看见属于其它用户的数据库,这样设置可以提高安全性。其效果取决于SHOW DATABASES权限:如果变量值为ON,只允许具有SHOW DATABASES权限的人们使用SHOW DATABASES 语句,并且该语句将显示所有数据库名。如果值为OFF,允许所有用户执行SHOW DATABASES,但只显示用户具有SHOW DATABASES或其它权限的数据库的名称。
ps:这个对mysql服务器安全性能提升很有用
——————————————————————————————
90、 slave_compressed_protocol |OFF
如果ON,则在主、从服务器均支持,使用从/主压缩协议。
默认是OFF
——————————————————————————————
91、 slave_exec_mode |STRICT
控制在复制的冲突解决和错误检查中是使用IDEMPOTENT模式还是STRICT模式。
IDEMPOTENT模式会发生抑制重复键和no-key-found错误,这种模式下,应采用多主复制,循环复制,和其他一些特殊的复制场景。
是默认模式,并适用于其他大多数情况下。
——————————————————————————————
92、slave_load_tmpdir |C:\Windows\TEMP
这是从服务器复制load data infile语句时在哪里生成临时文件的目录。
默认是是系统的tmp文件夹。
——————————————————————————————
93、slave_net_timeout |3600
放弃读操作前等待主/从连接的更多数据的等待秒数。
作用域:全局
默认3600
最小值1
——————————————————————————————
94、 slave_skip_errors | OFF
正常的来说,当出现错误的时候,复制就会停止。
该变量为ON的时候,则告诉服务器复制不管在任何错误提示的情况下都继续进行下去。
默认:OFF
值有以下:
[list of error codes]
all
ddl_exist_errors
——————————————————————————————
95、slave_transaction_retries |10
如果因为InnoDB出现死锁或超过InnoDB的innodb_lock_wait_timeout设置的时间,复制从服务器SQL线程未能执行事务,在提示错误并停止前它自动重复slave_transaction_retries次。 默认值是10。
——————————————————————————————
96、 slow_launch_time |2
当创建线程的时间超过该秒数,服务器则增加Slow_launch_threads状态变量。
——————————————————————————————
97、slow_query_log |OFF
98、slow_query_log_file |C:\ProgramData\MySQL\MySQL Server 5.
1\Data\Bsky-PC-slow.log
slow_query_log是否开启慢查询日志。slow_query_log_file是慢查询日志的路径。
这个和第一点类似
——————————————————————————————
99、 socket |MySQL
在uninx平台上,该变量的值是用于本地客户端连接的socket文件的名字,默认是‘tmp/mysql.socket’(对于一些分布式中,比较特殊,如RPMs 中是/var/lib/mysql)
在windows,则是本地客户端命名管道连接的文件名,默认是mysql(不区分大小写)
——————————————————————————————
100、 sort_buffer_size |262144
每个排序线程分配的缓冲区的大小。增加该值可以加快ORDER BY或GROUP BY操作。
当用showglobal status输出信息后,看到很多Sort_merge_passes输出,则要增加sort_buffer_size 的值来提高order by 、group by 的性能,这种情况通过优化器优化和索引是不起作用。
默认2G 最大4G
作用域:全局、会话
值域:
32位系统:默认2097144 值域:0~ 4294967295
64位系统:默认2097144 值域:0~18446744073709547520
——————————————————————————————
101、 sql_auto_is_null |ON
如果sql_auto_is_null=1/ON,则会自动的插入给自动增长列插入值。
该值可以通过一下来获取
SELECT * FROMtbl_name WHERE auto_col IS NULL
如果有返回行数据,则插入的数值和last_insert_id()函数返回的值是一致。
默认是0
——————————————————————————————
102、 sql_big_tables |OFF
保存所有临时值在文件中来启用大型结果集,此选项可防止最“表已满”的错误,而且还减慢查询内存中的表就足够了。自MySQL3.23.2中,服务器能够处理大的结果,小临时表使用内存和切换到磁盘表在必要时自动设置。
——————————————————————————————
103、 sql_buffer_result |OFF
若是1,sql_buffer_result强迫用select语句返回的结果保存在临时表。这样可以提前解开表的锁定,且当给客户端发送结果集要很久的情况下很有用。
默认值0
作用域:全局,会话
——————————————————————————————
104、sql_log_bin |ON
该变量控制语句是否写进二进制日志。
默认是开启。通过改变此变量来改变会话值,不过要有super权限
Ps:在version 5.6中没交易或子查询的情况下不可以通过set @@session.sql_log_bin来设置
——————————————————————————————
105、sql_log_off |OFF
该变量控制是否写进常规日志。默认是OFF表示写,通过改变此变量来改变会话值,不过要有super权限
——————————————————————————————
106、 sql_log_update |ON
是否开启更新日志。详情可以看http://www.phpben.com/?post=67
作用域:全局
——————————————————————————————
107、 sql_low_priority_updates | OFF
该控制控制读写优先级。
若值为1/ON,则读优先于写。即是所有INSERT, UPDATE, DELETE和 LOCK TABLEWRITE 语句都要等没有 SELECT或LOCKTABLE READ作用于表上
ps:一般情况下写优先于读
——————————————————————————————
108、sql_max_join_size |18446744073709551615
不允许可能需要检查多于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
——————————————————————————————
109、sql_mode |STRICT_TRANS_TABLES,NO_AUTO_CREATE_U
SER,NO_ENGINE_SUBSTITUTION
——————————————————————————————
110、 sql_notes |ON
若是1/on,warning_count数会增加且服务器会记录警告内容,否者不会。
mysqldump输出内容到这个变量设置为0,使重载转储文件不会产生警告事件不影响重载操作的完整性。
——————————————————————————————
111、sql_quote_show_create | ON
若值为1,则会给SHOW CREATE TABLE和SHOW CREATE DATABASE添加服务器引号表示符
否则引号被禁用。
——————————————————————————————
112、 sql_safe_updates | OFF
值若是1,则mysql则退出在where和limit字句中没关键字的update或delete语句。这有利于捕抓到键使用不当的update或delete语句。
默认值是0
——————————————————————————————
113、sql_select_limit |18446744073709551615
这是设置select查询语句返回数据最大行数。一个新的连接的默认值是服务器允许每个表的最大行数。如果你已经改变了极限,默认值可以通过指定一个DEFAULT值恢复。
——————————————————————————————
114、sql_slave_skip_counter |
从服务器应跳过的从主服务器传来的事件的数量。
——————————————————————————————
115、 sql_warnings | OFF
该变量操作单行插入数据出现warning错误时是否产生一个warning字符串信息。
默认值是0,1的话就产生信息。
——————————————————————————————
116、 ssl_ca |
一个受信任的SSL的CA列表中的文件路径。
作用域:全局
——————————————————————————————
117、ssl_capath |
包含受信任的SSL PEM格式的CA证书目录的路径。
作用域:全局
——————————————————————————————
118、ssl_cert |
为建立一个安全的连接使用的SSL证书文件的名称。
作用域:全局
——————————————————————————————
119、 ssl_cipher |
允许使用SSL加密的密码列表。
作用域:全局
——————————————————————————————
120、ssl_key |
为建立一个安全的连接使用的SSL密钥文件的名称。
作用域:全局
——————————————————————————————
121、storage_engine |InnoDB
默认的存储引擎。
——————————————————————————————
122、sync_binlog |0
当值>0,则每一个sync_binlog写二进制日志后mysql都同步该日志到磁盘中(fddatasync()).
作用域:全局
值域:
32位系统:默认0 值域:0~ 4294967295
64位系统:默认0 值域:0~18446744073709547520
——————————————————————————————
123、sync_frm |ON
若值为1,任何非临时表在创建其.frm文件时会同步到磁盘。这会速度变慢但数据奔溃时安全点。
作用域:全局变量。
默认是:true
——————————————————————————————
124、system_time_zone |
服务器系统时区。当 服务器开始执行时,它继承机器默认时区设置值,可以由运行服务器的账户或在启动脚本中进行修改。该值用来设置system_time_zone。典型情况用TZ环境变量来指定时区。还可以用mysqld_safe脚本的–timez选项来指定。
作用域:全局
——————————————————————————————
125、table_definition_cache | 256
可以存储在定义缓存的表定义的数目,如果使用大量的表,你可以创建一个大表的定义缓存,加快开放表,他表定义缓存占用较少的空间,并且不使用文件描述符,不像正常的表缓存。最低和默认值均为400。
作用域:全局
默认值:400
值域:0~ 524288
——————————————————————————————
126、 table_lock_wait_timeout |50
这个参数已经没用了
——————————————————————————————
127、 table_open_cache |256
所有线程一共能打开的表的数量,增加该值增加mysqld要求的文件描述符的数量。
可以通过检查Opened_tables状态变量来检查是否要增加该值。
如果Opened_tables状态变量很大则不需要用flush tables,而是怎么该变量的值。
作用域:全局
默认值:400
值域:400~52488
——————————————————————————————
128、table_type | InnoDB
默认创建表时用到的引擎
——————————————————————————————
129、thread_cache_size |8
该变量设置多少个线程服务器重用缓存。当一个客户端断开连接的时候,该客户端的线程总数还没超过该值数时,则还是保存在缓冲区内。
如果有很多新的连接,则可以通过增加该值来提交性能。
通常情况下,这并不能提供一个显着的性能改进,除非你有一个很好的线程执行。
但是,如果服务器每秒有成千新连接的话,则需要确保该值足够大以至于新的连接的线程可以保存在缓存区内。
默认值:0
值域:0~16384
——————————————————————————————
130、thread_handling |one-thread-per-connection
服务器用什么线程句柄来控制连接线程。
当值是no-theads,服务器使用单独的线程
当值是one-thread-per-connection,服务器用一个线程控制每一个客户连接。
当值是no-threads,在linux下debug是很有用的。
作用域:全局
——————————————————————————————
131、thread_stack |196608
每个线程的栈的大小。crash-me测试检测到的限制,很多都是依赖于这个值。
如果线程的堆栈大小是太小了,它限制了复杂的服务器可以处理的SQL语句,存储过程的递归深度,和其他消耗内存的行动。
作用域:全局
值域:
32位系统:默认196608 值域:131072~ 4294967295
64位系统:默认262144 值域:262144 ~18446744073709547520
——————————————————————————————
132、 time_format |%H:%i:%s
该变量被弃用
——————————————————————————————
133、time_zone | SYSTEM
当前的时区。初使值是’SYSTEM'(使用system_time_zone的值),但可以用–default-time-zone选项在服务器启动时显式指定。
作用域:全局、会话
——————————————————————————————
134、timed_mutexes |OFF
——————————————————————————————
135、 timestamp |1335315763
时间戳
设置此客户端的时间。这是用来取得原始时间戳,如果您使用的二进制日志恢复行。 timestamp_value应该是一个Unix纪元时间戳,而不是一个MySQL时间戳。
——————————————————————————————
136、 tmp_table_size | 15728640
如果内存内的临时表超过该值,MySQL自动将它转换为硬盘上的MyISAM表。如果你执行许多高级GROUP BY查询并且有大量内存,则可以增加tmp_table_size的值。
作用域:全局、会话
默认值:0
值域:1024~ 4294967295
——————————————————————————————
137、 tmpdir | C:\Windows\TEMP
临时目录的路径
——————————————————————————————
138、 transaction_alloc_block_size |8192
将保存到二进制日志中的事务的查询而分配的内存块的大小
作用域:全局、会话
值域:
32位系统:默认8192 值域:1024~ 4294967295
64位系统:默认8192值域:1024 ~18446744073709547520
——————————————————————————————
139、transaction_prealloc_size |4096
为transaction_alloc_blocks分配的固定缓冲区的大小(字节),在两次查询之间不会释放。使该值足够大,将所有查询固定到一个事务中,可以避免多次malloc()调用。
作用域:全局、会话
值域:
32位系统:默认4096 值域:1024~ 4294967295
64位系统:默认4096值域:1024 ~18446744073709547520
——————————————————————————————
140、 tx_isolation |REPEATABLE-READ
默认事务隔离级别。默认值为REPEATABLE-READ
该变量可以被直接设置(全局),也可以通过set transaction=值 语句来设置。
值可以是:
READ-UNCOMMITTED
READ-COMMITTED
REPEATABLE-READ
SERIALIZABLE
——————————————————————————————
141、unique_checks |ON
该变量控制是否在InnoDB表的辅助索引的唯一性进行检查。
当值是0/OFF,则服务器假设输入的数据不存在重复键,储存引擎则跳过运行。(这个是你要储存的数据不用唯一性)
作用域:全局、会话
默认值是1
——————————————————————————————
142、updatable_views_with_limit |YES
该变量控制如果更新包含LIMIT子句,是否可以在当前表中使用不包含主关键字的视图进行更新。(通常用GUI工具生成这类更新)。更新指UPDATE或DELETE语句。这儿主关键字指PRIMARY KEY,或一个UNIQUE索引,其中任何列不可以包含NULL。
该变量有两个值:
值是1或YES:只发出警告(没有错误消息)。这是 默认值。
值是0或NO:禁止更新。
作用域:全局、会话
默认值是1
——————————————————————————————
143、version |5.1.49-community
服务器的版本号
——————————————————————————————
144、version_comment |MySQL Community Server (GPL)
configure脚本有一个–with-comment选项,当构建MySQL时可以进行注释。该变量包含注释值
作用域:全局
——————————————————————————————
145、version_compile_machine |ia32
该Mysql程序是用什么工具编译出来的
——————————————————————————————
146、version_compile_os | Win32
该Mysql程序是编译时的操作系统
——————————————————————————————
147、wait_timeout | 28800
服务器关闭非交互连接之前等待活动的秒数
作用域:全局、会话
值域:
32位系统:默认28800 值域:1~ 4294967295
64位系统:默认28800 值域:1 ~18446744073709547520
——————————————————————————————
148、 warning_count |1
上一个查询语句出现的errors, warnings, notes错误的数目。