4 ms·
Since Rails 7.1 we've had https://www.rubydoc.info/github/rails/rails/ActiveRecord%2FRelation:load_async https://www.rubydoc.info/github/rails/rails/ActiveRecor
by chris12321 2y ago
Since Rails 7.1 we've had https://www.rubydoc.info/github/rails/rails/ActiveRecord%2FRelation:load_async https://www.rubydoc.info/github/rails/rails/ActiveRecord%2FR... which actaully does run queries in parallel.
There's also Rails' russian doll caching, which can actaully results in pages with n+1 queries running quicker than ones with preloaded queries. https://rossta.net/blog/n-1-is-a-rails-feature.html https://rossta.net/blog/n-1-is-a-rails-feature.html
- ElatedOwl 2y agoload_async is still concurrency, but not parallelism. The queries themselves can run parallel, but when materializing AR objects e.g., only one thread can run at a time. A greedy thread in process will still subject you to GVL waits
- Lio 2y agoIf that’s a problem for you right now I’d suggest giving JRuby a look as it has no GVL and true multithreading. Hopefully as Ractors mature that problem will be solved for MRI too.