簡體   English   中英

如何使用ActiveRecord Rails 5打開和關閉新的數據庫連接

[英]How do you open and close a new database connection with ActiveRecord Rails 5

我有一些工作量需要增加WORK_MEMTEMP_BUFFERS 問題是,一旦執行此操作,連接(會話)就不會關閉並返回到池中。 這意味着額外的內存使用不是臨時的,因為我不能在不破壞會話的情況下將TEMP_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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM