如何测试SQL Anywhere数据库的性能

资讯 驱动中国 若水 1,566 次阅读 0 条评论
分享 Q

很多人都抱怨说不知道SQL Anywhere的性能如何。我使用了很久了,只是想告诉大家,可能大家不知道SQL Anywhere提供了几个工具,可以很方便地测试数据库的性能。本人感觉主要有以下几个目的: &o,[kN.!F  
_gasFm  
1、SQL Anywhere的支持平台非常广泛,在版本9还支持Windows 95/98和486 芯片,当然,虽然SQL Anywhere版本10已经去掉了对Windows 95/98和486的支持(他们真的太老了),但是在各种硬件条件不同的平台上,尤其是硬件条件比较差的平台上测试一下性能也是完全必要的。 D!=q3"[  
8u?}Pq5  
2、SQL Anywhere自带的测试工具包括查询、插入、并发性能测试。这样可以很好地针对POC的环境进行。因为有一些SQL Anywhere的应用是单机版的、有的是网络服务器版本的,所以各个侧重点不同。 TYo8-:d  
A )KKDC{^u  
3、在真正进行POC测试的时候,往往很难控制并发,除非使用比如loadrunner之类的工具,SQL Anywhere提供了控制并发,甚至强到控制多台计算机并发的情况。 x ; GY%J\  
2".!7BO<  
在版本10中,提供了应用分析工具。将测试工具和应用分析工具合并使用,能达到更好的效果。 ad=g=09r  
b0*aVJ vX  
还有林林总总,欢迎大家查缺补漏。 ~J!Roe k  
}, m$.w  
以下,我将使用查询性能测试工具来演示一下。 2y)>Y"z f  
}KJzT@n2  
首先,测试工具的位置。根据版本不同,测试工具的位置也不一样。在版本9(含)及之前的版本中,测试工具都在安装SQL Anywhere的目录下。 x?qT vHpT  
nF{ZJ(YfT  
如果使用版本10,测试工具则在C:\Documents and Settings\All Users\Documents\SQL Anywhere 10\Samples\SQLAnywhere\目录下(缺省情况下),分别是PerformanceFetch、PerformanceInsert、PerformanceTraceTime和PerformanceTransaction。 &sT*H %G  
J}T# HTY@  
大概用途应该通过名字能辨别了吧。 \[nz{VR  
_s? A:p,y  
然后,我用PerformanceFetch。这个比较简单,也容易上手,关键是写下来不需要太多时间,因为老板还在逼活呢! .)XXsDz{=&  
vLt"[W<9  
打开这个文件夹,有几个exe文件,都是C++写的。怎么使用呢? cln6wp$M S  
K{}EH ~  
1、FETCHTST是比较完整功能的测试工具,可以测试很多内容。 4cu:y7#|B  
2、ODBCFET是专门用作测试使用ODBC环境的,功能较少。 ^S=}j,!  
3、OLEDBFET是专门用作测试使用OLEDB环境的,功能相对RETCHTST少。 7"IWq[1Xbt  
n(Uc3st  
FETCHTST也可以使用ODBC连接的。 x\F5,&>}  
Y 9-}< \q2  
我将使用FETCHTST。FETCHTST的用法是FETCHTST [options] [<file1> [.. <fileN>]]。 F4M3&/O}  
3J%80t  
跟在这个文件名后的是一些选项,再后面就是想要执行的SQL语句或者是存储过程。如果测试多个文件或多个SQL,工具将把各个语句的结果分别呈现,或者你也可以在最后要求做一个总结。 >+0E$5?  
%-cnuc2fz  
我们先来准备SQL文件。 j]8n\pXI  
('zne3 *y  
呜,写了一个长的SQL,有很多JOIN,故意复杂一点,是针对SQL Anywhere的Demo数据库写的。将这个SQL语句保存,与工具同目录,名字为sql.txt。注意注意,一定要在后面回车加一个go。 S=dTQl  
4YR i=)GM  
所以,整个文件的内容是这样: zY=9]-0qY  
SELECT employees.surname, employees.givenname, ab{oCNm  
salesorders.orderdate, UUdTx. B  
SUM(products.unitprice * ik x5p$0  
salesorderitems.quantity) AS TotalSales, /'k;>,a;  
SUM(salesorderitems.quantity) AS NumberOfSales jL J A  
FROM (((salesorders JOIN employees ON d>a<Yr  
salesorders.salesrepresentative = nKCw@C4G  
employees.employeeid ) JOIN salesorderitems ON#p#分页标题#e# }J;'knV/Sy  
salesorders.id = salesorderitems.id) JOIN k(kNGI'  
products ON products.id = G8{L>`>s  
salesorderitems.productid) $-F+)$>Ex?  
GROUP BY employees.surname, SZ0O YAZ0  
employees.givenname,salesorders.orderdate; CPP!X/k  
go >D!m(X4~  
x ~,wTy  
然后,打开命令行工具,切换到工具所在目录,我用的版本10,就是C:\Documents and Settings\All Users\Documents\SQL Anywhere 10\Samples\SQLAnywhere\PerformanceFetch下。 DgmZ! p  
_:zjr6Q!  
执行以下命令: }4|Q7U  
FETCHTST -c "DSN=SQL Anywhere 10 Demo;UID=DBAWD=sql" -gc -g sql.txt ,P+*6l  
}k G m9  
其中,-c选项是如何连接SQL Anywhere的。我用的自带的ODBC。-gc选项是打印每个语句使用的CPU情况,-g是生成总结,最后接着我想要测试的文件。 FqFuEZ'@  
>'=%~l>H  
结果如下: `'?@]np&  
Statement 1 (line 1): SELECT employees.surname, employees.givenname... q+DcNz  
PREPARE:                0.000 seconds kqdN0nS&?5  
DESCRIBE:              0.000 seconds ?#cU8&zmL  
OPEN:                    0.008 seconds :^v-X  
FETCH first row:      0.022 seconds, 0 I/Os,  0 per second WA Wu'`0  
FETCH remaining rows: 0.024 seconds "]<Nn!%v/  
CLOSE:                  0.000 seconds Y d3w=c  
DROP:                    0.000 seconds @;~J {  
Total:                  0.056 seconds, 0 I/Os,  0 per second, SELECT employees.surname, jmn-6j>/  
Engine CPU usage:    0.040 seconds, usr: 0.040, sys: 0.000 vI PYR" /  
Fetch rate: 632 rows in 0.046 seconds,  13616.909 per second )C#2P}.  
F<~P,,xK  
哎,费了好长时间编出来的SQL,执行的非常快,我还没有反映过来就执行完了。 H2t2rG  
不过需要提醒一点的是,我的SQL Anywhere Demo 10数据库是已经打开的,如果没有打开的话,估计OPEN那一项的时间会长。如果需要正式测试,请一定要注意以下几点: 4# :/Lf  
o=9Xz`  
1、最好备一下数据库,以免麻烦 N6i(SYjR  
2、一定要重启数据库服务器,让缓存清空,这样的结果才是数据库引擎的真实情况 )*|g*opL  
3、仔细做好测试计划,把关心的内容想周全 i6~Q=4  
4、测试中间一定做好记录,好多次就是因为我记录不全,所以来回来去折腾 <.z1|d  
5、测试完一定要清理!清理!!!曾经吃过大亏 fNeve5'>  
-6NIc  
先这样吧。刚好抽空看了看,SQL Anywhere里面还有很多不错的工具,我下次争取,一定是争取(因为实在太忙了)来一篇并发测性能的帖。注册好几年了,从来都在潜水,愧对CU啊。呵呵。欢迎大家灌水,提意见!仓促之间难免有错。大家轻点拍转。 JGCr 6'  
wW gRXO]

版权声明:本文由驱动中国整理发布,转载需注明出处与原文链接。如有疑问请联系 editor@qudong.com
本文价值 成为第一个评分的人
登录后为本文打分
网友评论0 条评论
正在回复 的评论取消
评论加载中…
🔐

登录后参与互动

评论、点赞均可赚积分
连续签到、邀请好友也有奖励 🎁

电脑端: 微信扫码登录 微信内: 一键登录

微信扫一扫

打开微信「扫一扫」,分享本文到朋友圈或好友