快捷搜索:   nginx

mysql动态系统变量简介(2)


是否启用符号链接支持。在Unix中需要用于支持DATA DIRECTORY和INDEX DIRECTORY表选项。
· init_connect
服务器为每个连接的客户端执行的字符串。字符串由一个或多个SQL语句组成。要想指定多个语句,用分号间隔开。例如,每个客户端开始时默
认启用autocommit模式。没有全局服务器变量可以规定autocommit默认情况下应禁用,但可以用init_connect来获得相同的效果:
SET GLOBAL init_connect='SET AUTOCOMMIT=0';
还可以在命令行或选项文件中设置该变量。要想使用选项文件设置变量,应包括下述行:
[mysqld]
init_connect='SET AUTOCOMMIT=0'
请注意init_connect的内容并不为拥有SUPER权限的用户执行;实际是内容设置错误(包含错误查询,例如语法错误),这样使所有连接失败。不为
SUPER用户执行,使SUPER用户可以打开连接并固定init_connect。
· init_file
启动服务器时用--init-file选项指定的文件名。文件中包含服务器启动时要执行的SQL语句。每个语句必须在同一行中并且不能包括注释。
· init_slave
该变量类似init_connect,但是每次SQL线程启动时从服务器应执行该字符串。该字符串的格式与init_connect变量相同。
· innodb_xxx
InnoDB系统变量列入“InnoDB启动选项”。
· interactive_timeout
服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。又见
wait_timeout。
· join_buffer_size
用于完全联接的缓冲区的大小(当不使用索引的时候使用联接操作)。一般情况获得快速联接的最好方法是添加索引。当增加索引时不可能通过增
加join_buffer_size值来获得快速完全联接。将为两个表之间的每个完全联接分配联接缓冲区。对于多个表之间不使用索引的复杂联接,需要多联接
缓冲区。
· key_buffer_size
MyISAM表的索引块分配了缓冲区,由所有线程共享。key_buffer_size是索引块缓冲区的大小。键值缓冲区即为键值缓存。
key_buffer_size的最大允许设定值为4GB。有效最大值可以更小,取决于可用物理RAM和操作系统或硬件平台强加的每个进程的RAM限制。
增加该值,达到你可以提供的更好的索引处理(所有读和多个写操作)。通常为主要运行MySQL的机器内存的25%。但是,如果你将该值设得过大
(例如,大于总内存的50%),系统将转换为页并变得极慢。MySQL依赖操作系统来执行数据读取时的文件系统缓存,因此你必须为文件系统缓存
留一些空间。
同时写多行时要想速度更快,应使用LOCK TABLES。

你可以通过执行SHOW STATUS语句并检查Key_read_requests、Key_reads、Key_write_requests和Key_writes状态变量来检查键值缓冲区的性能。

Key_reads/Key_read_requests比例一般应小于0.01。如果你使用更新和删除,Key_writes/Key_write_requests比例通常接近1,但如果你更新时会同时影
响到多行或如果你正使用DELAY_KEY_WRITE表选项,可能小得多。
用key_buffer_size结合Key_blocks_unused状态变量和缓冲区块大小,可以确定使用的键值缓冲区的比例。从key_cache_block_size服务器变量可以获得缓
冲区块大小。使用的缓冲区的比例为:
1 - ((Key_blocks_unused * key_cache_block_size) / key_buffer_size)
该值为约数,因为键值缓冲区的部分空间被分配用作内部管理结构。
可以创建多个MyISAM键值缓存。4GB限制可以适合每个缓存,而不是一个组。

· key_cache_age_threshold
该值控制将缓冲区从键值缓存热子链(sub-chain)降级到温子链(sub-chain)。如果值更低,则降级更快。最小值为100。 默认值是300。

· key_cache_block_size
键值缓存内块的字节大小。默认值是1024。
· key_cache_division_limit
键值缓存缓冲区链热子链和温子链的划分点。该值为缓冲区链用于温子链的百分比。允许的值的范围为1到100。 默认值是100。

