MySql高级/10.MySql高级之应用优化
大江东去,浪淘尽,千古风流人物。
——苏轼《念奴娇》
## MySql高级之应用优化前面我们学习了很多数据库的优化措施。但是在实际生产环境中,由于数据库本身的性能局限,就必须要对前台的应用进行一些优化,来降低数据库的访问压力。
1. 连接池
对于访问数据库来说,
建立连接的代价是比较昂贵的
,因为我们频繁的创建关闭连接,是比较耗费资源的,我们有必要建立数据库连接池
,以提高访问的性能。
2. 减少对MySQL的访问
2.1 避免对数据进行重复检索
在编写应用代码时,需要能够理清对数据库的访问逻辑。能够一次连接就获取到结果的,就不用两次连接,这样可以大大减少对数据库无用的重复请求。
比如 ,需要获取书籍的id 和name字段 , 则查询如下:
1 | select id,name from tb_book; |
之后,在业务逻辑中有需要获取到书籍状态信息, 则查询如下:
1 | select id,status from tb_book; |
这样,就需要向数据库提交两次请求,数据库就要做两次查询操作。其实完全可以用一条SQL语句得到想要的结果。
1 | select id,name,status from tb_book; |
2.2 增加cache层
在应用中,我们可以在应用中增加 缓存 层来达到减轻数据库负担的目的。缓存层有很多种,也有很多实现方式,只要能达到降低数据库的负担又能满足应用需求就可以。
因此可以部分数据从数据库中抽取出来放到应用端以文本方式存储, 或者使用框架(Mybatis, Hibernate)提供的一级缓存/二级缓存,或者使用redis数据库来缓存数据 。
3. 负载均衡
负载均衡是应用中使用非常普遍的一种优化方法,它的机制就是利用某种均衡算法,将固定的负载量分布到不同的服务器上, 以此来降低单台服务器的负载,达到优化的效果。
3.1 利用MySQL复制分流查询
通过MySQL的
主从复制
,实现读写分离,使增删改操作走主节点,查询操作走从节点,从而可以降低单台服务器的读写压力。
3.2 采用分布式数据库架构
分布式数据库架构适合大数据量、负载高的情况,它有良好的拓展性和高可用性。通过在多台服务器之间分布数据,可以实现在多台服务器之间的负载均衡,提高访问效率。