【阿里云产品公测】利用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 ...
随机推荐
- linux极点五笔无法输入词组_ibus设置
菜鸟学linux——用的是ubuntu 不知道是不是按个哪些快捷键,极点五笔突然无法输入词组.那个抓狂啊 没关系,设置一下就ok 第一步:右上角输入法,右键——>首选项——>常规——> ...
- [iOS微博项目 - 3.0] - 手动刷新微博
github: https://github.com/hellovoidworld/HVWWeibo A.下拉刷新微博 1.需求 在“首页”界面,下拉到一定距离的时候刷新微博数据 刷新数据的时候使 ...
- printf输出字符串的一些格式
1. 原样输出字符串: printf("%s", str); 2. 输出指定长度的字符串, 超长时不截断, 不足时右对齐: printf("%Ns" ...
- oracle学习 十一 包+复合类型+自定义异常(持续更新)
在这里讲一下包的概念, 二话不说上个例子 包头: create or replace package pck_test is procedure proc_report_salary(name nva ...
- AcceptEx编辑
Windows套接字AcceptEx函数接受一个新的连接,返回本地和远程地址,并接收由客户端应用程序发送的第一块数据.Windows 95/98不支持AcceptEx函数. 平台SDK:Windows ...
- 微信内置浏览器图片查看方式的原生实现(非jssdk)
对于非公众平台网页,想调起图片预览组件,就跟公众号文章一样的图片阅读方式,实现起来是比较简单的,官方也提供了jssdk来做这个.详见 http://mp.weixin.qq.com/wiki/7/aa ...
- 圣杯VS双飞翼
双飞翼: <!DOCTYPE html> <html> <head> <title>推荐封面</title> <meta name=& ...
- js 如何验证字符串里是否包含汉字?
1.用正则表达式判断<input type="text" id="name" placeholder="请输入用户名" value= ...
- Background Worker Component
http://www.delphiarea.com/products/delphi-components/backgroundworker/ Background Worker Component ( ...
- Windows Server 2003下ASP.NET无法识别IE11的解决方法
由于IE11对User-Agent字符串进行了比较大的改动,所以导致很多通过User-Agent来识别浏览器的程序,都相应的出现了无法识别IE11的情况.(普通用户端则可以通过这个方法来进行设置.) ...