网站访问速度

2024-05-06

网站访问速度(精选七篇)

网站访问速度 篇1

随着网络的高速发展,网站已经成为政府、公司企业、个人不可或缺的部分。成千上万的网站混迹于网络潮流中,为获得更多的访问量绞尽脑汁。

能吸引更多的访问者访问,网站必须具备两个主要因素:有用的内容和可接受的访问速度。当网络中有类似主题的网站推出时,能吸引访问者的因素唯一为可接受的访问速度。

调查表明,网站页面的显示速度如果超过5秒,除了少数有毅力和耐心的客户能够等到所有的内容打开,大多数人早已厌倦而离开。

提高网站的访问速度,特别是对于大型的应用网站,必须面对大量用户访问、高并发请求,必须从多个环节进行优化:使用高性能的服务器、高性能的数据库、高效率的编程语言、高性能的Web容器。

几乎所有的网站都不可避免地使用数据库管理系统来存储网站数据,数据库方面的原因是衡量网站好坏至关重要的一部分。下面将重点阐述在网站设计过程中关系数据库查询优化对于提高网站访问速度的重要性。

1 查询优化的必要性

以一个中大型电子商务应用网站为例,详细描述数据库查询优化的必要性。

查询购买了3号商品的顾客(会员)的姓名。用SQL语言表达如下:

Customer表用来保存顾客基本信息,CLog表用来保存顾客购买信息。假设顾客基本信息、购买数据库中有10000个顾客记录,100000个购买记录,其中购买3号商品的记录为100个。

系统可以用多种等价的关系代数表达式来完成这一查询:

还可以写出几种等价的关系代数表达式,但分析这三种情况就足以说明数据查询优化的必要性。下面将分别分析由于查询执行的策略不同,查询的速度产生很大的差别。

1.1 第一种情况

(1)计算广义笛卡尔积

把Customer和CLog的每个元组连接起来。一般连接的做法是:在内存中尽可能多地装入某个表(如Customer表)的若干块元组,留出一块存放另一个表(如CLog表)的元组。然后把CLog中的每个元组和Customer中每个元组连接,连接后的元组装满一起后就写到中间文件上,再从CLog中读入一块和内存中的Customer元组连接,直到CLog表处理完。这时再一次读入若干块Customer元组,读入一块CLog元组,重复上述处理过程,直到把Customer表处理完。

设一个块能装100个Customer元组或1000个CLog元组,在内存中存放10块Customer元组和1块CLog元组,则读起总块数为:

其中,读Customer表100块。读CLog表10遍,每遍100块。若每秒读写50块,则总计要花22秒。

连接后的元组为104×105=109。设每块能装100个连接后的元组,则写出这些块要用109/(100×50)=2×105秒。

(2)作选择操作

依次读入连接后的元组,按照选择条件选取满足要求的记录。假定内存处理时间忽略,这一步读取中间文件花费的时间(同写中间文件的时间一样)需2×105秒。满足条件的元组仅100个,均可放在内存。

(3)用投影

把第2步的结果在Cname上作投影输出,得到最终结果。

因此,第一种情况下执行查询的总时间≈22+2×2×105≈4×105秒,这已经是忽略了所有的内存处理时间。

1.2 第二情况

(1)计算自然连接

执行自然连接时,读取Customer和CLog表的策略不变,总的读取块数仍然为1100块,花费22秒。但自然连接的结果比第一种情况大减少,仅为Clog表的记录个数105个。因此写出这些元组时间为105/100/50=20秒,仅为第一种情况的千分之一。

(2)执行选择运算,读取中间文件块,花费时间跟写中间文件一样为20秒。

(3)作投影,把第2步的结果投影输出。

第二种情况执行总时间≈22+2×20≈62秒。

1.3 第三种情况

(1)先对CLog表作选择运算,只需读一遍CLog表,存取100块花费时间为2秒。因为满足条件的元组仅为100个,不必使用中间文件。

(2)读取Customer表,把读入的Customer元组和内存中的CLog元组作连连接。也只需读一遍Customer表,共100块花费时间为2秒。

(3)把第2步连接的结果用投影输出。

第三种情况执行总时间≈2+2≈4秒。

这个简单的例子已经足够表明,查询优化的必要性,三种不同的情况查询的代价由4×105秒变为62秒再减少到4秒。从这个例子也已经看出查询优化的初步思想:在查询过程中先做选择操作,再做连接操作,这样就大大减少了参加连接的元组。

2 查询优化基本策略

2.1 优先选择运算[1]

优化策略中最重要、最基本的一步。从上面的例子可以看出,第二种情况下先做选择运算,比起第一种情况,计算代价呈指数级降低。特别是大型的电子商务应用网站,数据库中积累了海量的数据,如果不先做选择运算,中间结果大小的增长甚至是高性能服务器有时也难于承受。

