MySQL与其它商业数据库相比,最为人诟病的就是其并发特性,高并发下,Mysql可能会出现糟糕的性能。
Myisam并发调优
concurrent_insert控制了Myisam引擎的并发插入行为,他有三个值配置
0:Myisam不允许并发插入行为
1:默认值,只要表中没有空闲的区域,Myisam就允许并发插入
2:强制并发插入到表末尾。使用此值可能会导致表碎片增多。
其它还有delay_key_write,以及low_priority_updates要选择合适的场景使用
Innodb并发优化
innodb_thread_concurrency控制了一次有多少线程进入内核,0表示不限制,理论上,这个值的设置可以参考CPU
及磁盘数量,设置此参数的值等于CPU数量×磁盘数量×2
innodb采用两阶段的方式保证线程尽可能高效的进入内核,这种操作减少了操作系统带来的上下文切换带来的开销
线程先sleep规定的微秒数,然后尝试进入内核。如果不能进入,进入一个线程的等待队列并把控制权交给系统。
Innodb_thread_sleep_delay 这个参数设定了sleep的时间,默认是10000微秒。
如果是在大量小查询的系统上,可以适当调小此值。