Codeigniter数据库访问 - ORM性能

时间:2014-11-07 09:05:00

标签: php mysql codeigniter orm

我正在重新考虑一个广泛使用数据库的codeigniter项目(现在该层使用PDO并生成了查询,但它变得不可读,因此需要重新分解),并试图弄清楚什么是最好的方法走。我对开发的简易性感兴趣,但更重要的是 - 性能,但我无法找到有用的性能比较: CI的活动记录,NotORM和ORM(目前我正在研究GAS和Datamapper,但对其他建议持开放态度)可以与CI集成。

我开始查看DataMapper,但随后发现一篇帖子声称它的速度是CI Active Record的两倍,而且在我看来这似乎是一个交易破坏者 - 我可以通过一些额外的灵活性来增加灵活性,代码重用和可读性,但宁愿使用非常快速的错误代码而不是发现我显着减慢了我的页面加载时间。

我正在寻找像http://www.techempower.com/benchmarks/这样的东西,但是对于ORM和其他数据库访问层而不是PHP框架。

1 个答案:

答案 0 :(得分:1)

实际上这里没有好的答案。

如果您需要非常好的性能,请使用PDO。您编写纯SQL查询,因此您可以100%控制。

如果你想介绍一些工具来简化你编写SQL的方式,也许你可以查看任何一个SQL-fluent-api库,它可以抽象你“一点点”:

select('X')->from('Y')->where('Z')->limit(10);

有点清楚,也许:)。它可能还会与许多RDBMS(MySQL,Oracle,PostgreSQL ......)生成兼容查询。

上述替代品均不是ORM。如果你需要它,当然会对性能造成惩罚(我们可以说它总是“很大”)。优秀和现代的ORM通常允许您缓存结果,甚至生成的SQL以避免部分开销。

无论如何,性能当然会降低。对于每个查询,ORM必须将结果集转换为您的对象(以及所有关系),这(另一方面)非常酷:D。而且你无法控制ORM在内部做什么(有时,如果你不知道ORM)。

这里没有好的答案,这取决于你的用例。

如果您决定使用ORM,请查看Doctrine2。您可以在此处查看如何将其与CodeIgniter集成:http://doctrine-orm.readthedocs.org/en/latest/cookbook/integrating-with-codeigniter.html