§ 线程池 & 连接参数
§ 线程池
GreatSQL默认为每个客户端连接创建一个工作线程(one-thread-per-connection)。由于系统资源是有限的,并且创建、销毁线程也是有额外开销的,在这种模式下,一旦出现连接数瞬间激增的情况,数据库整体吞吐性能就会明显下降。
GreatSQL中引入线程池(Thread pool)特性,可以避免在连接数瞬间激增时因资源竞争而导致系统吞吐下降的问题,使得GreatSQL的性能表现更稳定。
详细描述详见:线程池(Thread pool)
§ 查看线程池特性是否开启
greatsql> SHOW GLOBAL VARIABLES LIKE "thread_handling";
+-----------------+-----------------+
| Variable_name | Value |
+-----------------+-----------------+
| thread_handling | pool-of-threads |
+-----------------+-----------------+
1 row in set (0.01 sec)
1
2
3
4
5
6
7
2
3
4
5
6
7
由输出可知,thread_handling
为pool-of-threads
时,表示线程池特性已开启。
§ 如何开启线程池特性
在my.cnf配置文件将设置选项thread_handling
值设为pool-of-threads
,并重启GreatSQL服务即可启用线程池特性:
[mysqld]
thread_handling = "pool-of-threads"
1
2
2
§ 连接参数
在GreatSQL中,关于常用连接参数有:
max_connect_errors
:允许单用户连接错误最大值max_connections
:实例最大连接数限制max_user_connections
:用户连接最大限制connect_timeout
:用户连接超时限制delayed_insert_timeout
:延迟插入超时时间interactive_timeout
:交互式连接超时时间- ......
使用SHOW GLOBAL VARIABLES LIKE
即可查看相关参数值
greatsql> SHOW GLOBAL VARIABLES LIKE "%max_connect%";
1
在开发中建议设置这些参数,以提升连接GreatSQL性能。
max_connect_errors
:建议设置为1000max_connections
:建议设置为1024max_user_connections
:建议设置为max_connections
参数的一半connect_timeout
:建议设置为10秒delayed_insert_timeout
:建议设置为300秒interactive_timeout
:建议设置为600秒- ......
使用SET GLOBAL
即可修改这些相关参数值
greatsql> SET GLOBAL max_connect_errors=1000;
1
扫码关注微信公众号