我们有一个包含大量表的MySQL数据库。不幸的是,在2018年,我们仍然使用Perl CGI。因此,脚本的加载时间至关重要。
CustomLoader#getTranslation
被我排除了,因为它加载了大约1.6秒(之所以如此,是因为它加载了数据库 all 表的Perl定义),显然太过分了。
DBIx::Class
加载的速度有多快?我的主要问题:当使用Class::DBI
时,Perl是否加载有关所有可用表的信息(像DBIx::Class
一样),还是仅为我们实际使用的这些表加载Perl定义?
以下是Class::DBI
代码,加载时间为1.6秒:
DBIx::Class
(该架构是自动生成的。)
有什么方法可以使其更快?如何在不加载所有表的情况下使用它?
答案 0 :(得分:2)
我真的不推荐Class::DBI。它已经维持了十二年,并且没有理由每个人都切换到DBIx::Class。
我强烈建议您解决导致您仍在使用CGI的问题。例如,导致您无法使用CGI::Emulate::PSGI将CGI代码简单地转换为PSGI应用程序的原因,然后可以将它们部署在FastCGI等持久性环境中,或者更好地作为独立服务进行部署,然后可以使用nginx访问?这些解决方案中的任何一个都意味着DBIx :: Class加载时间不再是问题。
很明显,我不知道是什么使您与CGI保持联系。但是,以我的经验,转向PSGI解决方案通常比人们期望的要容易,并且无疑会让您处于更好的位置。