1. 应用优化
1.1 使用连接池
对于访问数据库来说,建立连接的代价比较昂贵,因此,可以通过建立“连接池”提高访问的性能。
连接池:把连接当做对象或者设备,统一放在一个“池子”中,以前需要直接访问数据库的地方,现在都改为从这个“池子”里面获取连接来使用。因为“池子”中的连接都已经预先创建好,可以直接分配给应用使用,因此大大减少了创建新连接所耗费的资源。
1.2 减少对MySQL的访问
1.2.1 避免对同一数据做重复检索
应用中需要理清对数据库的访问逻辑。能够一次连接就能够提取出所有结果的,就不用两次连接,这样可以大大减少对数据库无谓的重复访问。
编写SQL代码的逻辑问题
1.2.2 使用查询缓存
MySQL 的查询缓存(MySQL Query Cache)是在 4.1 版本以后新增的功能,它的作用是存储 SELECT 查询的文本以及相应结果。如果随后收到一个相同的查询,服务器会从查询缓存中重新得到查询结果,而不再需要解析和执行查询。
查询缓存的适用对象是更新不频繁的表,当表更改(包括表结构和表数据)后,查询缓存值的相关条目被清空。
1.2.3 增加 CACHE 层
在应用中,我们可以在应用端加 CACHE 层来达到减轻数据库的负担的目的。CACHE 层有很多种,也有很多种实现的方式,只要能达到降低数据库的负担,又能满足应用就可以,这就需要根据应用的实际情况进行特殊处理。
比如,可以把部分数据从数据库中抽取出来放到应用端以文本方式存储,然后有查询需求的话,可以直接从这个“CACHE”中检索。或者可以在应用端建立一个二级数据库,将访问高频数据放在二级库上,然后设定一个机制与主数据库进行同步。可以大大降低主数据库的压力。
1.3 负载均衡
负载均衡(Load Balance)是实际应用中使用非常普遍的一种优化方法,它的机制就是利用某种均衡算法,将固定的负载量分布到不同的服务器上,以此来减轻单台服务器的负载,达到优化的目的。负载均衡可以用在系统中的各个层面中,从前台的 Web 服务器到中间层的应用服务器,最后到数据层的数据库服务器,都可以使用。
1.3.1 利用 MySQL 复制分流查询操作
主从复制:具体的实现是一个主服务器承担更新操作,而多台从服务器承担查询操作,主从之间通过复制实现数据的同步。多台从服务器一方面用来确保可用性,一方面可以创建不同的索引以满足不同查询的需要。
1.3.2 采用分布式数据库架构
集群(Cluster)
分布式的数据库架构适合大数据量、负载高的情况,它具有良好的扩展性和高可用性。