免费注册 查看新帖 |

Chinaunix

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

请教Perl程序连接数据库速度(mod_perl) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-26 15:49 |只看该作者 |倒序浏览
各位好,请教一个perl应用程序(非web程序),连接数据库很慢的问题。
我通过Perl DBI 连接Oracle9i数据,要3分钟左右才能连接成功,非数据库问题,用java连接就很快;
在网上看到可以通过mod_perl可以加快程序的运行(也包括连接数据库),但我查到都是需要和apache web一起使用,但我写的应用只是一个应用程序,不在web下运行,请问应该怎么办呀,谢谢!
我是通过perl 应用程序名.pl的方式运行的。

论坛徽章:
0
2 [报告]
发表于 2007-09-26 17:07 |只看该作者
贴链接数据库的代码

招聘 : Java研发
论坛徽章:
0
3 [报告]
发表于 2007-09-26 19:06 |只看该作者
我通过Perl DBI 连接Oracle9i数据,要3分钟左右才能连接成功,非数据库问题,用java连接就很快;


这要视具体情况,Perl DBI速度不会差于JDBC。


在网上看到可以通过mod_perl可以加快程序的运行(也包括连接数据库),但我查到都是需要和apache web一起使用,但我写的应用只是一个应用程序,不在web下运行


Apache::DBI在mod_perl环境下才有意义。在Apache启动时,会初始化数据库连接池,该连接池会被所有Apache子进程共享,这样避免了建立socket的开销,所以会快一些。单独的应用程序,除非做成多进程的daemon,否则Apache::DBI完全用不上。
你在同一台机上用DBI比Java慢吗?DBI有debug模式,你trace一下慢在哪里。see:
http://search.cpan.org/~timb/DBI-1.59/DBI.pm

论坛徽章:
0
4 [报告]
发表于 2007-09-28 11:51 |只看该作者
这个连接数据库的代码
sub conndb
{
        #连接数据库
        print &getcudate()."DEBUG:conn DB Start ...\n";
        my $dbconnz = DBI->connect("dbi:Oracle:host=$DBhost;sid=$DBsid",$DBuser,$DBpasswd) or die "can't connect to database ". DBI-errstr;#连接数据库
        print &getcudate()."DEBUG:conn DB OK!!!!\n";
        return $dbconnz;
}

数据库是oracle9i,perl和数据库都跑在Red hat Linux 8上
我现在做的就只能一直让其连接,等处理完后再断开。但处理过程可能要需要8个多小时,并且程序是一直运行着。能否让其用的时候再连,主要解决连接的花费时间。
我初学Perl,请问是否还有其他比较快的连接数据库方式,数据库不在本机,是在另一台服务器上。

论坛徽章:
0
5 [报告]
发表于 2007-09-28 13:42 |只看该作者
看代码没有问题

论坛徽章:
0
6 [报告]
发表于 2007-10-19 11:20 |只看该作者
谢谢!我来结。我现在使用是是连接数据库后,将获取到的数据放在一个地方,并断掉数据库,要用时再连接。
代码如下:my $sth=$dbconn->prepare($lbsql);
        $sth->execute();#执行SQL
        my $table = $sth->fetchall_arrayref
                or die "$sth->errstr\n";

非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP