之前我们学习的都是如何将在数据库层进行优化,那么mysql客户端是否可以进行一些优化,显然我们所要进行的优化就是对数据库连接的优化。
1.使用连接池
使用数据库连接池可以将应用需要的连接在项目启动的时候就创建出来,在每次使用完毕之后根据条件进行回收。如此,应用就不需要进行连接的创建,从而节省连接建立所需要的时间消耗。
2.减少对mysql的访问
减少对mysql的访问,其实就是说我们在编写sql的时候能一次性的获取所需要的数据就不要走多次,对于所需要的数据进行查询就可以,不要查询不需要的数据。
3.使用查询缓存
mysql提供了查询缓存的功能,也就是通过以查询的sql和返回的结果作为key和value,这样查询相同的sql就直接走缓存了。开启高速缓存,我们只需要在my.ini文件中添加下面的配置就可以,作者在本地尝试之后发现mysql无法启动,所以怀疑是版本有问题。大家可以尝试 一下啊。
代码语言:javascript复制show variables like '%query_cache%'
代码语言:javascript复制# 高速缓存
hava_query_cache=YES
# 单个结果集的最大空间
query_cache_limit=10
# 每个被缓存的结果集要占用的最小内存。
query_cache_min_res_unit=10
#缓存区域的大小,单位M
query_cache_size=10
# 0或者off表示关闭,1或者on表示打开(对使用sql_no_cache提示的select不提供),2表示只有带sql_cache的select语句提供高速缓存
query_cache_type=1
4.增加cache层
增加cache层的意思就是在代码中添加缓存,在java中可以通过concumenthashmap做相关的功能。相关的产品比较多。
5.负载均衡
负载均衡的意思就是将sql的负载匹配到不同的mysql服务器上,比如主从复制可以进行有效分流更新和查询,而且具有很好的高可用特性。当然对于不同的物理库,我们也可以创建不同的索引来满足不同的查询需要。
6.其他方面
* 对于没有删除相关操作的myisam,插入和查询可以并行操作
* 利用默认值得特定,在插入数据的时候会减轻sql解析的速度
* 表的字段经量不使用自增变量,在并发情况下自增的对效率影响过大。推荐应用自己提供自增方式。