电子商务网站的性能优化

上传人:1777****777 文档编号:37529626 上传时间:2021-11-03 格式:DOC 页数:32 大小:912.52KB
返回 下载 相关 举报
电子商务网站的性能优化_第1页
第1页 / 共32页
电子商务网站的性能优化_第2页
第2页 / 共32页
电子商务网站的性能优化_第3页
第3页 / 共32页
点击查看更多>>
资源描述
摘 要广州中医药大学信息技术学院本科毕业论文题 目: 电子商务网站的性能优化 专 业: 班 级: 学生姓名: 指导教师: I摘 要 摘 要电子商务网站有着访问人数多,内容繁多,安全性要求高等特点。对于这一类网站,伴随着业务的不断发展,访问量的不断增加,原来的网站性能将难以满足日益增长的网站需求,迫切要求对原有的网站进行性能优化。对于一些中小型的电子商务网站而言,如果采用小型机进行升级,开发和维护费用过于昂贵;如何在原来的基础上进行技术升级,来满足网站对高负载的需求,是本文重点要进行研究的问题。本文将以“天下票务网”为例,介绍如何对原有网站进行技术优化。优化过程将分别从网站页面优化,程序优化,和数据库优化三个方面进行分析。对于页面优化,从页面元素组成,HTTP请求,页面布局分析多方面优化;程序方面,使用服务器数据缓存技术,对数据缓存到内存,同时还在部分程序中加入AJAX技术,和静态页面生成技术;在数据库方面,主要对存在查询缓慢的SQL语句进行优化,还对数据库表进行优化以及对MYSQL配置的优化。通过使用以上相关技术,来达到对网站性能优化的目的。在对网站进行优化之后,使用测试软件WebLoad和AB对网站进行性能测试,发现网站负载能力有所提高,达到了网站优化的目的。关键词:网站优化 性能 电子商务 数据库III目 录AbstractThe electronic commerce website has the lots of visit measures,many of content and the secure request higher characteristic, etc. Regarding this kind of website, following the service unceasing development, visit measures unceasing increase, the website performance originally will not meet the day by day growth website demand. The urgent need carries on the performance optimization to the original website. Speaking of some middle and small scale electronic commerce website, if using the micro computer to carry on the promotion, the development and the maintenance costs too expensive; How to carry on the technology in the original foundation to promote, satisfies the website to the high load demand, is the key research question of this article. This article take “ as an example, introduces how to carry on the technical optimization to the original website. The optimization process will optimize face to face page respectively from website, program optimization, and the data base optimize three aspects to carry out analysis. Optimizes regarding the page, from the page elemental composition, HTTP requested, the page layout analysis optimizes having many sides; Procedure aspect, the use server data buffer technology, meanwhile joins the AJAX technology in the some parts of programs, the static page production technology; In the database aspect, not only has the inquiry slow SQL sentence to carry on the optimization mainly, but also carries on the optimization as well as to the MYSQL disposition optimization to the database table. Through the above correlation technique, it serves the purpose which optimizes to the website performance. After do the web site optimization, software of WebLoad and ab will be used to test the web site performance. The site load capacity has been increased, I reach the purpose of optimize the web site. Key Words: Website OptimizesPerformanceElectronic Commerce Database目 录 目录摘 要 IAbstract II第1章 引言 11.1网站性能优化介绍 11.2网站性能优化技术 21.3开发背景及意义 2第2章 系统架构 42.1优化架构图 42.2系统优化流程 42.3运行及测试环境 5第3章 系统优化的实现 73.1网站首页的优化 73.1.1页面优化介绍 73.1.2网站首页优化的实现 83.2新闻发布模块优化 93.2.1模块功能介绍 93.2.2优化使用技术 93.2.3优化实现过程 103.3开奖公告模块优化 113.3.1模块功能介绍 113.3.2数据缓存机制 113.3.3 AJAX技术 123.3.4优化实现过程 133.4数据库优化 163.4.1数据库优化的原因 163.4.2 SQL语句的优化 163.4.3拆分表提高访问效率 18第4章 系统性能测试 204.1性能测试分析 204.2用ab进行性能测试 204.3用WebLoad进行性能测试 21结 论 24参 考 文 献 25致 谢 26第1章 引言第1章引言1.1网站性能优化介绍网站性能优化,就是指对现有的网站系统,使用一些更高效的技术实现,新的前沿技术,提高现有系统的性能,让网站运行更加稳定,能够负载更多的用户请求,提高网站响应速度。近年来,随着信息技术的迅速发展和广泛应用,电子商务在快速发展,电子商务网站的数量也在飞速的增加,互联网上一时间出现了大量的电子商务类型的网站,包括B2B,B2C,以及C2C的。大型的电子商务类网站,像B2B的阿里巴巴,B2C的亚马逊,C2C的淘宝,卓越等,每天都拥有上千万的用户访问量,用户在网站上进行页面访问,网上交易,查看个人信息等操作,服务器必须高效、正确地处理大量用户的请求, 这对网站的性能提出了新的要求,要面对每天如此巨大的访问量,必须要对网站进行相关的性能优化。才能及时,准确地把数据返回给客户端。通过对网站进行优化,从而提高网站的访问效率,是大部分电子商务网站常用的一种方法。在已有网站的基础上,最大限度地提高系统的可执行能力、运行效率,从而响应更多用户的在线请求。对于大部分的电子商务网站及一些门户网站及一些达到一定流量的社区类网站,对网站进行性能方面的优化是相当必要的。因为网站的访问数量是不断在增加,用户对网站会不断提出新的要求,用户需要更快、更稳定的网站,每天都会提出新的要求,另一方面,对于网站运营者而言,让自己的网站在现有的基础上通过优化达到提高网站性能的目的,也是相当可行的做法。像大型的技术社区网站CSDN,每天都在进行网站的性能优化来提高响应速度,提高系统的负载能力;大型购物网站掏宝网,在服务器端对数据进行大量缓存,并将部分商品页面进行静态化,以提高访问效率;还有综合性门户腾讯网,在多个地方使用了AJAX技术,将新闻静态化,对数据库和WEB服务器采用多境像,并建立多服务器群组等。1.2网站性能优化技术对一个电子商务网站进行性能优化,可以从硬件,程序,数据库三方面进行分析。从硬件方面来看,服务器硬件的性能、参数指标固然是重要的,利用现有的硬件资源,可以通过多种方式提高现有服务器性能,例如可以利用多台服务器,进行负载均衡,还可以添加镜像服务器,以此来分担服务器的负担,将原本一台服务器要进行的任务,分担到多台服务器上进行,从而提高运行效率;在程序方面,可以通过多方面的分析对系统进行优化,例如对页面进行缓存处理,将部分频繁、单一的数据库访问生成静态文件,将访问频繁的页面进行静态生成,使用时下流行的AJAX技术,节省网络带宽,以达到更快的响应速度,同时,页面级的优化也是相当重要的,比如压缩页面元素,尽量减少HTTP请求数量等,都会在进行网站优化时起到重要的作用,在对页面执行速度测试时使用到IE下的HTTPWatch插件及FireFox下的firebug插件;在数据库方面,对数据库进行优化也是相当重要的,对于一个数据库访问频繁的系统,很大一部分时间将会用在了对数据库的操作当中,对数据库的优化将可以从几个方面进行分析:首先,硬件架设方面,用一台或几台专门服务器来做数据库服务器,可以有效提高数据访问效率,同时还可建立磁盘阵列,将索引、日志文件放在不同的磁盘当中,组建数据库服务器群组来满足更高的需求。第二,SQL语句的优化,通过书写更加高效的SQL语句,来提高数据查询的效率。由于应用程序对数据库的操作最终表现为SQL语句对数据库的操作,因此如何对SQL语句进行优化,从而提高对数据库内存区的命中率、减少I/O访问、减少对网络带宽占用等有着非常重要的意义。1.3开发背景及意义“天下票务网”是一个B/S的彩票合买平台,由“电子商务网站开发站”开发,优化过程将基于此系统展开。该网站于2007年10月开始开发,于2008年4月正式上线运行。期间一直在进行修改及系统优化,开发过程用时6个月。该网站主要功能是提供在线彩票的合买服务,网站大模块可分为:合买系统、会员中心、在线支付、新闻资讯、后台管理,BBS等几大块。在开发过程中同时将性能优化考虑到开发进程中,同步开发进程。开发初期主要进行数据库方面的设计,数据库索引优化及网站框架的构建。后期对页面和程序进行进一步的优化,以达到性能提升的目的。通过使用多种优化手段对网站进行优化,提高了“天下票务网”的执行效率和负载能力,主要通过三个方面来表现:第一,通过添加相应的优化模块,使网站主程序运行更加高效了;第二,对页面的优化也使页面布局更加合理,更易于使用,提高了用户的体验;第三,在后台对数据库和程序关键模块的优化,提高了整个网站的并发能力,使网站可以响应更多的负载。3第2章 系统架构第2章系统架构2.1优化架构图系统的优化将从三个方面来进行,分别是:页面优化,程序优化,数据库优化。在进行页面的优化时,主要从页面元素的布局合理性,和HTTP请求数等几方面进行考虑;程序优化中,在原有系统中引入数据缓存技术和静态页面生成技术,并同时配合使用了AJAX技术对程序进行优化;在数据库的优化中主要是对SQL语句和表进行了优化。系统优化架构图如下所示:页面优化程序优化数据库优化系统优化压缩页面元素独立CSS和JS文件客户端缓存页面减少HTTP请求数 量AJAX技术应用静态页面生 成数据缓存机制SQL语句优化多表拆分应用图2-1系统优化架构图2.2 系统优化流程本测试系统从功能上进行模块的划分,主要模块有新闻管理,用户管理,及彩票在线购买等模块,优化过程将从首页优化开始,然后再对系统其它模块进行优化,优化过程基于系统优化架构图进行,优化流程如下所示:首页优化新闻发布模块优化开奖公告模块优化数据库优化模块测试整站测试图2-2系统优化说明图2.3运行及测试环境本系统采用B/S架构,访问流程如下图所示:客户端发送页面请求服务器返回数据图2-3架构说明图服务器硬件配置:型号:IBM X3650CPU:Xeon E5460四核处理器,核心频率3.16GHz内存:4G硬盘:80G4 组建RAID-10服务器软件环境:操作系统:FreeBSD 7.0WEB容器:Apache 2.2数据库:MYSQL 5.0PHP版本:PHP5.2.5对网站进行性能测试时,采用的是单点模拟多用户访问的形式,一台客户主机模拟多个独立IP,如下图所示:图2-4测试结构说明图用户硬件环境:型号:ASUS A6000CPU:AMD Sempron Processor 3400+内存:1G硬盘:80G用户软件环境:操作系统:Microsoft Windows XP Professional测试软件:WebLOAD Professional-8.2.1.0585第3章 系统优化的实现第3章系统优化的实现3.1网站首页的优化3.1.1 页面优化介绍系统采用的是B/S架构实现,当用户访问服务器时,将通过网页的形式将用户请求的页面返回给客户端,在这个过程中,80%的用户响应时间将花在前端程序上,也就是页面的返回过程中,对页面元素可以采取多种措施来提高页面执行和返回速度,比如将原有的表格布局改成层加CSS布局,将页面的HTTP请求数量适当降低等等,这就是页面级要做的优化。(1)减少HTTP请求次数页面包括了各种页面元素,如图像、样式表、脚本和Flash等,而客户端等待服务器页面时,大部分时间就用在了这些元素的下载上。所以减少页面元素将会减少HTTP请求次数。这是快速显示页面的关键所在。减少HTTP请求次数是性能优化的起点。这将提高首次访问的效率起到很重要的作用,40%-60%的日常访问是首次访问,因此为首次访问者加快页面访问速度是用户体验的关键。(2)给页面增加Expires Header为了给用户更好的视觉感受,网页内容变得越来越丰富多彩,而页面由各种元素组成,包括大量的脚本文件,样式表,FLASH,还有图片文件。当客户端第一次进行访问的时候,不得不面临大量的HTTP请求,可是当用户下次进行访问的时间,又得再次进行重复的HTTP请求,通过正确设置Expires Header的值可以有效的将页面中的这些元素缓存在客户端中,客户端就可以利用缓存来减少HTTP请求的次数和大小,使得网页加载速度变快。(3)压缩页面元素从HTTP/1.1开始,web客户端在HTTP请求中通过Accept-Encoding头来表明支持的压缩类型,如:Accept-Encoding: gzip, deflate.如果客户端浏览器检查到Accept-Encoding头,它会使用客户端支持的方法来压缩HTTP响应,会设置Content-Encoding头,如:Content-Encoding: gzip。客户端浏览器根据文件类型来决定是否压缩。然后对HTML文件,脚本文件和样式表等进行压缩,通过压缩HTTP响应内容可减少页面响应时间。因此,对尽量多的文件类型进行压缩是一种减少页面大小和提高用户体验的简便方法。(4)合理放置样式表和脚本文件客户端浏览器在对服务器返回页面进行解释执行时是采用“自顶向下”顺序执行的,将样式表放在页面的头上,可以使得页面元素顺序显示。与样式文件一样,要注意脚本文件的位置,尽量把它们放在页面的底部,这样一方面能顺序显示,另方面可达到最大的并行下载。浏览器会阻塞显示直到样式表下载完毕,因此需要把样式表放在HEAD部分。而对于脚本来说,脚本后面内容的顺序显示将被阻塞,因此把脚本尽量放在底部意味着更多内容能被快速显示。在很多浏览器下,如IE,把样式表放在document的底部的问题在于它禁止了网页内容的顺序显示。浏览器阻止显示以免重画页面元素,那用户只能看到空白页了。Firefox不会阻止显示,但这意味着当样式表下载后,有些页面元素可能需要重画,这导致闪烁问题。HTML规范明确要求样式表被定义在HEAD中,因此,为避免空白屏幕或闪烁问题,最好的办法是遵循HTML规范,把样式表放在HEAD中。(5)把JavaScript和CSS放到外部文件中在整个系统中,有大量的页面,而每个页面又使用到各自的JavaScript脚本和CSS样式表,将这些JavaScript和CSS放入几个单独的外部文件,进行封装起来,然后在页面中进行导入,这样做的明显好处有两个,第一:可以方便代码的管理、维护,如果将JavaScript 和CSS和页面代码一起写入在页面中去,那页面代码将会是相当宏大并且杂乱,维护起来将是很繁琐并且艰难。第二:使用外部文件会加快页面显示速度,因为外部文件会被浏览器缓存。这在多次进访问时大大加快访问速度。3.1.2 网站首页优化的实现下面将对结合以上讲述技术,对网站首页进行页面的优化。首先是减少页面的HTTP请求数,将主页上的多张就近图片组合成一张图片中,然后组合页面中的图片到单个文件中,并使用CSS的background-image和background-position属性来实现所需的部分图片。在Firefox下通过Firebug插件对系统主页进行分析,HTTP请求总数为:134个requests,页面540KB,用时20S全部下载完成;由于系统是使用Apache发布的,可以用Expires Default基于当前日期设置过期日期。示例代码如下:Expires Default “access plus 1 years” 则表示设置过期时间为从请求时间开始计算的1年;还可以设置页面为可进行压缩的,给页面添加代码:Accept-Encoding: gzip, deflate. 通过Gzip,内容一般可减少70%;接下来要做的是将页面中原本杂乱的Javascript和CSS文件进行整理和合理布置,将Javascript全部抽取出来,按功能分别放入单独的JS文件中去,CSS样式单独抽取到index.css文件当中。通过修改后,利用Firebug进行测试,访问速度有所加快。性能对比表格如下:表3-1页面性能对比表对比参数修改前修改后请求数量(个)134106页面大小(Kbytes)540534用时(s)7.56593注:以上测试基于同一网络速率下进行多次测试的平均值,浏览器:Fire fox 2.0.0.14由表可知,在同等网络带宽下,对页面进行优化后,HTTP请求数量少了28个,页面大小少了6K,访问用时少了1.63秒,性能有所提升。3.2新闻发布模块优化3.2.1 模块功能介绍新闻发布模块主要是负责网站内所有的新闻类内容的查看及管理,在本系统中,新闻将分成几大类,包括彩票的资讯、名家点评、资深彩民点评、分析师点评和首页彩票新闻、图片新闻的查看及管理工作。其实现功能主要有:用户查看新闻、管理员添加、修改、删除新闻,对新闻类别的添加、修改、删除等操作。3.2.2 优化使用技术用户在网站上阅读新闻是一个相当频繁的操作,对于一些新闻类的内容,是相对不变的信息,发布之后很少更新,如果每次用户查看新闻都要从数据库中取得新闻,这样就造成了资源的浪费,同时也增大服务器的负担。经过对系统的需求进行分析,发现可以对此模块采用静态页面生成技术进行优化。静态页面是指在服务器端真实存在的仅含HTML以及JS,CSS等客户端运行脚本的页面。它的执行过程如下:客户端发出对某一页面请求-服务器确认并载入某一页面-服务器将该页面传递回客户端浏览器。如下图所示:客户端发送页面请求服务器返回页面图3-1B/S请求示意图对比一下动态页面的生成过程,可以发现二者之间的差别。在系统中动态脚本使用的是PHP,它的基本执行过程是这样的:客户端发出对某一页面请求-服务器引入指定相应脚本进行处理-脚本被载入服务器-由服务器指定的PHP解析器对脚本进行解析形成HTML语言形式-将解析后的HTML语句传回给客户端浏览器。如下图所示:图3-2B/S请求(加数据库)示意图从动态页面与静态页面的执行过程我看可以看出,动态页面需由WEB服务器的PHP解析器进行解析,而且通常还需连接数据库,进行数据库存取操作,然后才能形成HTML语言信息包;而静态页面,无须解析,无须连接数据库,直接发送,可大大减轻服务器压力,提高服务器负载能力,大幅提高页面打开速度和网站整体访问速度。3.2.3优化实现过程具体实现上有两种方法方法一:在对后台记录进行添加、修改时,直接生成目标html页面,并且前台调用连接直接指向生成的html页面。这种方法优点是程序效率最高,服务器负荷轻。方法二:客户端访问链接指向服务器端php程序,php程序首先检查是否存在相应的静态文件,如果静态文件不存在,则生成并重定向至此文件,否则直接重定向。这种方法实际使用中一般和apache的url_rewrite功能一起使用,将php的文件地址重定向为html的形式,这样有利于搜索引擎的检索。这种方法在效率上略有损失,不过程序结构简单,便于调整,不过在访问量大时使用不太合适。对比以上两种方法,由于系统对资讯管理模块采用静态页面生成技术来达到优化的目的。对于新闻资讯管理,采用方法一将会达到更好的效果。故采用方法一来实现。利用方法一进行分析,其基本实现过程如下图所示:添加操作更新操作删除操作静态页面生成模块更新前台页面链接删除静态文件后台操作 图3-3静态页面生成示意图3.3开奖公告模块优化3.3.1 模块功能介绍为了方便用户可以在网上直接查询每期的开奖结果,系统提供开奖查询功能。用户可以查看每一期的多个彩种的开奖号码,还可以查看本期的中奖情况。首先用户选择一个彩种进入开奖查询页面,然后用户可以自己选择要查询的彩种的期数,系统将显示查询结果给用户。3.3.2 数据缓存机制数据缓存机制是指将一些数据在服务器端进行缓存,比如可以将一些经常访问的页面缓存在服务器内存当中,还有一些固定而又频繁的,同时还要进行数据库操作的动态页面,将数据读取出来,放入一个静态文件当中,设定一个过期机制,在数据库中数据没有更新的时候就可以一直读取静态文件中的数据,而不用每次都进行数据库查询,从而减轻数据库的负担,提高访问的有效性。数据缓存可以有多种方式,本系统中主要对部分分类信息进行缓存,将分类信息读出到静态文件中,在需要用到分类信息的时候直接从静态文件中进行读取,不用进行数据库查询。另一方面还进行了页面级的数据缓存,将部分访问频繁重复的页面直接写入服务器内存,在内存中组建一个容器,在访问时直接从容器中读取,从而加快访问速度。3.3.3 AJAX技术Ajax(Asynchronous JavaScript and XML),即异步JavaScript和XML ,是一种创建交互式网页应用的网页开发技术,由HTML、JavaScript、DHTML和DOM组成。它是使用客户端脚本与Web服务器交换数据的Web应用开发方法,它使浏览器可以为用户提供更为自然的浏览体验。在传统的WEB应用当中,Web站点强制用户经历这样一个过程:进入,提交,等待,重新显示,在这样一个过程中,用户的动作总是与服务器的“思考时间”同步。Ajax提供与服务器异步通信的能力,从而使用户从 请求响应 的循环中解脱出来。借助于Ajax,可以在用户单击按钮时,使用JavaScript和DHTML立即更新UI,并向服务器发出异步请求,以执行更新或查询数据库。当请求返回时,就可以使用JavaScript和CSS来相应地更新UI,而不是刷新整个页面。这样,Web页面不用打断交互流程进行重新加载,就可以动态地更新。使用Ajax,可以创建接近本地桌面应用的,直接的、高可用的、更丰富的、更动态的Web用户接口界面,提高用户体验,同时,借助AJAX,服务器有时只需要返回需要更新的内容给客户端浏览器,并不需要把整个页面返回给客户端浏览器,这将节省有限的带宽资源,在并发数量比较大的情况下,这将会是一笔相当可观的资源。AJAX的核心是XMLHttpRequest,它提供了与服务器异步通信的能力,从而让用户在请求的时候不受到阻塞。AJAX工作的大致流程是这样的:首先由用户在客户端浏览器页面端触发一个事件,比如说onClick事件,这个事件是能被Javascript捕获到。然后Javascript相应的创建一个XMLHttpRequest请求,并通过XMLHttpRequest异步的把请求发送到服务器端,同时等待服务器端的响应。服务器端程序在接受请求后,着手处理并把结果返回,返回的结果被XMLHttpRequest捕获到并返回给Javascript,再由Javascript调用相应的DOM进行显示层的控制。3.3.4 优化实现过程开奖公告是一个查询频率很高的操作,并且每个用户对同一期的查询返回结果都是一样的,通过观察对此操作的数据库执行语句发现,每查询一次开奖公告将要进行一次的多表连接查询,对数据库性能消耗比较高,在多并发的情况下,性能瓶颈将会出现。针对以上分析,将结合AJAX技术并建立数据缓存机制来实现此模块的性能优化。建立一种数据缓存机制,在数据库更新时将缓存信息设为过时,更新数据库资料时同时生成新的缓存文件。缓存过程如下:生成缓存页面更新数据库资料过期旧缓存页面程序访问缓存页面图3-4 缓存更新示意图数据缓存功能在系统中将通过一个独立类来实现,类名为:cache ,在此类中将封装实现缓存数据的一系列操作,同时还会涉及到一个数据库操作类:dbmanager , 及一个文件读写操作类 file。关键实现代码如下:在开奖公告模块中,当用户选择一个彩种后,将可以通过右边的下拉按钮来选择所要查找的开奖期数,在此操作过程中,页面需要改变的仅仅是显示查询结果部分,并不需要整页刷新,在这里使用AJAX可以让用户感觉在没有全屏刷新的情况下显示查询信息,用户体验更加快捷,直观。AJAX功能的实现将使用JQuery这个JS框架来完成,其AJAX提交代码示例如下:$.ajax( type: POST, url: prize.php, data: qihao=1101, success: function(msg) alert( Upate data: + msg ); );在success节中,可以将返回数据绑定到一个事先写好的JS方法当中,对开奖信息进行动态替换然后显示。在这个过程中,用户将不会感觉到页面的刷新,同时返回的数据只是一个XML文件,文件里面仅仅放了开奖的信息,一方面还可以减少页面要传输量。153.4数据库优化3.4.1 数据库优化的原因数据库优化是指进行有目的地调整组件及改善性能,使得数据库的吞吐量增加,减少相应处理时间。现在的电子商务、门户、社区、论坛等网站都使用了数据库。数据库的应用相当重要,对于电子商务网站,会员信息,产品信息,订单信息等都是通过数据库来进行管理的;门户网站上数据量相当大,众多的新闻资讯也要存在数据库里;社区类网站就更加不用说了,其庞大的会员信息还有与会员相关的文章、相册等信息都得存放在数据库里进行管理,用户要取得这些信息,只能通过WEB服务器间接访问数据库。由此可以看出,数据库运行是否高效直接关系着整个应用系统的执行效率,对数据库进行优化对整个系统是很有意义的。3.4.2 SQL语句的优化据统计,对网络、硬件、操作系统、数据库参数进行优化所获得的性能提升只占数据库应用系统性能提升的40%左右。其余60%的系统性能提升来自对应用程序的优化。对应用程序的优化通常可分为两个方面:源代码的优化和SQL语句的优化。一方面,涉及到对程序逻辑的改变,源代码的优化在时间成本和风险上代价很高(尤其是对正在使用中的系统);另一方面,源代码的优化对数据库系统性能的提升收效有限,由于应用程序对数据库的操作最终表现为SQL语句对数据库的操作,因此如何对SQL语句进行优化,从而提高对数据库内存区的命中率、减少I/O访问、减少对网络带宽占用等有着非常重要的意义。本彩票系统数据库使用MYSQL5.0,对SQL语句进行的优化将基于此数据库来展开。在本系统中优化SQL语句的分析步骤是:首先运用show status 命令了解各种SQL的执行频率,然后定位到执行效率较低的SQL语句,通过EXPLAIN命令来分析低效的SQL的执行计划,然后根据出现的问题采取相应的优化措施。在采取优化措施时,可以采用以下几个方法对待分析,从而取得较好的优化效果。第一:使用索引。索引是数据库优化过程中最重要的手段之一;第二:使用ANALYZE和CHECK TABLE命令定期分析和检查表;第三:定期优化表,在MYSQL中如果对一个表进行了很多更改可以使用OPTIMIZE TABLE命令来半角表中的空间碎片进行合并,消除空间浪费;第四:对SQL部分语句的优化,对大批量数据的导入时,使用load data infile命令可有效提高导入效率,使用索引来满足order by子句将不需要额外的排序,对于嵌套查询,有些情况下用JOIN来代替子查询将会得到更高的效率。在数据库中,表user用来存入用户信息,结构如下:表 3-1 user 用户表字段格式描述user_idvarchar(50)用户id,系统自动生成user_namevarchar(25)用户名pass_wordvarchar(32)用户密码pass_word_payvarchar(32)用户支付密码user_emailvarchar(50)用户邮件地址user_truenamevarchar(20)用户真名user_bankvarchar(250)开户银行user_bank_numvarchar(250)银行卡账户这个表关系到用户登陆、资料更改等重要并频繁的操作,首先对表进行分析,执行SQL语句:EXPLIAN SELECT * FROM user,结果如下:图3-5 表user分析结果由图可知,在对表进行查询时没有用到索引。然后执行语句:SHOW INDEX FROOM user ,查看表索引情况。结果如下图:图3-6 表user索引分析结果由上表可知,对于user表,没有建立合适的索引,仅主键上有索引,下面用php书写测试代码对这个表进行查询50000次操作,进行时间测试:图3-7 查询时间测试代码对测试代码运行10次,得平均时间为:2.879S。然后在表user上建立两个索引,执行SQL语句:CREATE INDEX user_name ON user(user_name),CREATE INDEX user_nick ON user(user_nick),再次分析表查询情况,执行SQL语句:EXPLIAN SELECT * FROM user WHERE user_name=zhubian1959,结果如下:图3-8 表user建立索引后分析图分析可知,在建立索引后,在where字句中使用到了索引,同样的,在相当条件下,应用图4-3测试代码,执行50000次查询,对测试代码运行10次,得平均时间为:2.670S。与使用索引之前执行时间进行对比,2.879S-2.670S = 0.209S,性能有所提升,因为当前数据表中只有1744条记录,如果记录更多的时候,性能提升将会更加明显。3.4.3 拆分表提高访问效率在本销售系统中,有一模块叫“店面出票模块”,本模块主要和来在店面销售彩票,当用户购买彩票时,系统随机生成一个用户名和密码给用户,然后用户可以用彩票上的用户名和密码登陆网站,进行相应操作。用户表名字为:sale_user,结构如下:图3-9 数据表sale_user结构图由于店面每出售一张彩票就将生成一个用户,如果10个店,每天售出500张彩票,那么一个月表里将会有15万条记录,如果每个用户进行登陆时都在这个表里进行查询验证的话,那将会出现速度相当缓慢的情况。这里将采用分表的方法来提高查询效率,将一个月按时间分成三部分,记录分别存放在三个表里,如:08_1_1表示08年1月第一部分的记录,由于用户激活自己的号码多为10天以内的用户,大部分用户都会在最近表里命中,故这样可以有效的提高记录的命中率,提高数据查询的性能。23第4章 系统性能测试第4章系统性能测试4.1性能测试分析性能测试将通过几个性能指标来考查,比如每秒可响应请求数量,并发数,平均页面执行时间等,测试过程将会使用到两个性能测试软件,一个是Apache自带的“ab.exe”;另一个是WebLoad。ab的全称是ApacheBench,是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可以同时模拟多个并发请求;WebLoad是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;WebLoad通过模拟真实用户的操作,生成压力负载来测试web的性能。4.2用ab进行性能测试首先,利用ab对优化后的网站进行性能考察,运行命令:ab -c 50 -n 1000 http:/localhost/ (虚拟50个用户并发执行1000次访问)结果如下图所示:图4-1 优化后性能指标图与优化前性能对比结果如下表: 表4-1 ab测试性能对比表性能指标优化前优化后差值测试用时(s)18.21245213.296857-4.915595完成请求数(个)100010000失败请求数(个)000总传输量(bytes)532000577000+45000HTML传输(bytes)360000390000+30000请求数量/秒62.1175.21+13.10每个请求用时(ms)15.21113.297-1.914从上表的测试结果可以看出,服务器的负载能力有所提升,由原来每秒只能响应62.11个用户请求提高到了75.21。并且50%的用户请求在656ms内得到了响应。4.3用WebLoad进行性能测试用WebLoad对整个网站进行测试,首先启录制操作脚本,本测试中,录制了首页访问、用户登陆、查看文章、彩票购卖等操作。然后建立压力模板,运行压力测试,本测试中,模拟现实用户终端对网站进行一系列的操作,测试运行时间为6分钟。以下为优化前测试状态图:图4-2 优化前测试状态图图4-3 优化前测试结果图对整个网站进行优化后,再次运行WebLoad进行测试,得到性能测试图表如下:图4-4 优化后测试状态图图4-5 优化后测试结果图通过以上比较,将关键参数取出来对比,建立下表:表4-2 优化前后性能对比表性能指标优化前优化后差值测试用时(s)3803800压力大小1042410430+0.006页面返回时间(s)0.6210.300-0.321总访问页面数18772208+331每秒访问页数49395811+0.872每次点击用时(ms)0.0540.026-0.028总点击数量1099612899+1903每秒点击数量2893733945+5.008每秒返回数据量(Byte)132212.592155166.474+22953.882由上表对比可以看出,在相同时间,运行相当压力大小的情况下,优化后平均每个页面返回时间少了0.321秒,在360秒内优化后可以多返回331个页面,平均每秒多返回0.872个页面,点击数量也每秒增多了5.008次。结 论结论在整个系统的开发过程中,我主要负责了整个系统的优化工作。参考了大量的网上资料,阅读了很多有关网站性能优化方面的资源。整个系统采用的是PHP语言,后台采用的数据库用到了MYSQL,在对系统进行优化的时候,重点放在了对PHP和MYSQL的优化上,同时页面级的优化应用也是很重要的,在程序的实现中,应用数据缓存和将页面静态化等技术来实现,都是从网站的负载方面来考虑的,在程序的组织上,也应用到了一些常用的设计模式的知识,如MVC的应用,简单工厂模式等的应用。在数据库方面,将主要对现有的操作进行改进工作,主要对SQL语句进行了优化,还优化表的结构,将部分表进行拆分操作。对系统的测试则主要针对系统的性能进行测试,采用了ab和WebLoad来进行测试,在测试过程中可以看到性能在多方面的提升。总之,通过这次的优化过程,使我对网站优化方面有了更进一步的了解,同时对程序的设计和数据库的知识也得到了加深,让我在一个实际的项目中得到锻炼,使自身的能力得到一个提升。对系统的优化是一个无止境的工作,对于本系统的优化还可以有很多方法,如建立多服务器群组进行负载均衡,CDN(Content Delivery Network, 内容分发网络)的应用等,将会在更进一步的优化工作中得到应用。29参考文献参考文献1唐汉明,关宝军等.深入浅出MySQL.北京:人民邮电出版社, 2008:223-2302(美)施奈德.电子商务.北京:机械工业出版社, 2002:160-1753萨师煊,王珊.数据库系统概论.北京:高等教育出版社,2001,154-1604Luke Weling,Laura Thomson.PHP and MySQL Web 开发.北京:机械工业出版社,2002,128-1355Tim Parker.TCP/IP 协议及网络编程技术.北京:机械工业出版社,2000:124-1306(澳)威廉斯,(澳)莱恩.PHP & MySQL Web数据库应用开发指南(第2版).南京: 东南大学出版社,2006:55-597(美)W.Richard Stevens.TCP/IP详解.北京:机械工业出版社,2000:75-848Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns:Elements of Reusable Object-Oriented software:Addison Wesley/Pearson Press,2004,57-699Robert M. Elliott,Emilie Herman,John Atkins. High-Performance Oracle. U.S.A:Wiley Publishing,2002,601-61010(英)克拉恩, 帕斯卡雷洛,杰姆斯. Ajax实战.北京:人民邮电出版社, 2006:156-16011程杰. 大话设计模式.北京:人民邮电出版社:2007,36-4012 宋海平. 大型应用系统中数据库性能优化的研究:武汉理工大学硕士学位论文. 武汉:计算机科学与技术学院,2007,16-18致 谢在整个论文研究的过程中,我得到了很多人的帮助与支持。首先要感谢我的指导老师骆晓艳,是您不断的指导,给予我巨大的支持和帮助,使我在很多问题上遇到的困扰得到解决,让我能够顺利完成我的毕业论文和设计。接着要感谢大学四年来,教育我培养我的广州中医药大学信息技术学院的领导及各位老师们,你们教会了我怎样去学习,让我能顺利完成大学这四年的学习生涯,同时也为我在将来人生事业上的发展打下坚实的知识基础。最后要感谢我的同学、我的同事,你们和我共同维系着彼此之间兄弟般的感情,正是由于你们的帮助和支持,我才能克服一个又一个的困难,一直到我论文的顺利完成。25
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 任务书类


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!