【阿里云产品公测】利用PTS服务优化网站数据库读写性能
【阿里云产品公测】利用PTS服务优化网站数据库读写性能
作者:阿里云用户千鸟
写这个帖子主要也是因为在用PTS测试网站的时候,手动访问网站进入报错页面,主要原因是数据库连接对象存在问题,导致并发多的时候产生故障,于是简单分析了一下数据库读写的性能优化以及利用PTS的测试结果,整理出来和大家分享一下,顺便参加一下这个活动。
几乎所有的网站都需要数据库来存储网站中的相关信息,因此在网站应用与数据库的交互过程中,数据库数据读取的性能对网站整体的性能是至关重要的。
通常我们在网站编写之初不会考虑数据库的读写效率,主要是因为这时候网站建设的重点并不在数据库读写性能上,而是在数据库读写处理得正确性上,因此很多网站的开发人员一开始并没有重视这个问题,包括我也一样,在之前网站开发中,每次需要读写的操作,利用定义好的数据库连接类new一个对象,然后执行操作即可,至于连接对象的连接池,交给系统自己去维护,并没有过多的干预。
比如常见的的一种方式如下:

稍微好一点的开发者估计会将数据库与网站分离,然后在数据库上建立一些存储过程来调整开发代码以及数据读写性能,上述代码估计会变成如下形式:

从个人的开发经验来说,如果网站访问量不大的话,可以不用先进行数据库分离,但事存储过程强烈推荐,不然以后代码维护会很麻烦,至于后期用户增多,数据库分离也就是修改一下配置文件,复制一下数据库中数据而已,操作相对简单。
继续讨论数据库读写对程序的影响。
比如说两个记录非常大的表User_Table, User_Log(包含用户id字段),比如下列测试代码,均可以根据日志表的用户id读取用户姓名,但在网站编写的时候,如果是你,你会选择哪种方式编码呢?

对于数据记录比较大的表,应尽量避免带有笛卡尔操作的数据库查询,不然性能绝对大打折扣;对于嵌套的查询,需要多个数据库连接对象,进行多次查询,对于操作次数频繁的操作,这样无疑又多了很多开销。因此选择哪种方式还应根据实际情况进行具体分析,这也就是为什么网站从初期开始,性能维护都是一个老生常谈的问题,对于不同的用户量,对于不同数据级别的性能优化,方法都不一样,不可能用一种方式适用所有场景。
对于大型的网站,估计网站都会有自己的数据库连接池,而且其中的架构也是整个网站的核心之一。为了对比数据库连接池对性能的提升,我自定义了一个最简单的数据库连接池,其中主要的属性为:

其中的原理就是网站启动时初始化20个可用连接,然后利用一个轮训标记index选择下一个作为连接对象,并记录每个连接对象的使用情况,定义的这个连接池是静态类,同时定义一个静态方法获取连接,在需要数据库读写的时候调用即可,如:

其中主要就是避免了在newSQLServerCMD时不断的调用Open,Close的耗时操作。
建立了两个测试页面,均包含读取数据库内容,选择指定记录进行更新,具体内容如下:


对于单个包含数据读取的页面,利用阿里云的PTS测试结果如下:
一、建立测试脚本,主要添加事务,设置请求链接,如:

普通测试脚本 
带连接池测试脚本
二、快速启动,测试结果

可以看到TPS的性能指数从2.95提高到了42.29,这应该算是一个很大的性能提高了。由于仅仅是测试,对于网站的性能,主要还是以TPS为主,所以并没有增加绑定ECS,RDS的性能,因此后两个指数均为0。
能力有限,以上分析可能存有不足,敬请纠正。
原文地址:http://bbs.aliyun.com/read/178903.html
微博互动:http://weibo.com/1644971875/BrEhp9OEh?ref=
参加活动:http://promotion.aliyun.com/act/aliyun/freebeta/

