免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4347 | 回复: 9
打印 上一主题 下一主题

求一并发执行一个SQL的压力脚本 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-02-04 23:03 |只看该作者 |倒序浏览
各位高手好

    我想进行一个简单的压力测试,就是用perl实现控制多个会话,同时连到数据库执行一个SQL的脚本


test 100  20 test.sql

其中test是perl的程序名,100是指定并发数,20是每个会话执行20次,最后是每个会话执行的sql

请问这个perl可以实现吗?

论坛徽章:
13
双鱼座
日期:2013-10-23 09:30:05数据库技术版块每日发帖之星
日期:2016-04-20 06:20:00程序设计版块每日发帖之星
日期:2016-03-09 06:20:002015亚冠之塔什干火车头
日期:2015-11-02 10:07:452015亚冠之德黑兰石油
日期:2015-08-30 10:07:07数据库技术版块每日发帖之星
日期:2015-08-28 06:20:00数据库技术版块每日发帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龙
日期:2014-12-03 14:45:52酉鸡
日期:2014-07-23 09:46:23亥猪
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
2 [报告]
发表于 2015-02-05 10:17 |只看该作者
可以啊,简单实现的话有fork就可以

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2015-02-05 12:30 |只看该作者
请问大虾们能不能提供个脚本? 不懂perl啊,非常感谢

论坛徽章:
7
巳蛇
日期:2013-11-28 09:22:59天秤座
日期:2014-10-25 15:40:452015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之德黑兰石油
日期:2015-07-15 08:46:452015亚冠之平阳省
日期:2015-11-08 16:27:53白银圣斗士
日期:2015-11-14 09:58:12
4 [报告]
发表于 2015-02-05 16:02 |只看该作者
本帖最后由 b114213903 于 2015-02-05 16:13 编辑
  1. use Parallel::ForkManager;
  2. use DBI;

  3. my $max_procs = 100;
  4. my $pm = new Parallel::ForkManager($max_procs);

  5. for(my $i=1;$i<=100;$i++){
  6.         $pm->start($i) and next;
  7.         for(1..20){
  8.                 my $dbh = DBI->connect("DBI:mysql:database=***(数据库名);host=***(数据库地址)", "***(数据库用户名)", "***(数据库密码)", {'RaiseError' => 1});
  9.                
  10.                 my $sth = $dbh->prepare( "SELECT *  FROM  `***(数据表名)`  WHERE  `***(数据表关键词)` =  '***(数据表关键词的值)'" );
  11.                 $sth->execute();
  12.                 if(my @A=$sth->fetchrow_array()){
  13.                         print "$i\t$_\t@A\n";
  14.                 }else{
  15.                         print "$i\t$_\tNo hits\n";
  16.                 }
  17.                 $sth->finish();
  18.                 $dbh->disconnect();
  19.         }
  20.         $pm->finish();
  21. }

  22. $pm->wait_all_children;

  23. print "Finished!\n"
复制代码
试试这样可行不?!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2015-02-05 20:07 |只看该作者
谢谢楼上的

我想调用的是oracle的

我已经把要执行的SQL放到一个shell里

请问如何实现

perl test.pl 100 20 test.sh?

论坛徽章:
30
水瓶座
日期:2014-08-22 21:06:3415-16赛季CBA联赛之新疆
日期:2015-12-19 19:05:48IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:3315-16赛季CBA联赛之上海
日期:2016-04-15 19:51:31程序设计版块每日发帖之星
日期:2016-04-17 06:23:29程序设计版块每日发帖之星
日期:2016-04-23 06:20:00程序设计版块每日发帖之星
日期:2016-05-26 06:20:00每日论坛发贴之星
日期:2016-05-26 06:20:0015-16赛季CBA联赛之辽宁
日期:2017-02-16 23:59:4715-16赛季CBA联赛之天津
日期:2019-01-11 01:11:44
6 [报告]
发表于 2015-02-05 20:59 |只看该作者
yuantong 发表于 2015-02-05 20:07
谢谢楼上的

我想调用的是oracle的
隔壁erlang版也有个例子

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2015-02-05 21:36 |只看该作者
请问楼上的能给个连接吗?

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
8 [报告]
发表于 2015-02-06 14:40 |只看该作者
LZ的需求根本就不用perl,一个简单sh就ok
#循环写100行
sqlplus xx/xx@xx @xx.sql  &
在sql里面重复写20次

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2015-02-12 23:10 |只看该作者
有perl的例子吗?

论坛徽章:
0
10 [报告]
发表于 2015-02-13 10:16 |只看该作者
yuantong 发表于 2015-02-12 23:10
有perl的例子吗?


真有兴趣,建议先看看per的基础文档。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP