`

Asp.Net 网站优化 数据库优化措施 使用主从库(下)

阅读更多

上一篇中我们配置好了主从库,现在我们尝试在程序中使用主从库。

主从库之间是一种发布订阅的关系,发布者和订阅者之间并非实时同步的,通常会有几分钟的延时,更有甚者会有几个小时的延时。所以我们需要通过合理的使用来避开有延时这个问题。

我们希望主库尽可能的少参与查询,来提高写的及时性;同时要让从库在不影响读出数据的准确及时的前提下尽可能的分担主库的压力。

主从两个库需要在配置文件中配置两个连接字符串,CONN_Master和CONN_Slave。我们需要设定一些规则决定当前的查询应该从主库查还是需要从从库查。这个规则没有定式,只能根据业务需要来确定。下面我举几个例子来说明:

1. 以豆瓣读书书的详细页为假定场景,你可以点击这里看下页面的结构(我不是豆瓣的技术,在这里只是拿这个页面举例)
我们来分析呈现这个页面需要的数据和这些数据的实效性要求
1) 书的详细信息 时效性要求:要求及时
2) 豆瓣成员的常用标签 实效性:不需要很及时
3) 喜欢读这本书的人也喜欢读的书 属于分析数据,不需要很及时
4) 最新书评 要求及时
5) 读这本书的几个用户 及时性不高
6) 喜欢这本书的人常去的小组 属于分析数据不需要很及时
从上面的分析可以看出只有1),4)两项数据需要从主库读,而2),3),5),6)为非及时数据从从库读取即可。当然我们可以对这些实效性不高的数据做缓存处理。

2. 以论坛帖子列表页面为假定场景,玩论坛的人都喜欢顶贴,把自己的帖子顶到第一页让更多的人关注,而对于50页之后的帖子则反读的人很少;我们可以根据这个业务逻辑特征来决定在用户访问前50页帖子列表数据时从主库读,而当用户访问超过50页之后的数据时则从从库进行查询。

3. 以订单为例,通常超过三个月的订单就不会再有变化了,假定我们把订单号设计为日期格式时,根据订单号去查询订单时就可以根据订单号来决定该访问主库还是从库。

举了几个适用的场景,我们以第三个场景为例,写一段简单的示意代码看下

01 //orderNo 的格式为 20100528120105000001 即yyyyMMddHHmmss + 序号
02 public OrderInfo GetOrder(string orderNo) {
03     string connString = ConnStringGetter.GetForOrder(orderNo);
04     using (SqlConnection conn = new SqlConnection(connString))
05     {
06         ...
07     }
08 }
09   
10 public class ConnStringGetter
11 {
12     public static string GetForOrder(string orderNo) { 
13         int year = int.Parse(orderNo.Substring(0,4));
14         int money = int.Parse(orderNo.Substring(4,2));
15         int date = int.Parse(orderNo.Substring(6,2));
16         DateTime orderTime = new DateTime(year, money, date);
17   
18         TimeSpan ts = DateTime.Now - orderTime;
19 //根据订单的时间决定使用主库还是从库
20         if (ts.TotalDays > 30) return ConfigurationManager.ConnectionStrings["CONN_Slave"].ConnectionString;
21         return ConfigurationManager.ConnectionStrings["CONN_Master"].ConnectionString;
22     }
23 }

正确的使用主从库,可以很好的提升系统的性能。使用主库还是从库的选择权决定在业务逻辑的手里。

1
3
分享到:
评论

相关推荐

    Asp.Net 网站优化系列之数据库优化措施 使用主从库(全)

    ### ***网站优化系列之数据库优化措施使用主从库(全) #### 数据库优化的重要性 随着网站规模的扩大,单纯依靠简单的数据库结构优化和代码层面的优化已经难以满足日益增长的业务性能需求。数据库性能问题逐渐凸显...

    ASP.NET 控件的使用

    9.3.5 使用ASP.NET的Profile-Parameter对象 281 9.3.6 使用QueryStringParameter对象 282 9.3.7 使用SessionParameter对象 284 9.4 通过程序执行SqlDataSource命令 285 9.4.1 添加ADO.NET参数 285 9.4.2 执行Insert...

    .net 主从表实例

    datagrid是Windows Forms或ASP.NET中用于显示和编辑表格数据的强大工具。在这个案例中,我们将用它来展示主表和子表的数据,并支持用户的编辑操作。 1. **创建数据模型**:在.NET应用中,通常我们会定义类来表示...

    用ASP.NET在同一网页中显示主从关系表的相关数据

    ### 用ASP.NET在同一网页中显示主从关系表的相关数据 #### 方法概述 在ASP.NET中,为了实现在同一网页上直观地展示具有主从关系的数据表,可以通过一系列的编程技巧来达到目的。这种方法主要是利用ASP.NET提供的...

    asp.net 学习系列3

    在这个“ASP.NET学习系列3”中,我们聚焦于“主从”关系这一主题,这通常指的是在数据库操作中的主从数据绑定,如在网页上展示表格时的主表和从表。 在ASP.NET中,主从数据绑定是通过控件如GridView、DetailsView或...

    嵌套 Repeater 实现主从表浏览(MVC)

    1. **ASP.NET MVC框架**:ASP.NET MVC是一种基于模型-视图-控制器(Model-View-Controller)的设计模式,用于构建可测试、灵活和分离关注点的Web应用程序。在这个项目中,MVC模式帮助我们清晰地组织代码,分离业务...

    GridView无刷新主从表联动

    在ASP.NET开发中,"GridView无刷新主从表联动"是一种常见的数据展示方式,它能够提升用户体验,使得用户在查看和操作数据时无需等待页面完全刷新。这种技术通常用于显示两个相关联的数据表,其中一个是主表,另一个...

    ASP.NET_Report_Maker_12.0.0.2_Downloadly.ir.rar

    在使用ASP.NET Report Maker时,开发者需要熟悉.NET Framework和ASP.NET的基础知识,了解数据库操作和SQL查询。对于高级功能的使用,可能需要阅读官方文档或参加相关的培训课程,以提高报表设计和集成的能力。 总结...

    Repeater 实现主从表浏览

    本项目“Repeater实现主从表浏览”利用Visual Studio 2008(VS2008)和Northwind数据库,为我们展示了一个如何在ASP.NET环境中通过Repeater控件来呈现这种关系的实例。下面将详细讲解这个知识点。 **Repeater控件**...

    锐浪asp.net MVC html5报表显示

    在这个示例中,我们将探讨如何在C#环境下利用ASP.NET MVC框架来实现数据的主从显示。主从显示是一种常见的数据展示方式,它通常用于展示一对多关系的数据,如一个订单与多个订单详情,一个客户与多个订单等。这种...

    基于asp.net图书馆理系统论文

    基于ASP.NET的图书管理系统是一种常见的信息管理系统,旨在提高图书馆的运营效率和...关键词如Visual Studio、ASP.NET和SQL Server 2010数据库技术,都是系统开发中的关键技术,它们共同构成了这个实用的图书管理系统。

    ASP.NET2.0数据指南中文01

    5. **主从报表**:"08 使用两个DropDownList过滤的主从报表.doc"和"09 跨页面的主从报表.doc"讲述了如何利用ASP.NET控件创建和展示主从关系的数据,例如使用DropDownList和GridView控件实现联动筛选和显示详细信息。...

    ASP.NET3.5典型模块开发源代码

    8.2.4 在ASP.NET中使用JMail接收邮件 98 8.3 小结 103 第9章 上传和下载模块 104 9.1 上传和下载简介 104 9.2 简单的上传和下载 104 9.2.1 上传文件到服务器 105 9.2.2 从服务器下载文件 106 9.3 ...

    ASP.NET2.0数据指南中文02

    ASP.NET 2.0 数据指南中文版是一份深入解析ASP.NET 2.0框架中数据处理技术的经典资料,涵盖了各种数据绑定控件的使用方法和优化策略。此资源包括多个文档,详细阐述了如何在ASP.NET 2.0环境下有效地管理和操作数据。...

    ASP.NET源码——Vs下GridView演示多层Demo.zip

    ASP.NET是微软开发的一种Web应用程序框架,用于构建动态网站、Web应用和服务。在这个"ASP.NET源码——Vs下GridView演示多层Demo.zip"压缩包中,我们主要关注的是如何在Visual Studio(Vs)环境中利用ASP.NET的...

    ASP.NET(C#)巩固教程(微软原创5-20

    - **插入,更新和修改数据**:在16插入,更新修改数据中,教程会涵盖如何通过ASP.NET处理数据库中的数据插入、更新和删除操作。 - **自定义验证**:19给编辑添加自定义验证这部分,会讲解如何为用户输入添加自定义...

    滚动新闻控件 ASP.NET与C#实现(包含原代码)

    【滚动新闻控件ASP.NET与C#实现】是网页开发中的一个重要知识点,它涉及到了ASP.NET框架和C#编程语言的结合使用。滚动新闻控件主要用于在网站上动态展示最新的新闻信息,通常以滚动的形式呈现,给用户带来即时更新的...

Global site tag (gtag.js) - Google Analytics