【阿里云产品公测】利用PTS服务优化网站数据库读写性能的更多相关文章
- 【阿里云产品公测】PTS压力测试最低配ECS性能及评测
PTS是一个性能测试工具,可以使用PTS对自身系统性能在阿里云环境里的状况进行整体评估来找出你的系统性能瓶颈从而优化系统,同时你还可以在了解自己的系统性能指标情况下便于未来新增扩容.在使用PTS前你必 ...
- 【阿里云产品公测】PTS压力测试WP站搜索
[阿里云产品公测]PTS压力测试WP站搜索 作者:阿里云用户cnsjw PTS性能测试服务是一个非常非常强大的压力测试工具.可以模拟百人同时访问网站的情况,并监测ECS和RDS的各项指标,生成非常详细 ...
- 【阿里云产品公测】PTS压力测试服务器性能
作者:阿里云用户xsnjxjj 在PTS服务之前,经常使用webbench来对服务器进行压力测试,在看到阿里云PTS服务的介绍以后,深深的被PTS强大的功能所吸引 非常感谢阿里云团队给予的测试 ...
- 【阿里云产品公测】PTS测试 SLB+ECS+RDS组合的DZ论坛负载极限压力,100并发2000页
作者:阿里云用户woaj01 环境介绍: 1.ECS:1核 1G 5M 杭州 2.RDS:240M 5G 杭州内网 3.SLB:私网实例 配置测试环境: 测试脚本: 1.生成参数文件,我的方 ...
- 【阿里云产品公测】简单粗暴30S完成PTS测试配置附tornado服务器测试结果
作者:阿里云用户morenocjm [阿里云产品公测]简单粗暴 30S完成PTS测试配置(附tornado服务器测试结果) -------------------------------------- ...
- 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』
作者:阿里云用户mr_wid ,z)NKt# @I6A9do 如果感觉该评测对您有所帮助, 欢迎投票给本文: UO<claV RsfTUb)< 投票标题: 28.[阿里云 ...
- 【阿里云产品公测】消息队列服务MQS java SDK 机器人应用初体验
[阿里云产品公测]消息队列服务MQS java SDK 机器人应用初体验 作者:阿里云用户啊里新人 初体验 之 测评环境 由于MQS支持外网访问,因此我在本地做了一些简单测试(可能有些业余),之后 ...
- 【阿里云产品公测】结构化数据服务OTS之JavaSDK初体验
[阿里云产品公测]结构化数据服务OTS之JavaSDK初体验 作者:阿里云用户蓝色之鹰 一.OTS简单介绍 OTS 是构建在阿里云飞天分布式系统之上的NoSQL数据库服务,提供海量结构化数据的存储和实 ...
- 【阿里云产品公测】简单日志服务SLS使用评测 + 教程
[阿里云产品公测]简单日志服务SLS使用评测 + 教程 评测介绍 被测产品: 简单日志服务SLS 评测环境: 阿里云基础ECS x2(1核, 512M, 1M) 操作系统: CentOS 6.5 x6 ...
随机推荐
- 用shell求两个文件的差集
假设有两个文件a.file和b.file,分别代表集合A和集合B. a.file的内容如下: abcde b.file的内容如下: cdefg 可以用grep命令 grep命令是常用来搜索文本内容的, ...
- Android SDK Manager更新不了的解决办法
android SDK Manager更新不了,出现错误提示:"Failed to fetch URL..."! 可以用以下办法解决: 使用SDK Manager更新时出现问题 F ...
- oracle出现的小问题
oracle无法解析指定的标识符:检查oracle的数据库实例名是否正确. oracle增大db_files:alter system set db_files=1000 scope=spfile;之 ...
- C++视频课程小结(3)
C++远征之封装篇(上) 章节介绍: 每章小结: 第一章:课程介绍. 按照惯例是章节的总介绍,内容明显多了很多(为了做作业我还要赶进度的说),主要说了:类和对象是本章的主角,然后还有很多配角,像数据成 ...
- IAP内购
IAPHelper.h // // IAPHelper.h // airplay // // Created by apple on 13-10-23. // Copyright (c) 2013年 ...
- 使用多个Worker的时候Odoo的系统日志配置
当我们开启Wokrer来启动Odoo的时候,用默认的日志会出现日志丢失的问题,这个是logger的问题:多个进程对单个文件写入日志.有一个简单的解决办法:配置openerp-server.conf,开 ...
- 行为类模式(一):职责链(Chain Of Responsibility)
定义 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系. 将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. UML 优点 将请求的发送者和接收者解耦 可以 ...
- 如何在协作开发安卓项目中打jar包给合作人
一般情况下,id都是安卓自动生成的.使用时只要用R.id.xx就可以了.但是,在合作开发安卓时,需要将自己开发的代码部分打成jar包,甚至做混淆. 这就需要使用java的反射机制.在取id时使用如下类 ...
- 【转】android 自定义ViewPager,修改原动画
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38026503 记 得第一次见到ViewPager这个控件,瞬间爱不释手,做东西的 ...
- C++标准库概述 [转]
C++标准库的所有头文件都没有扩展名. C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能.<cname>形式的标准头文件[<complex>例外]其内 ...