Maison >base de données >tutoriel mysql >mysql 5.1 变量专题

mysql 5.1 变量专题

WBOY
WBOYoriginal
2016-06-07 15:46:49933parcourir

下面是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

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:MYSQL常用的命令Article suivant:MySQL字符串函数