MySQL应用优化

  • 1 使用连接池
  • 2 减少对MySQL的访问
  • 2.1 避免对数据进行重复检索
  • 2.2 增加cache层
  • 3 负载均衡
  • 3.1 利用MySQL复制分流查询
  • 3.2 采用分布式数据库架构


前面章节,我们介绍了很多数据库的优化措施。但是在实际生产环境中,由于数据库本身的性能局限,就必须要对前台的应用进行一些优化,来降低数据库的访问压力。

1 使用连接池

对于访问数据库来说,建立连接的代价是比较昂贵的,因为我们频繁的创建关闭连接,是比较耗费资源的,我们有必要建立数据库连接池,以提高访问的性能。
如果我们不用数据库连接池,那么我们每次操作数据库都需要获取连接,数据库操作完毕之后需要关闭连接,这样我们就需要频繁的开启和关闭连接,这样,就比较耗费资源。
建立数据库连接池之后,我们获取数据库连接的时候就直接去连接池中寻找来进行操作,操作完成后,将连接归还到连接池。
如c3p0等等。

2 减少对MySQL的访问

2.1 避免对数据进行重复检索

在编写应用代码时,需要能够理清对数据库的访问逻辑。能够一次连接就获取到结果的,就不用两次连接,这样可以大大减少对数据库无用的重复请求。

比如 ,需要获取书籍的id 和name字段 , 则查询如下:

select id , name from tb_book;

之后,在业务逻辑中有需要获取到书籍状态信息, 则查询如下:

select id , status from tb_book;

这样,就需要向数据库提交两次请求,数据库就要做两次查询操作。其实完全可以用一条SQL语句得到想要的结果。

select id, name , status from tb_book;

2.2 增加cache层

在应用中,我们可以在应用中增加 缓存 层来达到减轻数据库负担的目的。缓存层有很多种,也有很多实现方式,只要能达到降低数据库的负担又能满足应用需求就可以。

因此可以部分数据从数据库中抽取出来放到应用端以文本方式存储, 或者使用框架(Mybatis, Hibernate)提供的一级缓存/二级缓存,或者使用redis数据库来缓存数据 。

3 负载均衡

负载均衡是应用中使用非常普遍的一种优化方法,它的机制就是利用某种均衡算法,将固定的负载量分布到不同的服务器上, 以此来降低单台服务器的负载,达到优化的效果。

3.1 利用MySQL复制分流查询

通过MySQL的主从复制,实现读写分离,使增删改操作走主节点,查询操作走从节点,从而可以降低单台服务器的读写压力。

mysql数据库连接池扩容 mysql数据库连接池优化_数据库


Master和slave中存储的数据完全一致。当我们应用程序进行写操作的时候,我直接操作master,master会将这个数据同步到slave中,而读的时候就直接从slave中读。此时,写的压力就集中在master中,读的压力集中在slave,这样,主服务器的压力就降低了。

3.2 采用分布式数据库架构

分布式数据库架构适合大数据量、负载高的情况,它有良好的拓展性和高可用性。通过在多台服务器之间分布数据,可以实现在多台服务器之间的负载均衡,提高访问效率。
将数据操作的压力均匀的分布到数据集群中的各个结点。这样的话,就会降低单台服务器的压力。从而来提高我们的访问效率。