`

Asp.Net 网站性能优化 缓字决 (上) 缓冲写数据

阅读更多

通常情况下Asp.Net 网站的底层数据存储都是关系数据库,关系数据库资源比较昂贵,而且也很容易造成瓶颈。缓字决文章就是为大家介绍如何有效使用缓存,异步写缓冲数据库的压力,从而保证网站的性能。

大家已经看到很多关于Asp.Net缓存的文章了。所以我写的时候要改变一下思路,从缓冲写数据开始说起。缓冲写数据的意思是在数据需要更新时不马上把数据存到数据库,而是先缓冲一下,然后在适当的时机再写入到数据库中。

缓冲写数据可以避免在网站并发访问多的时候,数据库瞬间承受过大压力,而造成死锁或响应不及时的情况。

那么什么时候适合缓冲写呢?是不是所有情况都适用呢?缓冲写会导致数据在内存中或者web server硬盘或者第三方存储中驻留一段时间,在这段时间内如果从数据库中查询最新数据的话,会有遗漏。大多数事物都有两面性,我们需要学会趋利避害;换句话说在保证缓冲写不会导致用户感觉数据缺少的情况下,或者在使用适当措施不让用户感觉数据缺失的情况下就可以使用缓冲写。我有两个具体的实例来介绍如何使用缓冲写:

1. Pv(页面浏览量)统计,大多数网站都有这个功能,有些网站还专门做这个服务
  网站每有一个页面被浏览时,就会需要给对应页面的Pv+1;这种情况下,如果直接更新到数据库中,访问量稍微大一些就会造成数据库压力过大的问题。

  所以我们需要对Pv计数做缓冲,在单web server的情况下我们可以在内存中维护一个hashtable,然后用一个异步的线程去定时扫描这个hashtable,当点击数达到“一定数字”时更新到数据库。听上去很简单,不过也需要一个小技巧,上一句话中说的“一定数字”四个字不能是随便的一个数字,如果它是4,试想一下会出现什么情况,我们的所有Pv数都会是4的倍数,用户会怀疑我们是不是在Pv上造假了;我们没有造假却留下了造假的迹象!这个“一定数字”必须是一个素数,我们可以取7,也可以用13,如果我们的访问量很大也可以取23或31;这样就不会出现“造假的迹象”了。

2. 发送站内短消息
  站内短消息也是一个比较通用的模块,他可以说是一种离线消息,并非im即时消息,所以我们可以利用这个业务特性,  来对发消息做下缓冲。当有短消息发送时我们可以先将这个短消息放到硬盘文件中,然后很快的响应用户,在ui上告诉用户,你的消息已经发出去了,然后我们可以用另一个线程(或者做一个windows服务)去监视缓冲短消息的目录顺序的将短消息存储到数据库中。

以上两个场景都是比较经典的利用缓冲写的例子,在现实中需要我们去具体分析业务和某个业务是否会造成数据库压力来决定是否缓冲写,如果业务本身对数据库的压力就很小,那当然就没必要考虑了,反之如果业务压力较大我们就需要做一些工作避免缓冲写的问题并利用缓冲写。

1
3
分享到:
评论

相关推荐

    asp.net开发性能优化

    ### ASP.NET开发性能优化 #### 引言 ASP.NET是一种广泛使用的Web开发框架,它允许开发者构建高效且功能丰富的Web应用程序。随着应用复杂性的增加,性能优化变得至关重要。本文将根据给定文件的信息,深入探讨ASP...

    asp.net性能优化大全

    ASP.NET性能优化是一个重要的主题,尤其对于构建高效、高负载的Web应用来说至关重要。以下是对标题和描述中涉及的知识点的详细说明: 1. **优化Session使用**:避免不必要的Session使用,因为它会在服务器上占用...

    Asp.Net 网站性能优化之缓字决 (上) 缓冲写数据

    缓冲写数据可以避免在网站并发访问多的时候,数据库瞬间承受过大压力,而造成死锁或响应不及时的情况。 那么什么时候适合缓冲写呢?是不是所有情况都适用呢?缓冲写会导致数据在内存中或者web server硬盘或者第三方...

    asp.net mvc性能优化

    ASP.NET MVC 是一个强大的框架,用于构建高性能、可维护的Web应用程序。为了确保应用运行得更快、更高效,以下是一些关键的性能优化策略: 1. **缓存策略**: 使用`[OutputCache]`特性可以缓存视图结果,减少...

    充分利用ASP.NET的三种缓存提高站点性能

    "充分利用ASP.NET的三种缓存提高站点性能" ASP.NET 提供了三种主要形式的缓存:页面级输出缓存、用户控件级输出缓存(或称为片段缓存)和缓存 API。输出缓存和片段缓存的优点是非常易于实现,在大多数情况下,使用...

    ASP.NET完全入门

    第六篇“性能优化”—— ASP.NET有两种用于WEB应用的缓冲技术:输出缓冲和数据缓冲,在本篇中将围绕的这两种缓冲技术,进行详细的讲解。 第七篇“高级应用”——在高级应用一篇中,我们将介绍三个方面的内容:XML在...

    ASP.NET 26个常用性能优化方法

    ### ASP.NET 26个常用性能优化方法详解 #### 一、数据库访问性能优化 **1. 连接池管理** - **背景**: 数据库连接是昂贵的操作,尤其是在频繁地打开和关闭连接的情况下。每次创建连接都需要进行身份验证,这会占用...

    asp.net完全入门

     第六篇 “性能优化”—— ASP.NET有两种用于WEB应用的缓冲技术:输出缓冲和数据缓冲,在本篇中将围绕的这两种缓冲技术,进行详细的讲解。  第七篇 “高级应用”——在高级应用一篇中,我们将介绍三个方面的...

    asp.net入门学习手册

    - **数据绑定技术**:解释数据绑定的概念及其在ASP.NET 中的应用场景,例如如何将数据库查询结果绑定到控件上显示。 #### 九、应用程序配置与全局事件 - **Web.config 文件配置**:Web.config 文件是ASP.NET 应用...

    《ASP.NET 完全入门》

     第六篇 “性能优化”—— ASP.NET有两种用于WEB应用的缓冲技术:输出缓冲和数据缓冲,在本篇中将围绕的这两种缓冲技术,进行详细的讲解。  第七篇 “高级应用”——在高级应用一篇中,我们将介绍三个方面的...

    ASP.NET 在线视频点播系统

    ASP.NET在线视频点播系统是一种基于微软的ASP.NET技术构建的网络应用,旨在提供便捷的视频内容观看服务。这个系统通常包含用户管理、视频上传、播放、搜索、评论等多种功能,能够满足用户在线观看和互动的需求。对于...

    ASP.NET性能(汇总)

    ### ASP.NET性能(汇总) #### 一、引言 ASP.NET是Microsoft提供的一个强大的Web开发框架,用于构建高效且响应迅速的Web应用。随着互联网应用的不断增长与复杂度提升,确保Web应用能够高效地运行变得至关重要。本文...

    ASP.NET温度光照显示

    7. **性能优化**:对于大规模数据流或高并发场景,需要考虑服务器性能。可能的优化手段包括使用缓存减少数据库访问,调整UDP接收缓冲区大小,以及使用异步I/O减少CPU占用。 8. **安全性和稳定性**:确保UDP通信的...

    asp.net在线视频点播系统

    这个系统展示了ASP.NET在构建动态网页和交互式应用方面的强大能力,以及SQL Server在存储和处理大量数据时的高效性能。 首先,ASP.NET 2.0是微软.NET框架的一个关键组成部分,用于开发Web应用程序。它引入了诸如...

    asp.net+深入编程中文教程

    - **第11章:性能优化**:聚焦于ASP.NET应用中的性能问题,包括输出缓冲、数据缓存等优化技术。 #### 十二、高级应用技术 - **第12章:高级应用**:探讨XML在ASP.NET中的应用、三层架构的设计思路以及微软消息队列...

    Tutorialspoint Bootstrap4 PHP Java NIO ASP.Net ADO.Net .NET Core 教程

    最新版本ASP.Net Core是一个跨平台、高性能、模块化的框架,可以在Windows、Linux和macOS上运行。 ADO.Net是.NET Framework的一部分,主要用于访问和操作数据。它提供了数据集(DataSet)、数据表(DataTable)、数据列...

    asp.net开发播放器等

    ASP.NET是一种由微软开发的服务器端Web应用程序框架,主要用于构建动态网站、Web应用程序和Web服务。这个压缩包文件“asp.net开发播放器等”显然包含了与ASP.NET开发相关的代码示例,特别是涉及到创建一个视频播放器...

Global site tag (gtag.js) - Google Analytics