荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Pazu (质变), 信区: Database
标  题: MYSQL性能优化(5)
发信站: BBS 荔园晨风站 (Tue Apr 18 11:30:22 2000), 转信

10.2.3 调节服务器参数
你能用这个命令得到mysqld服务器缺省缓冲区大小:

shell> mysqld --help

这个命令生成一张所有mysqld选项和可配置变量的表。输出包括缺省值并且看上去象这样一
些东西:

Possible variables for option --set-variable (-O) are:
back_log              current value: 5
connect_timeout       current value: 5
delayed_insert_timeout  current value: 300
delayed_insert_limit  current value: 100
delayed_queue_size    current value: 1000
flush_time            current value: 0
interactive_timeout   current value: 28800
join_buffer_size      current value: 131072
key_buffer_size       current value: 1048540
lower_case_table_names  current value: 0
long_query_time       current value: 10
max_allowed_packet    current value: 1048576
max_connections       current value: 100
max_connect_errors    current value: 10
max_delayed_threads   current value: 20
max_heap_table_size   current value: 16777216
max_join_size         current value: 4294967295
max_sort_length       current value: 1024
max_tmp_tables        current value: 32
max_write_lock_count  current value: 4294967295
net_buffer_length     current value: 16384
query_buffer_size     current value: 0
record_buffer         current value: 131072
sort_buffer           current value: 2097116
table_cache           current value: 64
thread_concurrency    current value: 10
tmp_table_size        current value: 1048576
thread_stack          current value: 131072
wait_timeout          current value: 28800

如果有一个mysqld服务器正在运行,通过执行这个命令,你可以看到它实际上使用的
变量的值:

shell> mysqladmin variables

每个选项在下面描述。对于缓冲区大小、长度和栈大小的值以字节给出,你能用于个
后缀“K”或“M” 指出以K字节或兆字节显示值。例如,16M指出16兆字节。后缀字
母的大小写没有关系;16M和16m是相同的。

你也可以用命令SHOW STATUS自一个运行的服务器看见一些统计。见7.21 SHOW语法(得
到表、列的信息)。

back_log
要求MySQL能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请
求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。
back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆
栈中。只有如果期望在一个短时间内?
泻芏嗔樱阈枰黾铀痪浠八担庵刀缘嚼吹腡CP/IP连接的侦听队列的大小。
你的操作系统在这个队列大小上有它自己的限制。 Unix listen(2)系统调用的手册页
应该有更多的细节。检查你的OS文档找出这个变量的最大值。试图设定back_log高于
你的操作系统的限制将是无效的。
connect_timeout
mysqld服务器在用Bad handshake(糟糕的握手)应答前正在等待一个连接报文的秒数。
delayed_insert_timeout
一个INSERT DELAYED线程应该在终止之前等待INSERT语句的时间。
delayed_insert_limit
在插入delayed_insert_limit行后,INSERT DELAYED处理器将检查是否有任何SELECT
语句未执行。如果这样,在继续前执行允许这些语句。
delayed_queue_size
应该为处理INSERT DELAYED分配多大一个队列(以行数)。如果排队满了,任何进行
INSERT DELAYED的客户将等待直到队列又有空间了。
flush_time
如果这被设置为非零值,那么每flush_time秒所有表将被关闭(以释放资源和sync到磁盘)

interactive_timeout
服务器在关上它前在一个交互连接上等待行动的秒数。一个交互的客户被定义为对
 mysql_real_connect()使用CLIENT_INTERACTIVE选项的客户。也可见wait_timeout。

join_buffer_size
用于全部联结(join)的缓冲区大小(不是用索引的联结)。缓冲区对2个表间的每个全部
联结分配一次缓冲区,礱cket
一个包的最大尺寸。消息缓冲区被初始化为net_buffer_length字节,但是可在需要时
增加到max_allowed_packet个字节。缺省地,该值太小必能捕捉大的(可能错误)包。
如果你正在使用大的BLOB列,你必须增加该值。它应该象你想要使用的最大BLOB的那
么大。
max_connections
允许的同时客户的数量。增加该值增加mysqld要求的文件描述符的数量。见下面对文
件描述符限制的注释。见18.2.4 Too many connections错误。
max_connect_errors
如果有多于该数量的从一台主机中断的连接,这台主机阻止进一步的连接。你可用
FLUSH HOSTS命令疏通一台主机。
max_delayed_threads
不要启动多于的这个数字的线程来处理INSERT DELAYED语句。如果你试图在所有
INSERT DELAYED线程在用后向一张新表插入数据,行将被插入,就像DELAYED属性没
被指定那样。
max_join_size
可能将要读入多于max_join_size个记录的联结将返回一个错误。如果你的幽数量。
增加该值能增加mysqld要求的文件描述符的数量。MySQL对每个唯一打开的表需要2个
文件描述符,见下面对文件描述符限制的注释。对于表缓存如何工作的信息,
见10.2.4 MySQL怎样打开和关闭表。

tmp_table_size
如果一张临时表超出该大小,MySQL产生一个The table tbl_name is full形式的错
误,如果你做很多高级GROUP BY查询,增加tmp_table_size值。
thread_stack
每个线程的栈大小。由crash-me测试检测到的许多限制依赖于该值。缺省队一般的操
作是足够大了。见10.8 使用你自己的基准。
wait_timeout
服务器在关闭它之前在一个连接上等待行动殿,它实际上只对服务器的那个例子保
持。

为了明白一个参数变化的效果,这样做:

shell> mysqld -O key_buffer=32m --help

保证--help选项是最后一个;否则,命令行上在它之后列出的任何选项的效果将不
在反映在输出中。

--


            我和我的影子。

※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.0.189]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店