vlambda博客
学习文章列表

数据库优化之连接优化

提及数据库,数据的查询优化是个非常常见问题,那么该怎么答好数据库优化这个问题呢?

首先我们要明白,数据库查询的一个执行流程,如下图所示。

客户端在查询服务器缓存之前,首先会和服务器端进行一个连接, 本文就该连接的优化进行一个介绍。

一、考虑服务器端

     设置最大连接数。有时候出现 Too many connections 错误,一个是因为并发太大,另一个原因就是最大连接数设置过小。比较理想的情况是: 服务器响应的最大连接数大于设置的最大连接数的10%。

    设置服务端线程池数目:服务端5.6之后,服务端不在是一个请求开启一个线程来进行处理,而是共用线程池中的线程进行所有请求的处理,避免开启线程的消耗。 推荐线程池的线程数目为:2*CPU核数+1。


二、考虑客户端

    客户端采用线程池。客户端采用线程池的一个好处就是不用每个请求开启一个连接,这样减少连接数,降低服务端的压力。

    目前dubbo 和druid都是采用的线程池。当然线程池数目可以根据自己的业务量的大小进行一个合理的设置。