的back_log值指出多少请求可以被存储在堆栈在很短的时间之前的MySQL暂时停止回答一个新的要求。如果你有很多在短时间内连接,你需要增加它。换句话说,这是监听队列的大小对TCP / IP连接。您的操作系统对队列的大小,其自身的局限性,UNIX手册页听(2)系统调用应该有更多的细节。检查你的操作系统文档查找该变量的最大值。它是无效的尝试组比你的操作系统更高的back_log极限。

connect_timeout

mysqld服务器等待的秒数在响应是一个坏消息(连接握手说坏的握手)。

delayed_insert_timeout

插入延迟线程应等待等待插入语句终止之前的时间。

delayed_insert_limit

插入delayed_insert_limit线后,插入延迟处理器会检查任何SELECT语句不执行。如果是这样的话,这些语句的执行之前进行持续。

delayed_queue_size

对于延迟插入的处理,应该分配队列(有行)的数量。如果队列满了,执行插入延迟的任何客户都要等到队列有空为止。

flush_time

如果这是一个非零的值,在每一个flush_time二所有表将被关闭(释放资源并同步到磁盘)。

interactive_timeout

数秒服务器等待一个交互连接操作之前关闭它。一个交互式的客户定义为客户使用client_interactive选项mysql_real_connect()wait_timeout也可见。

join_buffer_size

完全连接(连接)的缓冲区的大小(不是索引连接)。缓冲区为2个表中的每一个分配一个缓冲区,并在索引不可能增加的情况下增加这个值以获得更快的完整连接(最好的获得快速连接的方法是增加索引)。

key_buffer_size

索引块的缓冲和由所有threads.key_buffer_size共享用于索引块的缓冲区大小,增加,它可以得到更好的处理指标(所有读多重写),在某种程度上,你能买得起它。如果你让它太大,系统将开始喂真慢。记住既然MySQL不缓存读取数据,你得留点空间给操作系统的文件系统缓存。为了获得更多的写作速度多行时,使用锁表。看到7.24lock表 /解锁表语法。

long_query_time

如果查询需要比这更多的时间(秒),该slow_queries记录器将被添加。

max_allowed_packet

一个包的最大尺寸。消息缓冲区初始化为net_buffer_length字节,但可以被添加到max_allowed_packet字节时需要。默认情况下,该值太小,捕捉大的(可能是错误的)数据包。如果你使用的是一个大的BLOB列,你需要增加这个值应为。你想要使用的最大的BLOB大。

max_connections

客户可以在同一时间数。增加这个值会增加文件描述符需要由mysqld数。看看下面的文件描述符的限制18.2.4评论。看到太多的连接错误。

max_connect_errors

如果主机中中断的连接数量超过了该主机,则此主机将阻止进一步连接。

max_delayed_threads

不要启动超过处理INSERT延迟语句的线程数。如果在插入所有延迟线程之后,尝试将数据插入到新表中,那么将插入行,就像没有指定延迟属性一样。

max_join_size

一个连接,可以多读max_join_size记录将返回一个错误。如果你的用户想要执行任何WHERE子句,花了很长时间,回到一百万线连接,设置它。

max_sort_length

字节数排序用BLOB或文本值(每个值仅用于头max_sort_length字节;其他的被忽略)。

max_tmp_tables

(选择现在不做任何事情)客户可以同时保持最大数量的临时表打开。

net_buffer_length

通信缓冲器复位大小之间的查询。通常这不应该被改变,但如果你的内存很小,你可以将它设置为查询的预期大小。(即所需长度由客户发出的SQL语句,如果语句超过这个长度,缓冲区自动扩展到max_allowed_packet字节。

record_buffer

每个顺序扫描线程分配一个缓冲区到扫描它的每个表的大小。如果进行大量的顺序扫描,您可能希望增加值。

sort_buffer

需要排序的每一个线程都分配了一个大小的缓冲区。将这个值添加到通过操作加速或按组排序。参见18.5 MySQL存储临时文件的位置。

table_cache

所有线程打开的表的数量,增加这个值可以增加文件描述符的数量要求mysqld.mysql需要2个文件描述符为每只打开表,看看下面的文件描述符的限制的评论,关于表缓存的工作信息,看看10.2.4 MySQL打开和关闭表。

tmp_table_size

如果临时表超过这个尺寸,MySQL生成一个表tbl_name满形状误差。如果你做了许多先进的组的查询,增加tmp_table_size价值。

thread_stack

每个线程的堆栈大小。崩溃ME测试中检测到的许多限制取决于值。默认团队的一般操作足够大。参见10.8使用自己的基准。

wait_timeout

数秒服务器等待一个连接动作结束之前it.interactive_timeout也可见。

MySQL使用是一种非常可伸缩的算法,因此通常可以使用较少的内存运行,或者为MySQL节省更多的内存以获得更好的性能。

如果你有大量的内存和大量的表,并且有一个中等数量的客户,你想要最大的性能,你应该有这样的东西:

壳> safe_mysqld O key_buffer = 1600万O table_cache = 128

O sort_buffer = 4 O record_buffer = 1m

如果内存较少,连接量大,请使用以下内容:

壳> safe_mysqld O key_buffer = 512k O sort_buffer = 100k

O record_buffer = 100k

甚至:

壳> safe_mysqld O key_buffer = 512k O sort_buffer = 16k

O table_cache = 32 - O record_buffer = 8 O net_buffer = 1k

如果有多个连接,除非mysqld已配置为每个连接使用很少的内存可能会发生交换的问题。当然,如果你有足够的内存用于所有连接,mysqld的表现更好。

注意,如果你改变一个为mysqld选项,它实际上是为服务器实例只保留。

为了理解参数更改的效果,请执行以下操作:

壳> mysqld - O key_buffer = 32m --帮助

确保帮助选项是最后一个选项;否则,在命令行之后列出的任何选项的效果将不反映在输出中。

重要的MySQL启动选项

back_log如果你需要大量的新的连接,修改它。

thread_cache_size如果你需要大量的新的连接,修改它。

的key_buffer_size索引页池可以设置为大尺寸。

由bdb_cache_size BDB表用于记录和密钥缓存。

table_cache如果有很多桌子和并发连接,修改它。

delay_key_write如果需要缓存的所有关键代码写的,把它。

log_slow_queries找到一个查询,需要花费大量的时间。

max_heap_table_size用于组

sort_buffer用于顺序和组

myisam_sort_buffer_size用于修表

join_buffer_size做无键连接时使用。

MySQL缓存(所有线程共享,一次性分配)

关键的代码缓存:key_buffer_size,默认8m。

表缓存:table_cache,默认为64。

线程缓存:thread_cache_size,默认为0。

主机名称缓存:可以在编译时修改,默认值为128。

内存映射器:当前仅用于压缩表。

注意:MySQL不进行缓存,并允许操作系统处理。

MySQL缓存区变量(非共享,按需)

sort_buffer: /组的顺序

record_buffer:扫描表。

join_buffer_size:无键联接

myisam_sort_buffer_size:修表

net_buffer_length:读取SQL语句和缓存结果。

tmp_table_size:为临时结果heap表的大小。