mysql5.6 thread pool

从percona 的压测来看,确实很牛笔啊。提升很大。

http://www.mysqlperformanceblog.com/2014/01/29/percona-server-thread-pool-improvements/

当然,他指出目前mysql5.6 有2套thread pool ,一套是mysql企业版里面的,另外一套是maridb 的开发人员实现的,percona 在这个基础上又完善了一些,目前在percona mysql 里面可以直接用了。特别想应用一下。



2014年2月3日 15:03:19 

但是我用实际测了一下,用的是percona 的tpcc 工具。线程开到400,500 的时候,就已经不行了。。pc 还不大好测试,一共2g内存。每个thread 都是有内存开销的。

之前tpcc 的帖子幸好还有。http://www.cnblogs.com/gqdw/p/3187394.html

mysql tpcc<create_table.sql
mysql  tpcc<add_fkey_idx.sql
./tpcc_load localhost tpcc root "" 5

./tpcc_start -hlocalhost -dtpcc1000 -uroot -w5 -c16 -r10 -l200

  线程开到400,很多都是sleep的,即使开了thread pool 也没用。有时间到服务器上测一下。

AMD Athlon(tm) X2 240 Processor 这个cpu 2g 内存,


innodb_buffer_pool_size = 500M
#thread_handling=pool-of-threads
innodb_flush_log_at_trx_commit=2
max_connections=2000

能跑6000tpmc

表示每分钟能处理大概3000个订单的事物。每秒就是50个订单。



2014-02-04 10:01:55

发现之前对thread pool的认识是不对的,他其实不是一个直接提升性能的东西,

我们知道mysql 一般的模型是一个线程对应一个client 请求,当并发超过一定限度时,线程就互相争用系统资源,就比如cpu 100%了以后,你再多的client去连都是没用的,性能反而会直线下降。

就如这张图上的,直线下降。而用了thread pool 以后呢,控制连接数,剩下的放到pool 里面或者在外面等待,这样就不超系统的极限,性能得到了保证。

add 2014-02-04 23:15:39

又对服务器测了一下,8核的,12g内存。

发现最多能跑到4w tpmc 。很不错的成绩。

原文地址:https://www.cnblogs.com/gqdw/p/3537361.html