2.2 使用索引[1]

在执行数据表的查询连接前通常应对关系适当地预处理。预处理的方法主要是在连接属性上建立索引,然后执行连接。例如自然连接Customer∞CLog,使用索引的步骤是:

(1)在CLog上建立Cno的索引;

(2)对Customer中每一个元组,由Cno值通过CLog的索引查找相应的CLog元组;

(3)把查找的CLog元组和Customer元组连接起来。

这样Customer表和CLog表都只要扫描一遍,处理速度只是两个关系大小的线性函数。

2.3 其他优化策略

上面两条为主要的优化策略,其实这里讨论的优化策略通常情况下可以提高查询效率,但不一定是所有策略中最优的。下面简单提到其它比较重要的优化策略,不做过多详细说明。

(1)使用存储过程。

(2)清理垃圾数据。

(3)将语句提交给DBMS的查询优化器,查看SQL语句的查询计划和评估分析是否是优化的SQL优化的策略有很多,如有些人还建议在海量查询时尽量少用格式转换、尽可能不使用占用大量资源的游标、查询时不要返回不需要的行、列等等。所有这些不可能一一列举,实际应用中应该结合具体的数据库结构情况。

3 结束语

查询优化只是数据库技术提高网站访问速度其中一个方面,下面的公式反映出多用户数据库查询时必须考虑的时间代价包括多方面。

总代价=I/O代价+CUP代价+内存代价+网络传输代价。

由此可以看出,糟糕的数据库设计以及低效率的查询语句将严重消耗服务器的I/O资源、CPU资源、内存资源和网络资源,而低性能的软硬件设备(包括服务器技术、数据库管理系统)都将是网站访问速度的瓶颈。

所以解决因数据库技术引起的网站访问速度问题,要考虑的问题包括:服务器性能(处理能力)、数据库管理系统、数据库设计、数据库维护、优化的查询语句,所有这些都有大量的工作要做。

摘要:数据库是网站非常重要的一部分,数据库因素的好坏直接影响网站的性能。本文主要论述了网站应用中数据库查询优化的必要性,并提出一些查询优化的策略,作为提高网站访问速度数据库技术方面的参考。

关键词:网站访问速度,数据库,查询优化

参考文献

[1]萨师煊,王珊.数据库系统概论[M],北京:高等教育出版社,2000.

[2]邹建.SQL Server2000开发与管理[M].北京:人民邮电出版社,2006.

提高网站访问速度的一些技巧 篇2

很多人都用虚拟主机来做网站,将网页文件存放在虚拟空间上,但是页面内容一多,网站打开的速度就显得特别慢,如果您碰到这种情况,与其寻求更好的空间,不如通过优化网页代码来取得满意的速度。下面总结了一些切实可行的方法,制作主页时,以下的方法可以令网页速度大大提高。

一、记得帮页面减肥

浏览网页实际上是将虚拟主机中的网页内容下载到本地硬盘,再用浏览器解释查看的。下载网页的快慢在显示速度上占了很大比重,所以,网页本身所占的空间越小,那么浏览速度就会越快。这就要求在做网页的时候遵循一切从简的原则,如:不要使用太大的Flash动画、图片等资源。干净、简洁的页面会给人一种思路明朗的感觉。

二、如没必要,尽量使用静态HTML页面

众所周知,ASP、PHP、JSP等程序实现了网页信息的动态交互,运行起来的确非常方便,因为它们的数据交互性好,能很方便地存取、更改数据库的内容,使网站“动”起来,如:论坛、留言板等。但是这类程序必须先由服务器执行处理后,生成HTML页面,然后再“送”往客户端浏览,这就不得不耗费一定的服务器资源。如果在虚拟主机上过多地使用这类程序,网页显示速度肯定会慢,所以没有必要,请尽量使用静态的HTML页面。

三、不要将整个页面内容塞到一个Table中

这是网页设计的问题了,很多站长为了追求页面统一对齐,将整个页面的内容都塞进了一个Table(表格)里,然后再由单元格td来划分各个“块”的布局,这种网站的显示速度是绝对慢的。因为Table要等里面所有的内容都加载完毕后才显示出来的,如果某些内容无法访问,就会拖延整个页面的访问速度。正确的做法是:将内容分割到几个具有相同格局的Table中去,不要全都塞到一个Table里。

四、将ASP、ASPX、PHP等文件的访问改为.js引用