· language
错误消息所用语言。
· large_file_support
mysqld编译时是否使用了大文件支持选项。
· large_pages
说明是否启用了大页面支持。
· license
服务器的许可类型。
· local_infile
是否LOCAL支持LOAD DATA INFILE语句。
· locked_in_memory
是否用–memlock将mysqld锁在内存中。
· log
是否启用将所有查询记录到常规查询日志中。
· log_bin
是否启用二进制日志。
· log_bin_trust_routine_creators
若启用了二进制记录,则该变量适用。它控制是否可以信任保存的程序的作者不会创建向二进制日志写入不安全事件的程序。如果设置为0(默认
情况),不允许用户创建或修改保存的程序,除非他们不仅拥有CREATE ROUTINE或ALTER ROUTINE权限还拥有SUPER权限。
设置为0还强制限制,程序必须用DETERMINISTIC 特征或用READS SQL DATA或NO SQL特征声明。如果变量设置为1,MySQL不对保存程序的创建
强加限制。
· log_error
错误日志的位置。
· log_slave_updates
是否从服务器从主服务器收到的更新应记入从服务器自己的二进制日志。要想生效,必须启用从服务器的二进制记录。
项”。
· log_slow_queries
是否记录慢查询。用long_query_time变量的值来确定“慢查询”。
· log_warnings
是否产生其它警告消息。默认情况下启用。放弃的连接不记入错误日志,除非值大于1。
· long_query_time
如果查询时间超过该值,则增加Slow_queries状态变量。如果你正使用--log-slow-queries选项,则查询记入慢查询日志文件。用实际时间测量该值,
而不是CPU时间,因此低于轻负载系统阈值的查询可能超过重负载系统的阈值。

· low_priority_updates
如果设置为1,所有INSERT、UPDATE、DELETE和LOCK TABLE WRITE语句将等待直到受影响的表没有挂起的SELECT或LOCK TABLE READ。该
变量以前叫做sql_low_priority_updates。
· lower_case_file_system
该变量说明是否数据目录所在的文件系统对文件名的大小写敏感。ON说明对文件名的大小写不敏感,OFF表示敏感。
· lower_case_table_names
如果设置为1,表名用小写保存到硬盘上,并且表名比较时不对大小写敏感。如果设置为2,按照指定的保存表名,但按照小写来比较。该选项还适
合数据库名和表的别名。
如果你正使用InnoDB表,你应在所有平台上将该变量设置为1,强制将名字转换为小写。
如果运行MySQL的系统对文件名的大小写不敏感(例如Windows或Mac OS X),你不应将该变量设置为0。如果启动时没有设置该变量,并且数据目
录所在文件系统对文件名的大小写不敏感,MySQL自动将lower_case_table_names设置为2。
· max_allowed_packet
包或任何生成的/中间字符串的最大大小。
包消息缓冲区初始化为net_buffer_length字节,但需要时可以增长到max_allowed_packet字节。该值默认很小,以捕获大的(可能是错误的)数据包。
如果你使用大的BLOB 列或长字符串,你必须增加该值。应同你想要使用的最大的BLOB一样大。max_allowed_packet的协议限制为1GB。
· max_binlog_cache_size
如果多语句事务需要更大的内存,你会得到错误Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage。
· max_binlog_size
如果二进制日志写入的内容超出给定值,日志就会发生滚动。你不能将该变量设置为大于1GB或小于4096字节。 默认值是1GB。
请注意如果你正使用事务:事务以一个块写入二进制日志,因此不不能被几个二进制日志拆分。因此,如果你有大的事务,二进制日志可能会大
于max_binlog_size。
如果max_relay_log_size为0, max_binlog_size的值也适用于中继日志。
· max_connect_errors
如果中断的与主机的连接超过该数目,该主机则阻塞后面的连接。你可以用 FLUSH HOSTS语句解锁锁定的主机。
· max_connections
允许的并行客户端连接数目。增大该值则增加mysqld 需要的文件描述符的数量。
· max_delayed_threads
不要启动大于该数目的线程来处理INSERT DELAYED语句。如果所有INSERT DELAYED线程已经在使用,你想在新表中插入数据,行 插入时好像
未指定DELAYED属性。如果你将该值设置为0,MySQL不会创建线程来处理DELAYED行;其结果是完全禁用了DELAYED。
· max_error_count
保存由SHOW ERRORS或SHOW WARNINGS显示的错误、警告和注解的最大数目。
· max_heap_table_size
该变量设置MEMORY (HEAP)表可以增长到的最大空间大小。该变量用来计算MEMORY表的MAX_ROWS值。在已有的MEMORY表上设置该变量
没有效果,除非用CREATE TABLE或TRUNCATE TABLE等语句重新创建表。
· max_insert_delayed_threads
该变量为max_delayed_threads的同义词。
· max_join_size
不允许可能需要检查多于max_join_size行(为单个表语句)或行组合(为多个表语句)或可能执行大于max_join_size次硬盘查询的SELECT语句。通过设
置该值,你可以捕获键使用不正确并可能花很长时间的SELECT语句。如果用户想要执行没有WHERE子句的花较长时间或返回数百万行的联接,
则设置它。
将该变量设置为DEFAULT之外的值,将SQL_BIG_SELECTS的值重设为0。如果你重新设置SQL_BIG_SELECTS值,max_join_size变量被忽略。
如果查询结果位于查询缓存中,则不检查结果大小,因为前面已经计算了结果,不会要求服务器将它发送给客户端。
该变量以前叫做sql_max_join_size。
· max_length_for_sort_data
确定使用的filesort算法的索引值大小的限值。
· max_relay_log_size
如果复制从服务器写入中继日志时超出给定值,则滚动中继日志。通过该变量你可以对中继日志和二进制日志设置不同的限制。但是,将该变量
设置为0,MySQL可以对二进制日志和中继日志使用max_binlog_size。max_relay_log_size必须设置在4096字节和1GB(包括)之间,或为0。 默认值是
0。

