Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在JRuby上使用ActiveRecord对MariaDB的第一次查询需要5分钟以上的时间执行_Mysql_Activerecord_Jdbc_Jruby_Mariadb - Fatal编程技术网

Mysql 在JRuby上使用ActiveRecord对MariaDB的第一次查询需要5分钟以上的时间执行

Mysql 在JRuby上使用ActiveRecord对MariaDB的第一次查询需要5分钟以上的时间执行,mysql,activerecord,jdbc,jruby,mariadb,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 宝石: 下面是我用来测试的简单代码: require 'active_record' require 'activerecord-jdbc-adapter' require 'jdbc/mariadb' Jdbc::MariaDB.load_driver class M

把我的头发拔出来想弄清楚到底发生了什么。。。 以下是设置:

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

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

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
需要“活动记录”
需要“activerecord jdbc适配器”
需要“jdbc/mariadb”
Jdbc::MariaDB.load\u驱动程序
类Main“mariadb”,
:host=>“localhost”,
:database=>“mydatabase”,
:username=>“root”,
:password=>“*******”)
终止
t1=时间。现在
放置Main.connection.execute(“从我的表中选择*)
t2=现在的时间
put(t2-t1)/60
t1=时间。现在
放置Main.connection.execute(“从我的其他表中选择*)
t2=现在的时间
put(t2-t1)/60
此测试的结果是,第一个查询执行时间超过6.5分钟,第二个查询在几分之一秒内完成

我尝试过使用MySQL而不是MariaDB,结果也一样。我试着降低我的宝石和JRuby的等级。我感到非常困惑,因为在本地它可以像我预期的那样工作,第一个查询几乎是立即返回的


非常感谢您的帮助,谢谢

通常表示smt的生产设置有误,如果不了解供应商和您的具体设置,就很难准确判断


您可以验证它不是特定于JRuby的问题,例如,通过尝试一个普通Java程序执行相同的操作,此时您可能会向支持人员提出问题。

是否启用了查询缓存。因此,第二个结果来自缓存如果我将第二个查询更改为(“SELECT*from my_other_table”),它仍然需要几分之一秒的时间每个表中有多少行?如果有数百万行,这些查询将需要几分钟。
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