这在ASP、ASPX、PHP等程序设计时应该注意的,如果要在静态的HTML页面里嵌入动态的数据,而这些动态的数据是由ASP、PHP等程序来提供的话,会使用以下的语句引用:,这样的话,每次有一个人访问你的网站,服务器就要执行并处理一次tongji.asp文件,从数据库抽取相应的数据,再输出给网页显示,如果有几万个人同时访问,就要执行几万次,后果就可想而知。建议在这些程序中将数据动态生成到一个1.js文件中去,然后在首页通过

提高学校主页访问速度的技巧 篇3

关键词:主页;访问速度;技巧

中图分类号:TP393.0 文献标识码:B 文章编号:1673-8454(2008)08-0066-02

校园网是学校对外的窗口,是学校形象的缩影。如果别人在浏览你的学校主页时需要等待很长时间的话,那么很可能会关闭它。下面与大家共享一些提高学校主页访问速度的技巧。

一、尽量采用静态的HTML链接页面

虽然现在最流行使用像ASP、PHP、JSP等程序来实现网页信息的动态交互,因为它们运行起来非常方便,最重要的是数据的交互性好,可以很方便地存取和更改数据库的内容,使网站真正与浏览者“互动”起来。但美中不足的是,这类程序必须先由服务器执行处理后生成静态的HTML页面,然后再通过互联网把这些信息“送”往客户端浏览,由于耗费了学校主页的服务器资源,所以网页的显示速度会有所降低。建议直接采用静态的HTML链接页面,它可以直接被传送,不但浏览速度快,而且安全性比ASP等要高得多。

二、用.js引用的方式来访问ASP、ASPX、PHP等文件

在ASP、ASPX、PHP等程序的设计过程中应该注意:如果要在静态的HTML页面里嵌入动态的数据的话,每有一个人来访问你的学校主页,服务器就必须执行并处理一次asp文件,然后从数据库抽取相应的数据工再输出给网页显示。假如有成千上万的人同时来访问,可想而知服务器会因“忙”而发生数据拥堵故障。

最好是在这些程序中将数据动态生成到一个.js文件中,然后只须在首页通过“<SCRIPTsrc=../../"http://www.xxx.com/js文件名"></SCRIPT>”这样的代码来引用该js文件。这样就把数据显示的任务交给了客户端浏览器去做,它不再耗费服务器的资源,在大流量访问时的显示速度就不会减慢。

三、不要将整个页面内容都放入一个表格

在学校主页的设计过程中,有不少学校为了追求页面的统一对齐而将整个页面的内容都放入了一个Table(表格)里,然后再用单元格来划分各个“小块”的布局。用这种方法做出来的网站,虽然制作时非常整齐,但它的显示速度非常慢,因为其中的表格Table必须要等所有内容都加载完毕后才可以完整地显示出来,如果某些内容的显示速度较慢的话,就会拖延整个页面的访问速度。

所以建议将内容分割到几个具有相同格局的Table中去,而不是一股脑儿地全部放入到一个表格中。

四、为页面减肥

互联网用户浏览网页的过程实际上是将学校主页的内容先下载到本地硬盘,然后再用本地的浏览器来解释查看,因此下载网页速度的快慢在显示速度上占了很大比重。学校主页文件本身所占的空间越小,这个传输时间就越短,浏览速度就会越快。这就要求在设计学校主页时应遵循“一切从简”的原则,比如最好不使用效果很炫但体积很大的Flash动画,或者是一些清晰度高的大尺寸BMP图片等资源。学校的主页要干净、简洁、直奔主题,这是提高访问速度的最根本原则。

五、巧设网站的计数器代码

目前几乎所有的网站都会在首页中放置计数器以统计网站的访问流量,但大部分功能强大的网站统计系统都有出故障的时候,如果直接把统计代码放到页面内容的前面或放在一个表格、标签中的话,那么当计数器不能访问时,学校主页的表格就很有可能产生十几秒甚至几十秒钟的访问延迟。

正确的做法是把统计代码放到主页的最下面,而且不要与页面内容同在一个表格或标签里,这样即便是在计数器不能正常访问的时候,学校主页的访问速度也不会因此而受到丝毫的影响。

六、制作“友情链接”的技巧

一般学校的主页都会有“上级部门”和“兄弟学校”的友情链接,如果都是用LOGO图片链接的话,那么数量一多就必然会影响到网页的显示速度。最好的解决方法是只做文字链接;再就是最好是将所有的“友情链接”都放到一个独立的分页中,然后在首页与此页链接;对于一些非常重要的友情链接(必须出现首页中的),建议把链接所在的整个表格放到页面的最下方,因为页面是由上到下逐行显示的,这样就不会延迟到其他内容的显示。

七、使用Iframe嵌套别的页面