· max_seeks_for_key
限制根据键值寻找行时的最大搜索数。MySQL优化器假定当用扫描键在表内搜索匹配的行时,不需要超过该数量的键值搜索,而不管键的实际基
数是什么。将该值设置为较低的值(100?),你可以强制MySQL选择键值而不选择表扫描。
· max_sort_length
当排序BLOB或TEXT值时使用的字节数。只使用每个值的前max_sort_length字节;其它的被忽略。
· max_tmp_tables
客户端可以同时打开的临时表的最大数。(但该选项还未生效)。
· max_user_connections
任何给定的MySQL账户允许的最大同时连接数。0值表示“没有限制”。
该变量具有全局范围和(只读)会话范围。会话变量的的值与全局变量的值相同,除非当前账户具有非零MAX_USER_CONNECTIONS资源限制。
在这种情况下,会话值反应了账户限制。
· max_write_lock_count
超过写锁定限制后,允许部分读锁定。
· myisam_data_pointer_size
默认指针大小,单位是字节,当未指定MAX_ROWS选项时,CREATE TABLE使用该变量创建MyISAM表。该变量不能小于2或大于7。 默认值是
6。

· (DEPRECATED) myisam_max_extra_sort_file_size
注释:MySQL 5.1不支持该变量。
· myisam_max_sort_file_size
重建MyISAM索引(在REPAIR TABLE、ALTER TABLE或LOAD DATA INFILE过程中)时,允许MySQL使用的临时文件的最大空间大小。如果文件的
大小超过该值,则使用键值缓存创建索引,要慢得多。该值的单位为字节。
· myisam_recover_options
--myisam-recover选项的值。
· myisam_repair_threads
如果该值大于1,在Repair by sorting过程中并行创建MyISAM表索引(每个索引在自己的线程内)。 默认值是1。注释:多线程维护仍然是alpha 编码。
· myisam_sort_buffer_size
当在REPAIR TABLE或用CREATE INDEX创建索引或ALTER TABLE过程中排序 MyISAM索引分配的缓冲区。
· myisam_stats_method
当为MyISAM表搜集关于索引值分发的统计信息时服务器如何处理NULL值。该变量有两个可能的值,nulls_equal和nulls_unequal。对于nulls_equal,认
为所有NULL索引值时相等的,并形成一个数值组,其空间大小等于NULL值的数。对于nulls_unequal,NULL值认为是不相等的,每个NULL形成一个
数值组,大小为1。
方法用于生成表统计信息,影响优化器如何选择索引来执行查询,

