Asynchronous Queries in ActiveRecord
ActiveRecord
で
非同期
に
クエリ
を実行することができる機能
Rails
7.0で
ActiveRecord_Relation#load_async
が追加された
7.1で
count
,
sum
などもasyncにできるようになる
https://rubyonrails.org/2023/9/13/Rails-7-1-0-beta-1-has-been-released
実装
コンセプトは
https://gist.github.com/casperisfine/0ccd24dc209665c46e83bcc2920dd7dc
によって提示
シンプルにスレッドに逃がすだけでは
スレッドセーフ
でなくなる
なるべくローレベルなadapter操作に近いところでスレッドプールを管理することで回避
https://github.com/rails/rails/pull/40037
にてrails本体に機能を追加
load_async
APIの追加は
https://github.com/rails/rails/pull/41372
count
,
sum
などは
https://github.com/rails/rails/pull/44446