我有max_connections = 1000的mariadb。应用程序堆栈打开到数据库的450个连接,并且它被设计为高度并发。工作负载主要是插入/更新。当通过进行监视时,我注意到在数据库中同时执行的活动查询不超过11个。在我的例子中,我认为有些mysql设置会阻止更多的并发性,但我不知道它们是什么。控制并发性的mysql参数集完全令人困惑,很难看出其中的清晰性。我有这个:
MariaDB [(none)]> show variables like '%concurr%';
+----------------------------+--------+
| Variable_name | Value |
+----------------------------+--------+
| concurrent_insert | ALWAYS |
| innodb_commit_concurrency | 0 |
| innodb_concurrency_tickets | 5000 |
| innodb_thread_concurrency | 32 |
| thread_concurrency | 10 |
+----------------------------+--------+24个缓冲池实例,每个实例2GB,以及缓慢的GCP持久性磁盘。
最后一个参数被贬值(根据我的研究)。应该更改什么以增加mysql中的更多并发性?
发布于 2017-09-15 16:53:49
关于thread_concurrency:
这个变量被弃用,并在MySQL 5.7中被删除。除非是针对Solaris 8或更高版本,否则您应该在看到MySQL配置文件时从它中删除它。
所以,别费心改变它了。
同时,我要说你的观察是“正常的”。也就是说,您的450个连接正在执行非常快的查询,因此您在查看时碰巧只看到了11个。
你在应用程序中看到了什么意外的延迟吗?我怀疑不是。
您是否比其他查询更经常地看到某些特定的查询?是否有超过“2”的Time出现?如果是的话,让我们看看查询,加上SHOW CREATE TABLE。
是否有任何PROCESSLIST条目表示Locked。如果是这样的话,请使用最大的Time (不是Locked )查找查询,并研究为什么它运行这么长时间。
https://stackoverflow.com/questions/46244182
复制相似问题