mysql系统变量专题学习(3)

发表于:2013-10-12来源:IT博客大学习作者:Benwin点击数: 标签:MySQL
更新设置此值对已存在的内存表没影响(重启mysql服务器就有),对create/update/truncate语句有影响。 ------------------------------------------------------------------- 16、m

  更新设置此值对已存在的内存表没影响(重启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,row pointer和查询所需要访问的字段

  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 from table 可看到基数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

原文转自:http://blogread.cn/it/article/5968