【发布时间】:2013-12-06 18:12:32
【问题描述】:
在我的 Play 应用程序中,我尝试了 Scala ActiveRecord,这似乎是一个不错的 orm,并声称具有高性能。但是,在空数据库上运行以下命令需要 850 毫秒(每个查询约 425 毫秒):
User.findBy("email", "test")
User.findBy("email", "test")
从 mysql 控制台运行相同的程序大约需要 10 毫秒。我很想使用这个库,但我负担不起这么低的性能。 orm 使用BoneCP 进行连接管理,但我找不到任何关于如何正确配置它的建议。
您知道可能导致性能问题的原因吗?
生成的sql如下所示:
Select
users11.current_country as users11_current_country,
users11.email as users11_email,
users11.password_hash as users11_password_hash,
users11.surname as users11_surname,
users11.first_name as users11_first_name,
users11.birth_city as users11_birth_city,
users11.birth_date as users11_birth_date,
users11.id as users11_id,
users11.current_city as users11_current_city,
users11.birth_country as users11_birth_country
From
users users11
Where
(users11.email = ?)
limit 1 offset 0
编辑
经过进一步调查,我知道问题可能是由 Play 框架引起的。我在非播放环境(简单 App)中测试了调用,两个查询的响应时间分别为 117 和 5 毫秒。但是,我还对 play 的 DB.getConnetion() 执行了一个简单的 SQL 查询进行了测试,结果是 2 毫秒。这可能是连接池问题吗?
Squeryl 在两种环境(游戏和简单应用)中的响应时间相似
【问题讨论】:
标签: database scala activerecord jdbc playframework-2.0