比如需要在学校主页上插入一些代码(比如一些老师的博客)而又不想让它们影响访问速度的话,那么使用Iframe是最好的方法,可以直接用代码将它们嵌入进去:<IFRAMEmargin

Width=0marginHeight=0src="http://www.xxx.com/ServerPart.asp"frameBor

der=0width=468scrolling=noheight=60leftmargin="0"topmargin="0">

参考文献:

[1]丁春明.浅析网络环境下教学理念与方式的变革[J]. 中国教育信息化,2007,(9).

基于Web数据提高访问速度的方法 篇4

随着Internet技术的发展和普及, 越来越多的单位和个人都建立了自己的网站;在创造信息高速交换的同时, 数据存储量也在不断膨胀, 特别是数据库管理的对象已不再仅限于文本数据等简单的数据类型, 而需要描述和保存大量多媒体非结构化的复杂数据, 以及数据间的关系, 加上每个动态页面和应用系统都在频繁访问数据库, 使得互联网络中数据的访问速度不断下降, 用户只能用升级硬件设备来应付大量的用户访问。以下主要探讨在有限硬件资源的基础上通过改变和优化数据访问的管理方式来提高数据访问效率。

1利用并发连接池的方法

目前, 通过Web[1]访问数据库的过程如图1所示 (以ASP服务器为例) 。根据这种访问方式, 很早前就有人提出利用数据库设立连接池的方法, 以解决访问速度问题, 也就是在应用程序启动时建立足够的数据库连接, 并将这些连接组成一个连接池。由应用程序动态地对池中的连接进行申请、使用和释放。对于多于连接池中连接数的并发请求, 应在请求队列中排列等待, 并且应用程序可根据池中连接的使用率, 动态增加或减少池中的连接数[2]。连接池的概念是:连接池允许应用程序从连接池中获得一个连接, 并使用这个连接而不需要为每一个连接请求重新建立一个连接。一旦一个新的连接被创建, 并且放置在连接池中, 应用程序就可以重复使用这个连接, 而不必实施整个数据库连接创建过程。当应用程序请求一个连接时, 连接池为该应用程序分配一个连接而不是重新建立一个连接;当应用程序使用完连接后, 该连接被归还给连接池而不是直接释放。

目前, 几大主流 J2EE 服务, 如:IBM 的 Websphere, SUN 的mcat, 国内金蝶公司的 Apusic 服务器系统中都应用基于 JDBC 接口的数据连接池技术。但现有连接池的参数值配置是在初始化时设定, 在池的运行过程中, 其值不会改变, 池的内部管理机制也存在局限性, 导致应用中资源利用率降低, 过多并发连接使系统运行效率下降等问题。为了解决此问题, 有如下方法:

(1) 通过设计连接池的动态参数调整方案, 使连接池一次能提供的并发连接数随着客户端用户连接请求数量自适应地调整, 最大限度地满足用户数据库访问的连接请求, 并不断优化连接池的参数。随着应用系统的不断运行, 达到最优配置。为了实现连接池参数的动态调整, 首先应建立一张 Config.xml 表来配置一些基本的参数和相关属性, 采用 JDOM 读取连接池的 XML 配置文件, 完成驱动注册和初始化连接池工作。文件格式为:

再建立一个日志文件 ConnLog.xml, 记录连接池自运行到撤消整个期间分配出去的每一个连接的起始时间和终止时间。

(2) 设计自优化连接池的智能管理类 DBconnPoolA-gent、连接代理类connAgent 和连接池类 connPool。其中, 连接代理类 connAgent封装数据库的物理连接, 标志连接状态的属性及相应的存取方法;连接池类connPool 是连接池管理类的内部类, 包括连接池的基本属性参数、初始化方法等, 它的所有方法仅供管理类来调用;智能管理类 DBconnPoolAgent 是整个连接池的主控类, 负责对池的资源和运行策略进行管理, 以控制整个连接池实现细节。只有通过这个类才能对数据库的物理连接进行分类管理, 并按照预定的策略进行分配、释放连接及连接异常的处理。该类主要包括管理策略的选择、日志文件的分析、优化参数的生成及读取等功能; 同时也是对外访问数据库的接口。在管理类中两个用来记录获取连接时间 writeStrart-Info () 和释放连接时间 writeEndInfo () 的方法, 分别获得连接和撤消连接池时将返回连接的 ID 号及分配连接的时间、连接的使用终止时间写入日志文件ConnLog.xml 中。使用搜索算法 searchArithmetic 类的方法对该日志文件进行参数值的优化计算, 将计算所得的并发连接数及并发时间写入配置文件 Config.xml的对应节点, 供下一次启动连接池时读取。从而可以使池的参数值随着用户请求量的多少进行动态优化调整[3]。

