高性能的大型系统经验 -- 将数据分类、并缓存
来源:互联网 发布:app后台管理系统源码 编辑:程序博客网 时间:2024/06/16 22:52
对大多数大型系统而言,数据库往往是最容易出现瓶颈的地方,而通过使用恰当的缓存技术可以非常有效地减轻数据库的负载。
将系统中用到的所有数据进行分类,分别对待不同种类的数据而不是一视同仁,有利于正确地做出缓存哪些数据、以及如何缓存的决策。
我通常将系统中用到的数据分为四类:恒定不变的数据,只发生增量的数据,偶尔改变的数据,经常改变的数据。
(1)对于恒定不变的数据,采用普通的恒定缓存,即这种缓存在系统启动后初始化一次就不再改变了。
(2)对于只发生增量的数据,采用智能式的增量缓存,如果所要的数据在这种缓存中不存在,则该缓存会从其它地方(如数据库)自动加载目标对象并缓存起来。
(3)对于偶尔改变的(但不是十分敏感的)数据,采用定时刷新的缓存,如每隔10分钟刷新一次。
(4)对于经常改变的数据,则又可以进一步细分:
将数据中变动部分和非变动部分区分开来,而非变动部分又可以封装为单独的对象,从而对该“部分”对象采用上述三种方式之一进行缓存。
如此,便可最大程度的利用缓存,从而可以有效提高系统性能,并明显减轻数据库和网络负载。
将系统中用到的所有数据进行分类,分别对待不同种类的数据而不是一视同仁,有利于正确地做出缓存哪些数据、以及如何缓存的决策。
我通常将系统中用到的数据分为四类:恒定不变的数据,只发生增量的数据,偶尔改变的数据,经常改变的数据。
(1)对于恒定不变的数据,采用普通的恒定缓存,即这种缓存在系统启动后初始化一次就不再改变了。
(2)对于只发生增量的数据,采用智能式的增量缓存,如果所要的数据在这种缓存中不存在,则该缓存会从其它地方(如数据库)自动加载目标对象并缓存起来。
(3)对于偶尔改变的(但不是十分敏感的)数据,采用定时刷新的缓存,如每隔10分钟刷新一次。
(4)对于经常改变的数据,则又可以进一步细分:
将数据中变动部分和非变动部分区分开来,而非变动部分又可以封装为单独的对象,从而对该“部分”对象采用上述三种方式之一进行缓存。
如此,便可最大程度的利用缓存,从而可以有效提高系统性能,并明显减轻数据库和网络负载。
- 高性能的大型系统经验 -- 将数据分类、并缓存
- 高性能的大型系统经验 -- 将数据分类、并缓存
- 高性能的大型系统经验 -- 数据查询与分页
- 高性能的大型系统经验 -- 数据查询与分页
- 高性能的大型系统经验 -- 数据查询与分页
- 企业视觉-大型电商(系统)高性能-用户视觉性能(1)
- 一个大型高并发系统的性能调优会涉及到什么?
- 【转】经验分享:大型高并发高负载网站的系统架构
- Java 大型系统高并发大数据的处理方式
- Java 大型系统高并发大数据的处理方式
- 大型web系统数据缓存设计
- 大型web系统数据缓存设计
- 大型web系统数据缓存设计
- 大型web系统数据缓存设计
- 大型web系统数据缓存设计
- 大型web系统数据缓存设计
- 大型web系统数据缓存设计
- 大型web系统数据缓存设计
- 【Emit基础】在IL中进行异常处理
- 【Emit基础】调用Tostring()方法的IL表示
- 【Emit基础】OpCodes.Ldind_Ref 和 OpCodes.Ldind_I*
- 【Emit基础】System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
- Strive 2D游戏引擎 -- 序
- 高性能的大型系统经验 -- 将数据分类、并缓存
- Remoting插件与网关设置
- Spring.net -- 目前不支持getter、setter的访问限定符
- DataRabbit 轻量的ORM框架(16)-- Entity缓存
- DS18B20温度模块.C
- 使用动态代理,提高工作效率
- 你知道 typeof(void) 吗?
- IL -- 手动处理装箱Box
- QA的职责