Home >Database >Mysql Tutorial >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 gl
下面是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变量,总数有五六百个,还是不少,一点一点来吧,一口吃不了个胖子。到网上找了个还算比较全的,放在这儿备查,下面这个文档当时搞了十几天,吼吼。
要深入研究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()
------------------------------------------------------------
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()
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
默认是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
optimizer_search_depth参数,对于单表查询无意义。
----------------------------------------------------------------------------------
50、 optimizer_switch | index_merge=on,index_merge_union=on,
index_merge_sort_union=on,index_merge_interdiv=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_interdiv |
Controls the Index Merge Interdiv 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()
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