查看数据库最大链接数(mysql> show variables like ‘max_connections’;):
set global max_connections=1000; 设置最大连接数
查看已连接的终端信息(mysql> show full processlist;):
event_scheduler数据库事件调度器(了解关于详细)
查看数据库线程活跃状态(mysql> show status like ‘Threads%’;):
Threads_connected这个参数值和show full processlist查出来的终端链接数是相同。
打开了三个客户端链接测试。
Threads_running 处于活跃状态的链接数,一般低于Threads_connected数值
Threads_connected 打开的连接数
Threads_created 创建过的链接数,这个数值过大表示数据库一直有创建新的链接,比较损耗资源。可以通过设置值Threads_cache来缓解。
Threads_cached 当前连接池中的空闲链接数
查看数据库连接池(mysql> show variables like’thread_cache_size’;):
设置 thread_cache_size
mysql>set global thread_cache_size = 20; (立即生效重启后失效)
MySQL 配置文件 my.cnf 中 mysqld 下添加 thread_cache_size
thread_cache_size = 20
我的单机当前数据库链接状况,和命令行数据对比:
Threads_cached | 0 当前连接池中空闲链接为0。
Threads_connected | 3 打开了三个链接,对应processlist结果表中Id为10,11,12三个链接。
Threads_created | 3 创建过3个链接,对应processlist结果表中Id为10,11,12三个链接。
Threads_running | 2 当前活跃的链接,processlist表中看到是4,12两个链接。
数据库创建链接会消耗很多资源,链接在空闲时不会去销毁,而是放入连接池Thread_Cache中。当有一个新的请求时不会去立即创建数据库链接,而是查看连接池中有没有空闲的链接,存在则直接使用,否则创建新的链接。
mybatis会将数据库连接作为一个对象存储在Vector中,不同的请求共享这写链接。创建链接也会根据池中是否有空闲链接来进行判断是直接使用或是新创建链接。