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