· multi_read_range
指定范围选择过程中发送到存储引擎的范围的最大值。默认值是256。向引擎发送多个范围可以大大改进某些选择的性能,特别是对
NDBCLUSTER。该引擎需要向所有节点发送范围请求,同时发送许多请求可以大大降低通信成本。
· named_pipe
(只适用Windows)说明服务器是否支持命名管道连接。
· net_buffer_length
在查询之间将通信缓冲区重设为该值。一般情况不应改变,但如果内存很小,可以将它设置为期望的客户端发送的SQL语句的长度。如果语句超
出该长度,缓冲区自动扩大,直到max_allowed_packet字节。
· net_read_timeout
中断读前等待连接的其它数据的秒数。当服务器从客户端读数时,net_read_timeout指控制何时中断的超时值。当服务器向客户端写时,
net_write_timeout指控制何时中断的超时值。又见slave_net_timeout。
· net_retry_count
如果某个通信端口的读操作中断了,在放弃前重试多次。在FreeBSD中该值应设得很高,因为内部中断将发送至所有线程。
· net_write_timeout
中断写之前等待块写入连接的秒数。又见net_read_timeout。
· new
在MySQL 4.0中使用该变量来打开4.1中的一些行为,并用于向后兼容性。在MySQL 5.1中,它的值一直是OFF.
· old_passwords
是否服务器应为MySQL用户账户使用pre-4.1-style密码。
· one_shot
这不是一个变量,但当设置变量是可以使用它。
· one_shot
这不是一个变量,但当设置变量是可以使用它。
· open_files_limit
操作系统允许mysqld打开的文件的数量。这是系统允许的实际值,可能与你在启动选项中赋给mysqld的值不同。若在系统中MySQL不能更改打开
的文件的数量,则该值为0。
· optimizer_prune_level
在查询优化从优化器搜索空间裁减低希望局部计划中使用的控制方法。0值禁用该方法,以便优化器进行穷举搜索。值为1使优化器根据中间方案
中得出的行数来裁减方案。
· optimizer_search_depth
查询优化器进行的搜索的最大深度。如果值大于查询中的关系数则查询方案比较佳,但生成查询执行方案需要的时间更长。值大于查询中的关系
数则返回的执行方案更快,但方案远没有优化。如果设置为0, 系统自动选择合理的值。如果设置为查询中使用的表的最大数加2,优化器转换为
MySQL 5.0.0(和以前的版本)中使用的算法并搜索。
· pid_file
进程ID (PID)文件的路径名。可以用--pid-file选项设置该变量。
· plugin_dir
插件目录的路径。在MySQL 5.1.2中加入了该变量。
· port
服务器帧听TCP/IP连接所用端口。可以用--port选项设置该变量。
· preload_buffer_size
重载索引时分配的缓冲区大小。
· protocol_version
MySQL服务器使用的客户端/服务器协议的版本。
· query_alloc_block_size
为查询分析和执行过程中创建的对象分配的内存块大小。如果内存分段过程中遇到问题,将该变量增加一位会有帮助。
· query_cache_limit
不要缓存大于该值的结果。默认值是1048576(1MB)。
· query_cache_min_res_unit
查询缓存分配的最小块的大小(字节)。 默认值是4096(4KB)。关于该变量的调节信息

· query_cache_size
为缓存查询结果分配的内存的数量。默认值是0,即禁用查询缓存。请注意即使query_cache_type设置为0也将分配此数量的内存。详细信息参见
· query_cache_type
设置查询缓存类型。设置GLOBAL值可以设置后面的所有客户端连接的类型。客户端可以设置SESSION值以影响他们自己对查询缓存的使用。下
面的表显示了可能的值:
选项描述
0或OFF 不要缓存或查询结果。请注意这样不会取消分配的查询缓存区。要想取消,你应将query_cache_size设置为0。
1或ON 缓存除了以SELECT SQL_NO_CACHE开头的所有查询结果。
2或DEMAND 只缓存以SELECT SQL_NO_CACHE开头的查询结果。
该变量默认设为ON。
· query_cache_wlock_invalidate
一般情况,当客户端对MyISAM表进行WRITE锁定时,如果查询结果位于查询缓存中,则其它客户端未被锁定,可以对该表进行查询。将该变量
设置为1,则可以对表进行WRITE锁定,使查询缓存内所有对该表进行的查询变得非法。这样当锁定生效时,可以强制其它试图访问表的客户来等待。
· query_prealloc_size
用于查询分析和执行的固定缓冲区的大小。在查询之间该缓冲区不释放。如果你执行复杂查询,分配更大的query_prealloc_size值可以帮助提高性
能,因为它可以降低查询过程中服务器分配内存的需求。
· range_alloc_block_size
范围优化时分配的块的大小。
· read_buffer_size
每个线程连续扫描时为扫描的每个表分配的缓冲区的大小(字节)。如果进行多次连续扫描,可能需要增加该值, 默认值为131072。
· read_only
当变量对复制从服务器设置为ON时,从服务器不允许更新,除非通过从服务器的线程或用户拥有SUPER权限。可以确保从服务器不接受客户端的
更新命令。
· relay_log_purge
当不再需要中继日志时禁用或启用自动清空中继日志。默认值是1(启用)。
· read_rnd_buffer_size
当排序后按排序后的顺序读取行时,则通过该缓冲区读取行,避免搜索硬盘。将该变量设置为较大的值可以大大改进ORDER BY的性能。但是,
这是为每个客户端分配的缓冲区,因此你不应将全局变量设置为较大的值。相反,只为需要运行大查询的客户端更改会话变量。

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论