“批量少次”依旧“少量多次”–邮件通信系统效率浅谈

By admin in bet体育在线网址手机版 on 2019年1月3日

 

 

笔录数据:57万条;

 

   
Web服务器应用HTTP协议,它是一个非持久连接的说道,是无状态的(尽管可以利用多种措施来模拟Web会话状态,但真相上Web是无状态的),由于每四遍连续都要消耗一定的资源,所以尽量缩短连接的次数,每回连续发送尽量多的多寡也是言之有理,这样它亦可提供巨大的吞吐量,可以增强Web应用系统的处理效能,这便是举世瞩目的“批量少次”原则。

图片 1

单次发送邮件的笔录条数:2万条(数据经过自定义压缩);

本条时候可以观察大家转变的实体类的原始,倘使觉得不好,可以修改重新举办。

  • 可以拍卖超越邮箱容量的多少;
  • 可以适时精晓接收端的劳作状态;
  • 可以应对网络情形不好的题目,提升系统的平安。

图片 2

笔录大小:每2万公约4M(非缩短),总共约 1032M;

 

   
WCF邮件通信系统之文件同步程序行使了“少量多次”的标准,来处理将整站文件同步到长途服务器的天职,发送的文件大小没有界定,它会自行切割大文件,每便发送一个分部文件,多次殡葬邮件,从而成就文件同步任务。

关门窗口后,假设还想添加更多的自定义查询,请单击“高级”按钮,将另行下面的步子,添加一个新的询问,结果如下图:

测试结果:

只顾勾选“SQL查询的有效性”,并输入要映射的实体类名称等信息,然后点击“确定”。

待同步的表:基金净资产值表;

图片 3

自先导发送到全体导入的时光:6分钟左右(受网络环境影响);

自定义查询的实体类跟一般的PDF.NET实体类使用办法接近,都亟待OQL表明式来操作,例如选择要使用的字段,设置Where条件,这里为了方便,仅仅调用了OQL.Select()方法,选拔查询出来的凡事列。

 

 然后,弹出一个新窗口,举行生成实体类的有关设置:

   
我们平日境况出手工收发邮件,如若有无数文件或者内容,也是梦想对方几回发过来的,这也顺应“批量少次”的条件。可是大家使用的邮件系统都有限制,即每一次发送的附件数量和尺寸有肯定的限定,比如4M,所以有更大的文书,就不可以不分开多次殡葬了,因而“批量少次”的口径也有不适用的场景。为何会有这么的题材?发送超过1M大大小小的邮件,对于前几日的网络连串和大多数邮件系统而言,发送速度都有点慢了,我测试使用FoxMail发送4M之上的邮件,大概有10%-40%的战败率,要么我这边的网络速度太慢,邮件服务器指示处理超时,要么对方邮件服务器拒绝接受或者接到很慢。

在“属性浏览器”里面,进行部分变通的安装,紧要有文件路径和代码语言的取舍,设置好未来,可以单击网格上边的“预览”连接,弹出如下界面:

 

  List<JJDangAnInfo> list =
EntityQuery<JJDangAnInfo>.QueryList(q);

 

4,在“查询窗口”,鼠标右键的弹出菜谱上,选取“生成实体类”

    下边是数额同步程序处理“大数据量”的一个测试结果:

一般状态下我们的ORM框架都是将单表或者视图照耀成一个实体类,有时候也会将积存过程映射成实体类,如若处在系统移植性的考虑,你不想写存储过程,那这个扑朔迷离的SQL查询怎么映射成实体类?

   
对于数据同步的运用该利用这种格局?假设每个任务要同步四个表的数据,而且某个表的数据也许很大,“批量少次”的处理情势有可能扩充处理的复杂度和消耗更多的资源,比如将数据打包成压缩文件,对方接到到压缩文件并解压缩,然后将内容很大的多少载入内存,再逐级导入数据库,处理的最后结出,要等这么些操作完成将来才能领悟。假设选择“少量多次”的处理形式,每回只发送一个表的数目,即使表相比大分页发送,接收端处理后随即上报处理结果,而不是等到全体拍卖完成后。由于每一趟发送的多少相对较少,所以系统通信的成功率很高,而且处理功效也很好。

图片 4

   
每一次发送多大的邮件速度和成功率最高?经过重重次考试,我发现只要情节在1M内成功率接近100%
,2M之内有95%左右,3.5M未来成功率大幅降低,只有60%左右。看来,要发送大量的邮件,必须拔取其它一个口径:“少量多次”,历次发送成功率最高的最大容量(少量)的邮件,分多次连接发送。这样做还有一个好处,每个“任务”可以发送远大于邮箱容量的邮件,比如发送上G大小的邮件。

注:本文所说的自定义查询在PDF.NET3.5未来方可以支撑,实例代码需要在PDF.NET
4.1之上帮忙,PDF.NET本身仅需要.net
2.0支撑,框架的最新版本没有公开发表,有关框架的详细音信请看官网介绍:
http://www.pwmis.com/sqlmap

 

