`

.NET应用访问数据库之数据库的开销问题 后续篇(一)缓存的使用

阅读更多

  上文.NET应用访问数据库之数据库的开销问题 提到数据库的访问,尤其是递归层级调用问题,应该减少往返数据库的次数,而是从数据库将所需数据一次性获取出来,然后在C#代码中处理成树形层级关系,这样会提升很大的效率。

  其实递归这种东西,用在数值计算中还可以,如果是复杂处理就最好不用了,很消耗CPU和内存的,因为要使用栈存放很多内容。只是代码看起来好理解,量大、操作复杂还是转成非递归的好。

  如果层级不多,变化不大,可以考虑使用缓存,效率就会更高。具体缓存的应用可以参看李天平的:系统缓存全解析 ,后面我可能也会写一两篇这方面的文章。

  上一篇我们讨论的数据是全国的行政地域信息,它有固定的格式。每个行政区划的编码长度都是12位,总共分5级来管理,前两位代表31个省(直辖市),往后两位代表一般的市(州),往后两位代表市中的区(县),往后三位是街道办事处,最后三位是居民委员会(社区)。

  在处理类似的树形层次结构的数据的话,其实关系型数据库不是长项,因为关系型数据库只是二维的。有两篇文章在这些方面有一些办法,大家可以参考。SQL Server 存储层级数据实现无限级分类 层次结构的数据库处理(译文)

  系统中其实有很多类似的类型编码都被 放在数据库中,有的是一级的,有的是分层级关系的。就像上面的地域信息,全国的5级总共有8万左右条数据。最好的办法是一次将他们读取到服务器的内存中,形成树形层级,放在缓存中,如果有需要就直接获取返回给客户端,这样可以较少很多的数据库消耗。当然,前提是这类信息的变动很小,几乎没有变化。系统缓存全解析6:数据库缓存依赖 中介绍了,可以使用数据库依赖缓存,这样就不怕数据库内容有变化了,如果有变化,会自动更新缓存。缓存的正确使用,可以极大的提供效率。

  关于数据库依赖缓存还可以参看:ASP.NET 2.0数据缓存功能简介  Asp.net数据库缓存依赖 数据库缓存依赖配置

分享到:
评论

相关推荐

    Asp.NET性能优化之局部缓存

    上面场景中的1,如果整个页面的缓存失效都定为10分钟,则势必增加性能开销,所以最好的策略是页面的不同部分采用不同的缓存失效时长。对于场景2也一样,我们不应该为了迁就某个BANNER不能应用缓存,就让整个页面都不...

    ado[1].net中文手册 学习 ado.net的重要资料

    通过 ADO.NET 访问数据 ADO.NET 概述 ADO.NET 的设计目标:讨论创建 ADO.NET 的动机和设计目标。...由于所有 ADO.NET 应用程序都使用对数据的不连接访问,因此它不会在较长持续时间内保留数据库锁或活动数据库连接。

    Java两级缓存系统框架源码.zip

    避免完全使用独立缓存系统所带来的网络IO开销问题Java 两级缓存框架,可以让应用支持两级缓存框架 ehcache(Caffeine) + redis 。避免完全使用独立缓存系统所带来的网络IO开销问题Java 两级缓存框架,可以让应用支持...

    内容中心网络中传输开销最小的协作缓存策略

    针对现有缓存策略主要从用户角度对网络性能(缓存命中率、内容获取时延等)进行优化,而没有考虑网络为用户提供服务时的传输开销优化问题,提出了一种最小化内容中心网络中传输开销的协作缓存机制。首先,给出了内容中心...

    JAVA在SQLite嵌入式数据库中的应用.rar

    SQLite 作为一个开源的嵌入式数据库产品,具有系统开销小,检索效率高的特性,适用于手机、PDA、机顶盒设备等电器,并且作为嵌入式数据库在可下载的消费类应用程序中运行的很好。这篇文章介绍嵌入式数据库产品SQLite...

    数据库连接池技术详解

    某一应用最大可用数据库连接数的限制,避免某一应用独占所有数据库资源。 在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接。从而避免了常规数据库连接操作中可能出现的资源泄漏 ...

    asp.net 提高网站速度及如何利用缓存

    相比ASP.NET的所有其他特性,缓存对应用程序的性能具有最大的潜在影响,利用缓存和其他机制,ASP.NET开发人员可以接受使用开销很大的控件(例如,DataGrid)构建站点时的额外开销,而不必担心性能会受到太大的影响。...

    asp.net下SQLite(轻量级最佳数据库) 原理分析和开发应用

    概述 SQLite介绍 自几十年前出现的商业应用程序以来,数据库就成为软件应用程序的主要组成部分。... Richard Hipp发布,它的减少应用程序管理数据的开销,SQLite可移植性好,很容易使用,很小,高效而且可靠。 SQLite

    ASP.NET Core 7.0是一个开放源代码和跨平台框架,用于构建基于现代云的互联网连接应用程序.rar

    ASP.NET Core 是一个新的开源和跨平台的框架,用于构建如 Web 应用、物联网(IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序。ASP.NET Core 应用可运行于 .NET Core 和完整的 .NET Framework 之上。 ...

    ASP.NET Core 是一个开源和跨平台框架,用于构建基于云的现代互联网连接应用程序

    ASP.NET Core 是一个开源和跨平台框架,用于构建基于云的现代互联网连接应用程序,例如 Web 应用程序、IoT 应用程序和移动后端。ASP.NET Core 应用在 .NET 上运行,这是一个免费、跨平台的开源应用程序运行时。它的...

    6数据库系统习题.pdf

    A、数据库系统 B、数据库管理系统 C、数据库 D、数据库应用系统 4.数据库系统不仅包括数据库本身,还要包括相应的硬件、软件和_____。 A、数据库管理系统 B、数据库应用系统 C、数据库应用系统; D、各类相关人员 5...

    fastdb源码 (一个高效率的内存数据库系统)

    数据库文件和使用该数据库的每一个应用程序占用的虚拟内存空间相映射。所以查询在应用程序的任务中执行,不需要进行任务切换和数据传输。在FastDB中,通过原子指令来实现对数据库并发访问的同步,对查询处理几乎不...

    论文研究-图数据库中的相似性搜索算法研究与应用.pdf

    图数据库的相似性搜索是一个非常重要的研究内容,图的相似性匹配属于图同构的判定问题,是NP完全问题,传统的高开销搜索的方法已经不能满足复杂图查询的需要;另外,由于图数据库的复杂性和特殊性,已有的优化算法不能...

    ASP.NET Core开源跨平台的框架.zip

    ASP.NET Core应用程序在.NET Core(一个的,跨平台的开源应用程序运行时)上运行。它的架构旨在为部署到云或本地运行的应用程序提供优化的开发框架。它由具有最小开销的模块化组件组成,因此您在构建解决方案时可以...

    JSP技术在Web数据库中的应用研究

    Web数据库技术是一种基于Intemet/Intranet上的B/S架构的管理信息系统...由服务器凋用数据库负责对请求进行处理,并将结果作为响应返回给浏览器端,这就降低了用户的使用难度,同时,也使得软件的 维护开销大大降低。

    嵌入式数据库SQLite

    嵌入式数据库SQLite与Java2009-01-06 19:54SQLite作为一个开源的嵌入式数据库产品,具有系统开销小,检索效率高的特性,适用于手机、PDA、机顶盒设备等电器,并且作为嵌入式数据库在可下载的消费类应用程序中运行的...

    ADO.NET连接池示例

    因为打开和关闭数据库连接开销比较大,所以连接池对于与数据库链接资源的控制上,加快客户端程序的效率都有很大地帮助。 示例中会看到如何控制连接池个数,链接对象关闭连接放回链接池中,有其他连接对象打开连接时...

    spring-ehcache-redis两级缓存

    我们会在每个应用服务器上增加本地的ehcache缓存作为二级缓存,即第一次get到的数据存入ehcache,后面output输出即可从本地ehcache中获取,不用再访问redis了,所以就减少了以后get的网络开销。get开销只要一次,...

    什么是NoSQL数据库?

    但之后随着硬件性能的提升,加之使用简单、性能优越等优点,关系型数据库得到了广泛的应用。 通用性及高性能 虽然本书是讲解NoSQL数据库的,但有一个重要的大前提,请大家一定不要误解。这个大前提就是“关系型...

    数据库连接池(database connection pool)是在 Java 中用于管理数据库连接的一种技术

    在传统的数据库连接方式中,每次与数据库建立连接时都需要进行一系列的网络通信和身份验证操作,这样的开销较大并且会影响应用程序的性能。而连接池则通过预先创建一定数量的数据库连接,并将这些连接保存在一个池中...

Global site tag (gtag.js) - Google Analytics