如何使用 ActiveRecord Rails 5 打开和关闭新的数据库连接

KPheasey

我有一些需要增加WORK_MEMTEMP_BUFFERS. 问题是,一旦我这样做,连接(会话)不会关闭并返回到池中。这意味着额外的内存使用不是暂时的,因为我无法在TEMP_BUFFERS不破坏会话的情况下回来。

我想象工作流程是这样的:

conn = ActiveRecord.create_new_connection
conn.execute <<-SQL
  SET TEMP_BUFFERS TO '512MB';
  -- do some memory intensive 
  CREATE TEMPORARY TABLE .....;
  UPDATE ....;
SQL
conn.close

或者也许有一种方法可以关闭当前连接并让池板条箱创建一个新连接...

杰-阿尔波利达里奥

似乎new_connection是一个私有方法,这是我们需要在池中手动创建连接之外的方法,

然后,在检查源代码时,您可以执行以下操作:

connection_specification = ActiveRecord::Base.connection_pool.spec
# i.e.
#   connection_specification.adapter_method == 'postgresql_connection'
#   connection_specification.config == {:adapter=>"postgresql", :encoding=>"unicode", :pool=>5, :database=>"someapp_development"}

connection = ActiveRecord::Base.send(
  connection_specification.adapter_method, 
  connection_specification.config
)

# DEBUG:
puts connection.active?
# => true

connection.execute <<-SQL
  SET TEMP_BUFFERS TO '512MB';
  -- do some memory intensive 
  CREATE TEMPORARY TABLE .....;
  UPDATE ....;
SQL

connection.disconnect!

# DEBUG:
puts connection.active?
# => false

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在使用ActiveRecord和多个线程时管理打开和关闭数据库连接

来自分类常见问题

Rails 5:ActiveRecord或查询

来自分类Dev

为什么Rails 5使用ApplicationRecord而不是ActiveRecord :: Base?

来自分类Dev

Rails 5 API Omniauth使用ActiveRecord会话存储

来自分类Dev

如何从Rails ActiveRecord获取昨天的数据

来自分类Dev

Rails 5 查询返回 :ActiveRecord_Relation 而不是数据

来自分类Dev

ActiveRecord:使用不带Rails的ActiveRecord时如何在AR模型之间共享连接

来自分类Dev

使用SQlite在QT5上关闭和打开数据库时出错

来自分类Dev

Rails ActiveRecord交换数据

来自分类Dev

Rails activerecord连接和复制数据

来自分类Dev

Rails 4 ActiveRecord-如何查看如何解释数据库查询?

来自分类Dev

如何在Rails外部的Ruby项目上加载ActiveRecord数据库任务?

来自分类Dev

使用不带Rails,ActiveRecord或带有RSpec的任何数据库的FactoryGirl

来自分类Dev

Rails-在ActiveRecord数据库查询中使用current_user.id

来自分类Dev

使用不带Rails,ActiveRecord或带有RSpec的任何数据库的FactoryGirl

来自分类Dev

Rails-在ActiveRecord数据库查询中使用current_user.id

来自分类Dev

无法使用 rails 5 连接到 heroku 上的设置数据库

来自分类Dev

Rails 5:ActiveRecord集合index_by

来自分类Dev

使用activerecord和sinatra的ruby语法(不使用rails)

来自分类Dev

如何在Rails中将新变量设置为activerecord对象

来自分类Dev

使用ActiveRecord的Rails虚拟属性

来自分类Dev

使用Rails ActiveRecord的MySQL REGEXP

来自分类Dev

使用ActiveRecord的Rails虚拟属性

来自分类Dev

ActiveRecord尝试使用rbenv连接到错误的数据库

来自分类Dev

Rails 5:如何从数据库中删除列?

来自分类Dev

使用 PostgreSQL 数据库复制 Ruby on Rails 5 项目

来自分类Dev

如何在rails 5的数据库中添加可以传递和存储当前时间的按钮?

来自分类Dev

Rails:新关联的 activerecord 更新

来自分类Dev

Rails 5 Activerecord:如何在仪表板视图中显示每个“用户”的“类型”记录

Related 相关文章

  1. 1

    如何在使用ActiveRecord和多个线程时管理打开和关闭数据库连接

  2. 2

    Rails 5:ActiveRecord或查询

  3. 3

    为什么Rails 5使用ApplicationRecord而不是ActiveRecord :: Base?

  4. 4

    Rails 5 API Omniauth使用ActiveRecord会话存储

  5. 5

    如何从Rails ActiveRecord获取昨天的数据

  6. 6

    Rails 5 查询返回 :ActiveRecord_Relation 而不是数据

  7. 7

    ActiveRecord:使用不带Rails的ActiveRecord时如何在AR模型之间共享连接

  8. 8

    使用SQlite在QT5上关闭和打开数据库时出错

  9. 9

    Rails ActiveRecord交换数据

  10. 10

    Rails activerecord连接和复制数据

  11. 11

    Rails 4 ActiveRecord-如何查看如何解释数据库查询?

  12. 12

    如何在Rails外部的Ruby项目上加载ActiveRecord数据库任务?

  13. 13

    使用不带Rails,ActiveRecord或带有RSpec的任何数据库的FactoryGirl

  14. 14

    Rails-在ActiveRecord数据库查询中使用current_user.id

  15. 15

    使用不带Rails,ActiveRecord或带有RSpec的任何数据库的FactoryGirl

  16. 16

    Rails-在ActiveRecord数据库查询中使用current_user.id

  17. 17

    无法使用 rails 5 连接到 heroku 上的设置数据库

  18. 18

    Rails 5:ActiveRecord集合index_by

  19. 19

    使用activerecord和sinatra的ruby语法(不使用rails)

  20. 20

    如何在Rails中将新变量设置为activerecord对象

  21. 21

    使用ActiveRecord的Rails虚拟属性

  22. 22

    使用Rails ActiveRecord的MySQL REGEXP

  23. 23

    使用ActiveRecord的Rails虚拟属性

  24. 24

    ActiveRecord尝试使用rbenv连接到错误的数据库

  25. 25

    Rails 5:如何从数据库中删除列?

  26. 26

    使用 PostgreSQL 数据库复制 Ruby on Rails 5 项目

  27. 27

    如何在rails 5的数据库中添加可以传递和存储当前时间的按钮?

  28. 28

    Rails:新关联的 activerecord 更新

  29. 29

    Rails 5 Activerecord:如何在仪表板视图中显示每个“用户”的“类型”记录

热门标签

归档