mysql 5.1 变量专题

下面是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错误的数目。

 

    原文作者:mysql
    原文地址: https://blog.csdn.net/BeiiGang/article/details/39030695
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