数据库高并发解决方案(二)部署优化

一个项目刚开始的时候是为了实现基本功能,随着版本和功能的迭代,大数据和高并发成了软件设计必须考虑的问题!数据库

本质很简单,一个是慢,一个是等。缓存

二者是相互关联的,由于慢,因此要等,由于等,因此慢,解决了慢,也就解决了等,解决了等,也就解决了慢。服务器

关键是如何解决慢和等,并发

核心 一个是短一个是少一个是分流,最后一个是集群/横向扩张/读写分离/创建主从分布式

高并发

页面静态化- 用户能够直接获取页面,不用走那么多流程,比较适用于页面不频繁更新。
使用缓存- 第一次获取数据从数据库准提取,而后保存在缓存中,之后就能够直接从缓存提取数据。不过须要有机制维持缓存和数据库的一致性。大数据

使用储存过程-那些处理一次请求须要屡次访问数据库的操做,能够把操做整合到储存过程,这样只要一次数据库访问就能够了。优化

批量读取 - 高并发状况下,能够把多个请求的查询合并到一次进行,以减小数据库的访问次数spa

延迟修改 - 高并发状况下,能够把屡次修改请求,先保存在缓存中,而后定时将缓存中的数据保存到数据库中,风险是可能会断电丢失缓存中的数据,设计

使用索引 - 索引能够看做是特殊的缓存,尽可能使用索引就要求where字句中精确的给出索引列的值。

1,分表 - 把原本同一张表的内容,能够按照地区,类别等分红多张表,很简单的一个思路,可是要尽可能避免分出来的多表关联查询。

2,分离活跃数据 - 例如登陆用户业务,注册用户不少,可是活跃的登陆用户不多,能够把活跃用户专门保存一张表,查询是先查询活跃表,没有的话再查总表,这也相似与缓存啦。

3, 分块 - 数据库层面的优化,对程序是透明的,查询大数据只用找到相应块就行;如交易模块

分流

1,集群 - 将并发请求分配到不一样的服务器上,能够是业务应用服务器APP,也能够是数据库服务器。

2,分布式 - 分布式是把单次请求的多项业务逻辑分配到多个服务器上,这样能够同步处理不少逻辑,通常使用与特别复杂的业务请求。

3,CDN - 在域名解析层面的分流,例如将华南地区的用户请求分配到华南的服务器,华中地区的用户请求分配到华中的服务器。

4,分库分表 -

水平拆分【分表】:

对于访问极为频繁且数据量巨大的单表来讲,首先要作的是减小单表的记录条数,以便减小数据查询所需的时间,提升数据库的吞吐,这就是所谓的分表【水平拆分】

垂直拆分【分库】:

是根据业务耦合性,将关联度低的不一样表存储在不一样的数据库上,对数据库进行拆分,从而提升数据库写入能力,即分库【垂直拆分】

 

创建主从 - 读写分离就是只在主服务器上写,只在从服务器上读,基本原理是让主数据库处理事务性查询,而从数据库处理select查询,数据库复制被用于把事务性查询(增删改)致使的改变;以毫秒级的更新同步到集群中的从数据库。

相关文章
相关标签/搜索