最后,将得以一贯询问了,用过PDF.NET框架的朋友都晓得,就一行代码,如本例所示:

 

图片 5

而且,选用“少量多次”的方案,提升了方案的灵活性,比如下边测试的这多少个表,就算一起初就意识对方数据库不可能利用仍旧目的表结构不平等,从而及时平息那多少个表的联合,是不是比一遍把拥有数据发过去(姑且认为你有法子),然后在发送端傻等要好得多?

 

洋洋信箱只是限量了“附件”的大小,但不会限制邮件正文的轻重缓急,所以WCF邮件通信系统的数量同步程序拔取了“正文发送数据”的形式,不过该形式太过“非主流”,以至于得不到总监的肯定,但那当成“突破附件大小限制”的一个方案。

 

测试环境:一个外网Hisuntech邮箱,一个外网Notes邮箱,源数据库在外网,目的数据库在内网;

修改该文件的内容,将本来有实在成本代码的地点,都替换成 @jjdm
的SQL查询参数名称,如上图。

 

3,新建一个询问,在上图左侧的内容区输入你的SQL语句,按“F5”键,假设不易将会看出结果网格。

6秒钟处理50多万条记下的邮件通信系统,可以跟“批量少次”情势相比一下,相信这一个速度依旧乐意的。

除了可以通过本文说的措施将SQL语句映射到实体类,还足以经过PDF.NET内置的SQL-MAP技术来促成实体类映射,就像iBaits这样,但比iBaits简单很多,详细内容,请参见:

 

单击“生成”按钮,将生成五个选中的实体类文件。

数量境况:

 

   
这几个标准在成千上万场所下都适用,比如ADO.NET相比较原来的ADO数据访问,由于选择了断开式连接,极大地提高了系统的处理能力,又例如商业贸易中的“批发”格局,分销商每一遍从批发商这边批量购入,可以拿走更高的价格折扣。因此,在其实工作中,“批量少次”原则,也是自家奋力推崇的一个规则。

 

小结一下“少量多次”在邮件通信系统中的意义:

 

========================

    先开辟自定义查询的实体类配置文件
EntitySqlMap.config文件,我们做一下改动:

===========================================================

终极,大家看看咋样在类型里面使用这样的实体类:

小技巧:

PDF.NET自定义查询实体类的实例运用,还足以参见

 在做Web开发的时候,相信广大人都看过一个“批量少次”原则:

2,在“数据连接”选项卡上,采纳或创办一个连连分组,然后再添加一个连续(注意鼠标右键菜单),之后就可以开拓该连接,看到该连接下边的数据库、表、视图、存储过程等内容,如上图所示。工具协助各样类型的数据库。

网络状态:

 

 

 

接下去,将EntitySqlMap.config文件作为嵌入式资源文件编译,注意假若你做的是WinForm
程序,可以跳过这一步,但程序运行时索要包含该文件,所以仍旧指出作为嵌入式文件编译,这样有更好的安全性。另外该文件应该和实体类文件放到同一个索引下边。

图片 6

图片 7

 

图片 8

 

SQLSERVER
占了500多M内存,原来的程序不可以五次询问出50多W数据了,记录下这些题目标化解进程。

留意:自定义查询的实体类假诺你的SQL查询语句需要运用参数,例如地方的
@jjdm,则还应该安装OQL的InitParameters属性,如上图所示。

 

 

 

6,经过上述步骤,我们的代码已经足以运行了。当前的实例用到了一个ASP.NET+MVC
2.0的花色中,下边是运行的效率图:

PDF.NET数据开发框架
之SQL-MAP使用存储过程

5,经过地方的步骤,咱们的实体类文件生成好了,下边做一些备选干活,看看如何在品种里面使用。

 

图片 9

图片 10

图片 11

   
到此截止,你可以动用本工具作为一个支撑多种数据库的“查询分析器”来接纳了,你仍是可以够扩充它的数码提供程序,以支撑您协调的数据源。

 

留神:这里除了生成的实体类文件之外,还会转变一个固定名称的实体类配置文件
EntitySqlMap.config文件,下边将会讲到它的用处。

接下去,将这3个文本添加到我们的Model项目中:

 

实际上,不管是单表,视图,存储过程,SQLSERVER的表值函数,自定义的SQL查询,甚至是擅自复杂的SQL查询,都可以用一个SQL语句来代表,只要我们的ORM框架可以实现将SQL语句的询问结果映射成实体类,那么使用ORM就很简单了。大家使用PDF.NET(PWMIS数据开发框架)来实例讲解一下这一个历程。

1,首先下载并设置一个“PDF.NET集成开发环境”,详细内容请参见《PDF.NET数据开发框架之集成开发工具Ver
4.1发布
》,下边是该工具运行的界面:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 mobile.365-838.com 版权所有