首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与play框架一起使用Scala ActiveRecord性能问题

与play框架一起使用Scala ActiveRecord性能问题
EN

Stack Overflow用户
提问于 2013-12-06 18:12:32
回答 1查看 651关注 0票数 3

在我的Play应用程序中,我尝试了Scala ActiveRecord,它似乎是一个很好的orm,并声称它具有很高的性能。但是,在一个空数据库上运行以下命令需要850 ms (每个查询~425 ms):

代码语言:javascript
复制
User.findBy("email", "test")
User.findBy("email", "test")

在mysql控制台上运行相同的程序需要10 mysql。我很想使用这个图书馆,但我负担不起这么低的性能。orm使用BoneCP进行连接管理,但我没有找到任何关于如何配置它的建议。

你知道什么会导致性能问题吗?

生成的sql如下所示:

代码语言:javascript
复制
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

编辑

经过进一步的调查,我可以看出,这个问题可能是由游戏框架引起的。我在非播放环境(simple )中测试了调用,两个查询的响应时间分别为117和5ms。但是,我也对play的DB.getConnetion()进行了测试,在它上执行一个简单的SQL查询,结果是2ms。这有可能是连接池问题吗?

Squeryl在两种环境(play和简单的app)中都提供类似的响应时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-07 08:19:22

例如,如果用户模型如下:

代码语言:javascript
复制
case class User(
  @Required var email: String,
  @Required var firstName: String,
  @Required var surname: String
) extends ActiveRecord {
  var currentCountry: String = _
  var birthCity: String = _
  var birthDate: java.util.Date = _
  var birthCountry: String = _

  @Required(on="create")
  @Length(min=8)
  @Confirmation
  @Transient
  var password: String = _

  var passwordConfirmation: String = _

  var passwordHash: String = _

  override def beforeSave() {
    if (password != null && password != "")
      passwordHash = LibraryOfSomething.toHash(password)
  }
}

object User extends ActiveRecordCompanion[User] with PlayFormSupport[User]

用于select方法:

代码语言:javascript
复制
User.where(_.email === "test")
    .select(u => User(u.email, u.firstName, u.surname))
    .headOption
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20430763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档