我们有一个包含大量表的MySQL数据库。不幸的是,2018年我们仍然使用Perl CGI。因此,加载脚本的时间是必不可少的。
DBIx::Class被我排除在外,因为它加载了大约1.6秒(很长时间因为它加载了DB的所有表的Perl定义),这显然太多了。
Class::DBI加载的速度有多快?我的主要问题是: Perl是在使用DBIx::Class时加载所有可用表的信息(就像Class::DBI那样),还是只为实际使用的这些表加载Perl定义?
以下是加载1.6秒的DBIx::Class代码:
#!/usr/bin/perl
package MyApp::Schema;
use lib '.../ORMs/dbix-class';
use base qw/DBIx::Class::Schema/;
__PACKAGE__->load_namespaces();
1;(模式是自动生成的。)
有什么办法让它更快吗?如何在不加载所有表的情况下使用它?
发布于 2018-06-28 10:42:36
我真的不推荐类::DBI。已经有12年没有维护了--每个人都有很好的理由改用DBIx::Class。
我强烈建议您解决导致您仍然使用CGI的问题。例如,是什么阻止您使用CGI::模拟::PSGI将CGI代码转换为PSGI应用程序,然后您可以将这些应用程序部署在像FastCGI这样的持久环境中,或者更好地说,它是一个独立的服务,然后可以使用nginx访问?任何这些解决方案都意味着DBIx::类加载时间不再是问题。
显然,我不知道是什么让你和CGI联系在一起的。但是,在我的经验中,搬到PSGI解决方案往往比人们预期的要容易,这无疑会让你处于一个更好的位置。
https://stackoverflow.com/questions/51070019
复制相似问题