通过管理类读入配置文件初始化值, 在池的具体使用过程中生成记录连接信息的日志文件, 并对日志文件进行分析, 得到较优的配置参数再写入池的配置文件。利用这种循环取优方式, 可以在每次启动连接池时读取较为合理的配置参数, 避免对池参数的人工设置。通过将该池与现有池进行实验对比, 能提高大型应用系统中对数据库访问的并发响应能力, 对应用系统中的数据库连接资源进行更有效的管理。

2改善网络数据库的访问性能

改善网络数据库的访问性能, 即减少对大量数据的查询时间, 满足复杂交互要求。因此, 为了满足用户交互性和应用程序复杂性的需要, 必须使用易于操作和修改的优化方式访问数据库[4]。

(1) 优化数据库连接。

为了提高SQL Server上应用程序的性能, 在注册表中, 将主要的ADO组件的线程模式从Apartment改变为Both。限制应用程序的等待连接到数据库的时间。数据库活动中的集中访问导致数据库的积压, 从而导致等候时间的增加。过多的延迟增加了用户得知请求不能得到处理前的等待时间。所以设置连接超时, 在应用程序的设计中及时关闭不再需要的连接。这样可以减少对数据库资源的需求, 并且使省下的数据库资源能为其他用户所用。尽可能将应用程序设计为共享连接, 并且不使用那些不需要的连接。增加记录缓存, 同时请求多个记录, 以增加连接吞吐量。创建数据库时合理配置数据库文件和事务日志文件, 避免自动增大数据库文件中输入/输出的高强度操作, 而使数据库性能降低。通过使用数据分区、故障转移群集及日志转移三种技术对数据库进行扩展, 为网络应用程序提供高可用性和高性能。

(2) 设计数据库的索引[5]。

合理的索引能显著提高数据库整个系统的性能。在适当的情况下, 尽可能使用存储过程而不是SQL查询, 因为前者已经过了预编译, 运行速度更快。同时让数据库仅返回你所需要的那些数据, 而不是返回大量数据, 再让ASP程序过滤。总之要充分和有效地发挥数据库的强大功能, 让它按照要求反馈给最合适和最精练的信息。

(3) 在可能情况下应该使用SQL Server而不是Access。

因为Access仅是基于文件的数据库, 多用户性能很差。尽量使用OLEDB和非DSN方式连接数据库, 因为这种连接方式有更好的并发性能。

(4) 避免使用DAO (Data Access Objects) 和RDO (Remote Data Objects) 数据源[6]。

因为他们主要应用在单用户的处理系统里, ADO (Activex Data Objects) 才是为Web应用设计的。当引用ADO变量时, 会消耗较多的CPU周期。因此, 如果在一个ASP页面中多次引用数据库的字段变量, 一个较好的方式是将字段值先放入本地变量, 然后可以直接调用本地变量来计算和显示数据。缓存ADO Connection对象也许不是一个好主意, 如果一个连接 (Connection) 对象被存储在Application对象中而被所有ASP页面使用时, 所有页面就会争着使用这个连接。但是如果连接对象被存储在Session对象中, 就要为每个用户创建一个数据库连接, 这就减小了连接池的作用, 并且增大了Web服务器和数据库服务器的压力。可以采用在每个使用ADO的ASP页, 创建和释放ADO对象来替代缓存数据库连接。因为IIS内建了数据库连接池, 所以这种方法非常有效。缺点是每个ASP页面都需要进行一些创建和释放操作。

(5) 建立记录集[7]。

利用Recordset的时候, 要清晰合理地设置数据游标 (Cursort) 和锁定方式 (Locktype) 。因为在不同的方式下, ASP会以不同的方式操纵数据库, 其执行速度也有很大区别, 尤其在大数据量时, 如果只想遍历数据, 则默认游标 (前进、只读) 会带来最好的性能。

(6) 为了提高ASP+SQLServer运行速度, 主要采用以下技巧优化其性能。

使用综合的Web服务器/数据库的两层系统, 取消三层系统位于客户端和数据库之间的一层[8];设置对所有的请求使用同一个数据库连接, 极大地提高了性能;当要进行的查询几乎完全一样且仅查询的值不同时, 可以使用预处理语句绑定变量存放在某个特定的位置。预处理语句与在执行之前解析和优化的语句相比, 其性能要高出许多。虽然预处理语句的存储代价相对较高, 但只要不用于循环中, 一次性使用是完全适用的;创建游标的代价不菲, 所以应尽量避免在循环内部创建游标;使用好的查询机制减少查询数据库的工作量, 将最常用的查询结果缓存起来, 对限制更多的部分进行查询/更新操作, 这样第二部分要处理的数据将会少些, 从而加快运行速度。执行少量的较大查询, 避免大量的较小查询, 对查询进行预编译。不断建立和更新索引会浪费时间和用于存储它的磁盘空间, 所以只对希望进行查询的部分建立相关的索引。合理建表, 一般一个表的容量在20万条就应该建新表。

3优化Web数据库页面

用户访问静态Web页面时, Web服务器只需简单地将该页面传回给用户浏览器, 由浏览器解释执行[9];而用户访问“动态” Web页面时 (含服务器端执行程序) , Web服务器需要先解释执行该页面, 将嵌入在页面中的服务器端执行代码在服务器端执行完毕, 并将执行结果形成一个“静态”的Web页面传回给用户浏览器, 再由浏览器解释执行。在Web数据库应用系统中, 当用户访问Web数据库页面时, Web服务器需要先与数据库服务器交换信息, 从数据库中动态地读取数据并形成一个“静态”的Web页面传回用户浏览器端, 再由浏览器解释执行。基于Web页面的上述执行过程[10], 如果把“从数据库中动态读取数据”只执行一次, 并形成一个“静态”的HTML代码段。在需要从数据库中动态读取数据的页面中插入该段代码, 就能减少访问数据库的开销, 从而提高访问该页面的速度, 其原理类似于程序的一次编译、多次执行。

4结语

通过并发连接池、优化数据库连接和Web数据库页面的方法, 对客户机访问数据库的过程进行改良, 在并发连接池中建立连接池的运行日志 ConnLog.xml, 根据新的配置文件重启, 生成新的连接池配置。随着连接池的不断运行, 池参数会不断优化调整, 使连接池处于最佳服务状态。在改善网络数据库和Web页面的访问中, 通过实验找到能提高访问速度的几种方法, 实践的效果显著。特别对于访问用户集中的情况, 效果更加明显。

参考文献

[1]马海燕.一种提高连接池并发处理性能的设计方案[J].微计算机信息, 2006 (5) :167-169.

[2]张德文, 韩儒博.JCA与异构EIS集成[J].微计算机信息, 2005 (3) :55-56.

[3]Hershberger J, Suri S, Bhosle A.On the Difficulty of SomeShortest Path Problems[J].ACM Trans.on Algor., 2007, 3 (1) :5-15.

[4]Papadias D.Query Processing in Spatial Network Data-bases.Proc.VLDB[Z].2003:802-813.

[5]黄水源, 段隆振, 邵君, 等.基于移动Agent网络智能化服务模型[J].微计算机信息, 2007 (12) :87-88.

[6]高英, 郭荷清.基于改进的ADO.NET的通用数据库引擎的设计与实现[J].计算机应用, 2005 (25) :35-38.

[7]王建华, 何盈捷, 张孝, 等.提高数据库事务处理性能的中间件设计[J].计算机科学, 2004, 31 (2) :71.

[8]徐泽丰, 王志坚, 许峰, 等.基于Web Services技术的数据库中间件[J].微机发展, 2004, 14 (3) :64-66.

[9]周珊珊, 程良伦.网络数据库安全和性能优化[J].计算机与现代化, 2006 (1) :48-50.

网站访问速度 篇5

Q:我的电脑前些天遇到了这样的问题,一些网站可以用IP访问却不能用域名访问,这是什么原因呢?

A:这是因为DNS域名解析出了问题,造成这一故障的原因,大都是因为ISP服务商的DNS服务器出了问题,或者是进行相关限制设置,当然有时也可能是因为本地DNS缓存发生故障引起的,

为了提高网站访问速度,系统会自动将已经访问过并获取了IP地址的网站存入本地的DNS缓存里,一旦再对这个网站进行访问,则不再通过DNS服务器而直接从缓存中取出该网站的IP地址进行访问。但有时就是因为本地DNS缓存出现了问题,而导致了网站无法访问的故障。这时可以这样来排除故障,运行Cmd.exe,进入命令提示符窗口,运行如下命令:ipconfig/flushdns,这样Windows系统就会重建本地DNS缓存,问题也就自然排除了。

网站访问速度 篇6

随着医院信息系统建设的现实需要以及办公自动化程度的提高, 数据库系统内容不断丰富、功能不断增强, HIS、PACS、LIS等系统得到了广泛应用。因此, 所依托的数据库系统在提供数据海量存储、信息发布、共享与查询等基础功能的同时, 应具有用户接口友好、数据具有较高独立性、冗余小、易修改、易扩充等特点, 并具有程序和数据统一管理和控制、安全性、完整性以及并发控制等能力[1]。而数据库访问速度则是这条生命线的重点和核心。数据库访问速度缓慢是数据库管理人员和一般使用人员所不能容忍的。

2 原因分析

导致数据库访问速度缓慢的原因可归结为硬件和软件2个方面。对于硬件, 除设备落后等原因外, 系统搭建不合理、存在明显瓶颈也是导致访问速度缓慢的原因[2]。软件设计不合理、系统不优化是访问速度缓慢的另一个重要原因, 且由于系统一般是不透明的, 使问题更加隐蔽, 不易发觉, 解决起来也更加困难。数据库访问速度缓慢的具体原因有: (1) 没有索引或者没有用到索引; (2) I/O吞吐量小, 形成了瓶颈效应; (3) 没有创建计算列导致查询不优化; (4) 内存不足; (5) 网络速度慢; (6) 查询出的数据量过大; (7) 锁或者死锁; (8) 读写竞争资源; (9) 返回了不必要的行和列; (10) 查询语句不优化。

3 解决方案

针对不同的需求, 系统的硬件搭建和配置会有很大区别, 是否合理无法一概而论。因此, 本文仅讨论通过优化系统 (包括数据库和操作程序) 来提高数据库访问速度的方案。

3.3.1优化设计

良好的程序设计配以优化的语句, 可在提供灵活方便的用户操作的同时极大地提高数据库访问速度和系统的稳定性。具体包括: (1) 将数据、日志、索引放到不同的I/O设备上, 以增加读取速度, 数据量越大, 提高I/O越重要; (2) 通过纵向、横向分割表, 尽量减小表的尺寸; (3) 依据查询条件, 优化索引和访问方式, 限制结果集的数据量; (4) 依据代码距数据越近执行效率越高的原则, 建立依次为DEFAULT、RULES、TRIGGERS、CONST-RAINT、PROCEDURE的优先级, 这样不仅可以减少维护工作、提高程序质量, 而且还可以提高执行速度; (5) 联合索引时使用UNION ALL执行的效率更高; (6) 尽量不要在客户端以外执行DISTINCT和ORDER BY语句, 否则会增加额外的开销; (7) IN后列表中, 将数据按概率由高到低排列可减少判断的次数; (8) SELECT COUNT (*) 效率较低, 尽量使用其他语句, 例如EXISTS; (9) 使用批处理语句一次更新多条记录; (10) 对于未优化的SQL语句, 可能存在少量的程序代码占据了大部分系统资源的情况, 这是优化的重点[3,4,5]。

3.3.2注意事项

程序设计不合理会降低程序的运行效率, 甚至会造成程序死锁, 在编写代码时必须注意。具体包括: (1) 由于全文索引耗费较大空间, 且查询耗时与字段总长成正比, 所以应尽量使用VARCHAR类型数据; (2) 大型数据库不要设置数据库自动增长, 否则会降低服务器的性能; (3) 尽可能不使用占用大量资源的光标, 如果需要ROW-BY-ROW执行, 尽量采用非光标技术; (4) 程序设计时将需要查询的结果预先计算好放在对应表中, 查询时直接调取, 例如医院住院费计算; (5) 由于执行效率较低, 应尽量减少使用视图; (6) 由于会使查询变慢, 所以除非必要, 否则不要使用DISTINCT语句和UNION语句, 且查询时不要返回不需要的行或列; (7) 按照一定的次序来访问表, 例如程序设计时是先锁住表A, 再锁住表B, 那么在所有的存储过程中都要按照这个顺序来锁定它们, 否则会导致程序死锁。

3.3.3必要限制

为防止误操作, 在程序设计时对可能存在的误操作必须增加限制和容错功能, 具体包括: (1) 在SELECT查询语句中使用WHERE字限制返回行数, 且应避免表扫描; (2) 对查询消耗的资源进行限制, 当查询所消耗的资源超出限制时, 服务器应具有自动取消查询的功能; (3) 限制用户单次查询操作返回的行数或用户单次查询操作的行数。

3.3.4节约资源

有效使用系统的有限资源, 使其最大限度地发挥作用, 是在硬件体系不变的前提下提高数据库访问速度的捷径。具体包括: (1) 减少临时表的使用, 尽可能使用结果集或Table类代替; (2) 尽可能将数据的处理工作放在服务器上, 以减少网络开销; (3) 为避免浪费资源, 不要在一段语句中多次使用相同函数, 采用结果变量调用方式可提高运行速度。

4 优化实例

本人在维护某医疗系统数据库时发现用户在检索信息时速度较慢, 延迟现象明显。经检测服务器、网络和用户终端等硬件系统没有不兼容现象, 且运行速度和带宽足够, 故可排除硬件故障。经对软件进行闭环排查, 故障诊断为:查询语句的条件部分及函数构造不正确, 未能建立有效索引。故障诊断结果如下:

问题查询语句:

正确查询语句:

修改后, 故障排除。

另外, 建议对经常用到的查询字段建立索引, 例如上面查询语句需对visit_data、visit_no、item_no字段建立索引, 这样可大大提高查询效率。就本例而言, 在outp_bill_items表中如果存在10万条记录, 在不加索引的情况下用正确的查询语句需要大约0.5 min才能返回值, 而加索引后的查询速度则是毫秒级的。

图1为加索引后的表结构。

5 结束语

随着医疗系统信息化建设的飞速发展和应用水平的不断提高, 以“军卫一号”系统为代表的较为成熟的医院信息管理系统不断涌现。作为医院信息系统的管理和维护者, 在应用的过程中一般不需要考虑系统的框架设计方面的问题, 而要注意在客户端应用程序的编写过程中语言和算法的使用。方便快捷的操作和优质高效的查询是搭建数据库的核心和意义, 语言的选择至关重要, 一般的高级编程语言 (例如:VB、VC等) 都提供数据库操作功能, 但操作速度远不如SQL语言, 如果是逐条信息操作, 则速度可能会相差几个数量级。因此, 对数据库

参考文献

[1]邵佩英.分布式数据库系统及其应用[M].北京:科学出版社, 2000.

[2]王珊, 萨师煊.数据库系统概论[M].北京:高等教育出版社, 2004.

[3]Peter Rob, Carlos Coronel.数据库系统设计、实现与管理[M].北京:清华大学出版社, 2005.

[4]冯建华, 周立柱.数据库系统设计与原理[M].北京:清华大学出版社, 2004.

网站访问速度 篇7

虽然打开博客页面很慢, 教师们发博文的热情却不减, 特别是缪主任, 他对每篇博文都认真回复。我浏览博文的回复, 无意中看到缪主任在一篇博文后回复说:“在外讲学时打开自己学校的博客做演示, 过慢的速度让我很尴尬。”看到这个回复我也挺尴尬, 因为这学期学校让我负责网络管理工作。所以, 我就在上课之余着手来查找问题的原因。

首先, 我怀疑是服务器系统问题, 因为这个服务器安装的系统是W i n d o w s 2 0 0 0 S e r v e r, 运行好几年了, 安装的赛门铁克杀毒软件也过期了, 经常连桌面都进不去, 一直修修补补凑合着使用。于是, 我将网站迁移到另一台服务器上, 这个服务器达到2 G内存, 安装了W i n d o w s 2 0 0 3系统。可是, 经测试, 问题没有改善。

下一个可能是I I S设置问题。为此, 我以“A S P网站慢”为关键字进行搜索, 按照搜索到的相关信息进行设置。如进行I I S优化, 为这个网站建立单独的“应用程序池”, 设置每隔3 0分钟回收工作进程;对A c c e s s数据库进行优化, 先将博客网站的数据库文件下载到本地电脑, 将里面不必要的日志删除, 再压缩这个数据库文件等。我在课余断断续续地做完这些设置, 问题依旧存在。其间, 我还用百度、谷歌变换多个关键字进行大量搜索, 结果依然让人失望, 找不到一丝解决问题的头绪。

第二天上午没有课, 可以着手继续解决昨天的问题。会不会昨天新的服务器系统也有问题呢?毕竟这台服务器的W i n d o w s 2 0 0 3也是以前安装的。想到这里, 我就将这个博客网站复制到自己工作的电脑上 (这台工作电脑也安装了W i n d o w s 2 0 0 3系统) , 在本机上运行这个网站。按道理来说, 速度应该是飞快的, 结果依然是不给力。最后, 我断定是这个博客网站代码 (A S P) 有问题, 研究方向转到查找代码故障。

查找代码故障是很头疼的事, 首先要判断是哪个页面出问题。根据网上查找的原因分析, 可以安装“智创网站专业级防火墙”, 通过防火墙的“I I S运行监控”功能监控I I S里A S P文件的执行时间和情况。二话不说, 下载安装, 通过客户端连接上去。博客程序里A S P文件的执行时间慢得惊人, 几乎每一个都超过半分钟。究竟是哪个A S P页面出问题了呢?我尝试着打开一些网页, 检查源代码, 反复修改、测试, 一直没有进展。

几乎每个网页都需要执行漫长的时间, 会不会是数据库连接问题呢?想到这儿, 解决问题的方向又转向数据库访问。可经查看, 这个博客程序连接数据库的代码一点问题都没有, 也是我们平时使用的代码。如果是连接数过多, 上面设置每隔3 0分钟回收工作进程应该能改善的, 而且查看服务器任务管理器中性能“w 3 w p.e x e”占用C P U资源也不多。

上一篇:电子科技下一篇:飞行技术