专栏首页Linyb极客之路数据库高并发解决方法总结

数据库高并发解决方法总结

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

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

两者是相互关联的,因为慢,所以要等,因为等,所以慢,解决了慢,也就解决了等,解决了等,也就解决了慢。

关键是如何解决慢和等,核心一个是短,一个是少,一个是分流,最后一个是集群/横向扩张/读写分离/建立主从。

  • 短是指路径要短:

典型的mvc结构是请求->controller->model->dao->view,然后把页面返回给用户。要想短的话,

1,页面静态化- 用户可以直接获取页面,不用走那么多流程,比较适用于页面不频繁更新。

2,使用缓存- 第一次获取数据从数据库准提取,然后保存在缓存中,以后就可以直接从缓存提取数据。不过需要有机制维持缓存和数据库的一致性。

3,使用储存过程-那些处理一次请求需要多次访问数据库的操作,可以把操作整合到储存过程,这样只要一次数据库访问就可以了。

4,批量读取 - 高并发情况下,可以把多个请求的查询合并到一次进行,以减少数据库的访问次数

5,延迟修改 - 高并发情况下,可以把多次修改请求,先保存在缓存中,然后定时将缓存中的数据保存到数据库中,风险是可能会断电丢失缓存中的数据,

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

  • 少是指查询的数据要少:

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

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

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

  • 分流三种:

1,集群 - 将并发请求分配到不同的服务器上,可以是业务服务器,也可以是数据库服务器。

2,分布式 - 分布式是把单次请求的多项业务逻辑分配到多个服务器上,这样可以同步处理很多逻辑,一般使用与特别复杂的业务请求。

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

  • 横向扩展

1、主从

2、读写分离

本文分享自微信公众号 - Linyb极客之路(gh_c420b2cf6b47)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-09-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java架构-高并发的解决实战总结方案,看完这些就够了!

    刚开始的时候应用和静态资源是保存在一起的,当并发量达到一定程度的时候就需要将静态资源保存到专门的服务器中,静态资源主要包括图片、视频、js、css和一些资源文件...

    lyb-geek
  • 面对海量请求,缓存设计还应该考虑哪些问题?

    从第一个缓存框架 Memcached 诞生以来,缓存就广泛地存在于互联网应用中。如果你的应用流量很小,那么使用缓存可能并不需要做多余的考虑。但如果你的应用流量达...

    lyb-geek
  • 干货分享!设计一个系统架构时怎么去做性能优化?

    设计系统架构中最核心的几个要素包括:性能,可用性,伸缩性,扩展性和安全性,而性能又是其中最为重要的,本篇简要说下网站性能优化方面所需做的一些事情;

    lyb-geek
  • Java架构-高并发的解决实战总结方案,看完这些就够了!

    刚开始的时候应用和静态资源是保存在一起的,当并发量达到一定程度的时候就需要将静态资源保存到专门的服务器中,静态资源主要包括图片、视频、js、css和一些资源文件...

    lyb-geek
  • 深入分析Java Web技术内幕读书笔记(一)浅析Web请求过程

    B/S网络架构采用的是统一的应用层协议HTTP来进行数据的交互,与传统的C/S应用采用的长连接交互方式不同,B/S应用是无状态的短连接的通信方式。也就是说,一次...

    itlemon
  • 从输入url到页面加载完成发生了什么详解

    这是一道经典的面试题,这道题没有一个标准的答案,它涉及很多的知识点,面试官会通过这道题了解你对哪一方面的知识比较擅长,然后继续追问看看你的掌握程度。当然我写的这...

    IT人一直在路上
  • java处理高并发高负载类网站的优化方法

        一般来说MySQL是最常用的,可能最初是一个mysql主机,当数据增加到100万以上,那么,MySQL的效能急剧下降。常用的优化措施是M-S(主-从)...

    bear_fish
  • java处理高并发高负载类网站的优化方法

    一:高并发高负载类网站关注点之数据库 没错,首先是数据库,这是大多数应用所面临的首个SPOF。尤其是Web2.0的应用,数据库的响应是首先要解决的。   ...

    大闲人柴毛毛
  • java系统高并发的解决方案

    一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求...

    MonroeCode
  • java系统高并发的解决方案

    一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要...

    MonroeCode

扫码关注云+社区

领取腾讯云代金券