cy
I
oDB控制并发最基本的方式是使用i
odb_thread_co
curre
cy变量,它限制了一次有多少线程,它限制了一次有多少线程能进入内核,没有办法为所有的架构和负载确定最佳的并发数量,但通常情况下可以这样计算:并发CPU数量×磁盘数量×2,本系统计算并发数为8。
i
odb_thread_sleep_delay
f如果I
oDB内核中已经有了允许数量的线程,那么线程就不能再进入内核了,I
oDB采用了一种两阶段的过程来保证线程可以尽可能高效地进入内核,这种策略减少了操作系统引起的开销。线程首先睡眠i
odb_thread_sleep_delay所规定的微秒数,然后再进行尝试,如果还是不能进入,它就会进入一个等待线程的队列中并且把控制权交给操作系统。第一阶段默认的睡眠时间是10000微秒,当有很多线程都处于‘正在等待进入队列’这一状态时,改变这个值有助于提高系统并发,而默认值在有大量小查询的时候会太大了,因为它给查询增加了10毫秒延时。保持默认值,当并发使用大查询时才有必要调整该值。
i
odb_commit_co
curre
cy
I
oDB在提交阶段还有另外一种形式的并发瓶颈,就是刷写操作造成的密集IO操作。i
odb_commit_co
curre
cy变量决定了某一时刻有多少线程能进行提交。当系统有大量线程状况不佳时,可以尝试将该变量增加。保持默认值,即不限制并发提交线程数。
max_le
gth_for_sort_data
max_sort_le
gth
fMySQL有两种文件排序算法,如果需要进行排序的列的总大小超过了max_le
gth_for_sort_data定义的字节,MySQL就会使用双路排序,反之就会选择单路排序,双路排序需要两次访问数据,尤其是第二次读取操作会导致大量的随机IO操作。如果将并不需要的Colum
s也取出来,就会极大地浪费排序过程所需要的内存,为了尽可能地提高排序性能,尽量使用第二种排序算法,所以在查询中仅取出需要的列是非常有必要的。对于本系统,默认值足够大,能满足性能要求。
Aborted_clie
ts
如果Aborted_clie
ts变量随时间增加,那么就要确定是否正常地关闭了连接。如果不是,就要检查网络性能,并且检查max_allowed_packet变量,超多了max_allowed_packet的查询会被强制地中断。
Aborted_co
ects
Aborted_co
ects变量的值应接近于0,否则就可能有网络问题,有几个被中断的连接是正常的。例如,试着从错误的主机连接、使用了错误的用户名和密码,或者定义了无效的数据库,都会发生这样的情况。
f观察本系统10分钟内的Aborted_clie
ts变化,一直保持为0,说明没有连接方面的异常情况,可以定期观察该变量分析连接问题。
bi
log_cache_size
Bi
log_cache_disk_use
Bi
log_cache_use
当使用r