在JRuby上使用ActiveRecord首次查询MariaDB需要5分钟才能执行

时间:2015-10-29 21:00:04

标签: mysql activerecord jdbc jruby mariadb

把头发拉到这里试图找出发生了什么...... 这是设置:

Digital Ocean Droplet
Ubuntu 15.04.1 
JRuby 9.0.3.0
MariaDB 10.0.20
Java 1.8.0_66

宝石:

activerecord (4.2.4)
activerecord-jdbc-adapter (1.3.18)
jdbc-mariadb (1.2.0)

这是我用来测试的简单代码:

require 'active_record'
require 'activerecord-jdbc-adapter'
require 'jdbc/mariadb'

Jdbc::MariaDB.load_driver

class Main < ActiveRecord::Base
  establish_connection(
  :adapter  => "mariadb",
  :host     => "localhost",
  :database => "mydatabase",
  :username => "root",
  :password => "*******")
end

t1 = Time.now
puts Main.connection.execute("SELECT * FROM my_table")
t2 = Time.now
puts (t2 - t1) / 60

t1 = Time.now
puts Main.connection.execute("SELECT * FROM my_other_table")
t2 = Time.now
puts (t2 - t1) / 60

此测试的结果是第一个查询执行时间超过6.5分钟,第二个查询在几分之一秒内完成。

我尝试使用MySQL而不是MariaDB具有相同的结果。我试过降级我的宝石以及JRuby。我很困惑,因为本地工作正如我所料,第一个查询几乎立即返回。

非常感谢帮助谢谢!

1 个答案:

答案 0 :(得分:0)

通常表示生产设置错误,如果不了解有关提供商和您的具体设置的信息,将很难确切地说出来。

您可以验证其不是JRuby特定问题,例如通过尝试普通的Java程序来做同样的事情,那时你可能会提出支持问题。