Home > Database > Mysql Tutorial > mysql 5.1 变量专题

mysql 5.1 变量专题

WBOY
Release: 2016-06-07 15:46:49
Original
928 people have browsed it

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

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template