Class :: DBI-是否加载所有表?

时间:2018-06-27 19:21:13

标签: perl profiling perl5 class-dbi

我们有一个包含大量表的MySQL数据库。不幸的是,在2018年,我们仍然使用Perl CGI。因此,脚本的加载时间至关重要。

CustomLoader#getTranslation被我排除了,因为它加载了大约1.6秒(之所以如此,是因为它加载了数据库 all 表的Perl定义),显然太过分了。

DBIx::Class加载的速度有多快?我的主要问题:当使用Class::DBI时,Perl是否加载有关所有可用表的信息(像DBIx::Class一样),还是仅为我们实际使用的这些表加载Perl定义?


以下是Class::DBI代码,加载时间为1.6秒:

DBIx::Class

(该架构是自动生成的。)

有什么方法可以使其更快?如何在不加载所有表的情况下使用它?

1 个答案:

答案 0 :(得分:2)

我真的不推荐Class::DBI。它已经维持了十二年,并且没有理由每个人都切换到DBIx::Class

我强烈建议您解决导致您仍在使用CGI的问题。例如,导致您无法使用CGI::Emulate::PSGI将CGI代码简单地转换为PSGI应用程序的原因,然后可以将它们部署在FastCGI等持久性环境中,或者更好地作为独立服务进行部署,然后可以使用nginx访问?这些解决方案中的任何一个都意味着DBIx :: Class加载时间不再是问题。

很明显,我不知道是什么使您与CGI保持联系。但是,以我的经验,转向PSGI解决方案通常比人们期望的要容易,并且无疑会让您处于更好的位置。