极客视点
极客时间编辑部
极客时间编辑部
113245 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/04:16
登录|注册

给数据库减负的八个思路

讲述:丁婵大小:5.85M时长:04:16
你好,欢迎收听极客视点。
你一定知道,光靠数据库是没办法搞定海量数据的,那还有哪些方法可以解决海量数据问题呢?最近“江南一点雨”的公众号主松哥从以下八个方面聊了聊这个话题。

1. 缓存

我们可以将数据直接缓存在内存中,例如 Map。也可以使用缓存框架如 Redis 等,将一些需要频繁使用的热点数据保存在缓存中,当有用户访问时,就可以直接将缓存中的数据返回给用户。这可以有效降低服务器的压力。不过,可以缓存起来使用的数据,一般都不能对实时性要求太高。

2. 页面静态化

页面静态化可以算作缓存的另一种形式,相当于直接将相关的页面渲染结果缓存起来。在 Web 项目中,资源分为静态资源和动态资源。
静态资源就是 HTML、CSS、JavaScript、图片等资源,不经过服务端处理,就可以直接返回给前端浏览器,浏览器就可以直接显示出来。
动态资源是指项目中的 Servlet 接口、Jsp 文件、Freemarker 等,这些需要经过服务端渲染之后,才可以返回前端的资源。
在实际项目中,静态资源的访问速度远远高于动态资源,而动态资源很容易遇到服务器瓶颈、数据库瓶颈。因此,对于一些不经常更新的页面,或者说更新比较缓慢的页面,可以通过页面静态化,将动态资源保存为静态资源,这样当服务端需要访问的时候,直接将静态资源返回,就可以避免操作数据库,从而降低数据库的压力。

3. 数据库优化

很多时候程序跑得慢,不是因为设备落后,而是因为数据库 SQL 写得太差劲。
要解决海量数据的问题,数据库优化肯定也不可避免。我们可以从 SQL 优化、表结构优化、以及数据库分区分表等多个方面来对数据库进行优化。

4. 热点数据分离

数据库中的数据,虽然是海量数据,但是这些数据并不见得都是活跃数据,比如用户注册,有的用户注册完就消失得无影无踪了,而有的用户则登录频繁。因此,我们可以将活跃用户分离出来,在主操作的数据表中只保存活跃用户数据。每次用户登录时,先去主表中查看有没有记录,有的话,直接登录,没有的话,再去查看其他表。
通过判断用户在某一段时间内的登录次数,就可以很快分离出热点数据。

5. 合并数据库操作

这个方案的宗旨是减少数据库操作的次数,例如多次插入操作,我们可以合并成一条 SQL 搞定。如果条件允许,多个不同条件的查询也可以合并成一个查询,尽量减少数据库的操作,同时也降低数据库的压力。

6. 数据库读写分离

数据库读写分离之后,一方面可以提高数据库的操作效率,另一方面也算对数据库的一个备份。

7. 分布式数据库

数据库读写分离之后,无形中增大了代码的复杂度,所以还需要借助分布式数据库中间件,这样可以有效提高数据库的弹性,使它随时扩容,同时也降低了代码的耦合度。

8. NoSQL 和 Hadoop

引入 NoSQL 和 Hadoop 也是解决方案之一。NoSQL 突破了关系型数据库中对表结构、字段等定义的条条框框,使用户可以非常灵活方便地操作。另外 NoSQL 通过多个存储块存储数据的特点,使它天然具备操作大数据的优势:快。不过,NoSQL 目前在互联网项目中比较常见,在传统的企业级应用中比较少见。Hadoop 就不必说了,大数据处理利器。
以上就是今天的内容,你在工作中有没有遇到类似问题呢,又是怎么处理的?欢迎在留言区一起讨论。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
大纲
固定大纲
1. 缓存
2. 页面静态化
3. 数据库优化
4. 热点数据分离
5. 合并数据库操作
6. 数据库读写分离
7. 分布式数据库
8. NoSQL 和 Hadoop
显示
设置
留言
收藏
74
沉浸
阅读
分享
手机端
快捷键
回顶部