並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 19 件 / 19件

新着順 人気順

N+1問題の検索結果1 - 19 件 / 19件

タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。

N+1問題に関するエントリは19件あります。 RailsDB未分類 などが関連タグです。 人気エントリには 『N+1問題におけるORMの重たさについて - Atsuo Ishimoto's blog』などがあります。
  • N+1問題におけるORMの重たさについて - Atsuo Ishimoto's blog

    tl;dr¶ボトルネックはちゃんと測定して把握しないとダメだよ。 N+1問題¶DjangoやRailsなど、ORMを利用するWebフレームワークなどの開発では、よく 「N+1問題」 というのが話題になります。ORMでは、あるモデルが参照している別のモデルを参照するとその時点でSQLが発行されてしまうため、気が付かないうちにパフォーマンスが低下する場合がある、というやつですね。 Django¶例えば、Djangoで次のようなモデルがあったとき、 class Table1(models.Model): text = models

      N+1問題におけるORMの重たさについて - Atsuo Ishimoto's blog
    • N+1 問題を解決すりゃいいってもんでもないらしい

      こんにちは! ラブグラフ開発インターンの arawi です。 今日は Rails (ActiveRecord) を使っていると発生してしまいがちな N+1 問題についての記事です! TL;DR preload は SQL でデータを取得したあとインスタンス化するので、大量のレコードを prelaod するととても重くなる 想定する読者 N+1 問題を理解している Rails/ActiveRecord の経験がある 特に、preload を使ったことがある 発端 サービス上のとあるページの高速化を図るため、ページの SQL クエリを見直していました。 このページではカメラマン(Photographer)とカメラマンが1回の撮影で取った写真集(Album)、そして撮影された写真(Photograph)を表示していたのですが、アルバムや写真が preload や eager_load で事前読み

        N+1 問題を解決すりゃいいってもんでもないらしい
      • Rails: Active Recordメソッドのパフォーマンス改善とN+1問題の克服(翻訳)|TechRacho by BPS株式会社

        概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Improving Database performance and overcoming common N+1 issues in Active Record using includes, preload, eager_load, pluck, select, exists? – Saeloun Blog 原文公開日: 2020/01/08 著者: Rohit Kumar サイト: Saeloun -- Ruby on Railsのコンサルティング会社で、Rails + React開発のほかに、React Nativeによるモバイルアプリ開発も手がけています。 日本語タイトルは内容に即したものにしました。 2020/03/11: 初版公開 2023/09/27: 更新 Railsアプリケーションのパフォーマンスは多くの変数に

          Rails: Active Recordメソッドのパフォーマンス改善とN+1問題の克服(翻訳)|TechRacho by BPS株式会社
        • 【GraphQL × Go】 N+1問題を解決するgqlgen + dataloaderの実装方法とCacheの実装オプション - LayerX エンジニアブログ

          こんにちは。バクラク事業部でバクラク申請の開発を担当している@sh_komineです。 この記事は、6月から始まっている #LXベッテク月間 9日目の記事です。 前回はPrivacyTech事業部の@cipepserさんによる 合成データとは - 統計的な有用性を維持する架空のパーソナルデータ でした。 ものすごくBet Technologyな合成データのお話で読んでいてワクワクする記事です。気になる方は是非読んでみてください! 本日は、一般的なWebアプリケーション開発の技術で、バクラク事業部の開発で実際に使っているgqlgenとdataloaderの実装について紹介したいと思います。 gqlgen + dataloaderの記事自体は巷にだんだんと出揃ってきていると思いますが、弊社が使っている技術として改めてご紹介できたらと思います。 前提の話 今回の記事は自分が前回のエンジニアブログ

            【GraphQL × Go】 N+1問題を解決するgqlgen + dataloaderの実装方法とCacheの実装オプション - LayerX エンジニアブログ
          • ためして分かる、N+1問題とその解決方法 - プログラミング漫遊記

            この記事はフィヨルドブートキャンプ Part 1 Advent Calendar 2022 の23日目の記事です。 昨日はpart1が penoさんのフルタイムで働く社会人が月に100時間の勉強時間を確保できるようになるまで。私なりの具体的なやり方と失敗事例 - ぺのめも、part2が uchihiroさんのVSCodeのパッケージ不適合によるエラー解決までの道のり(Byebug編)でした。 前振り フィヨルドブートキャンプを今年の4月に卒業しました。卒業生なので、近況報告などしようかなと思ったんですがDiscordや日報などで日々わーわー言ってるので自重しておきます。 その代わり?最近友達とN + 1 問題の勉強会を行ったのでハンズオン形式で理解できるような記事を書いてみようと思います。(わからないところあったらフィードバックください) Ruby on Rails でよく発生するN +

              ためして分かる、N+1問題とその解決方法 - プログラミング漫遊記
            • [解説] SQLクエリのN+1問題 - Qiita

              ISUCON のブログ記事等で当たり前に出てくる「N+1問題」を知らなかったので、調査した結果です。 TL;DR N+1問題とは、このブログ記事にもう全部書いていますが、 N件のデータ行を持つテーブルをごそっと読みだすのに1回 別のテーブルから、先述のテーブルの各行に紐づくデータを(1件ずつ)読み出すのに計N回 合計でN+1回のクエリを実行している状態です。 (1+N問題と考えた方が理解しやすい) Nが大きいときは処理に非常に時間がかかるため、対応が必要になります。 対応策としては、 JOIN句による表の結合 Eager Loading(必要なデータを事前にロード) の2種類があります。 例 図書館の本貸出管理システムを考えます。 以下のように、「書籍」テーブルと、図書館の「利用者1」テーブルがあるとします。 各書籍について、借りている人の名前と、年齢を知りたいときを考えます。 欲しいのは

                [解説] SQLクエリのN+1問題 - Qiita
              • GraphQL で N+1 問題を解決する 4 つのアプローチ

                この記事では TypeScript + Apollo Server + TypeORM を前提として話を進めます。 GraphQL のサーバ実装では 1:N 構造において N+1 問題が発生しがち 技術選定がこれからの場合や、ORM が置き換えられる場合は N+1 を考慮した ORM を検討するのが良い それ以外の場合は DataLoader を実装するのが良さそう。ライブラリを使えばそんなに大変ではない JOIN での解決も可能だが、 GraphQL の道を踏み外している(ように感じる) GraphQL における N+1 問題 GraphQL サーバで 1:N のデータ構造を実装しクエリすると、すぐに N+1 問題に行き当たります。User と Post が 1:N の関係となる、以下の例を見てみましょう。 type User { id: Int! name: String! posts

                  GraphQL で N+1 問題を解決する 4 つのアプローチ
                • N+1問題がなんもわからんというだけの記事

                  N+1問題がなんもわからん。なんもわからんので記事にしてなんもわからん人口を増やしてやるという記事です。 N+1問題って何? 例えば User -> Friendという1対他の関係があるデータをDBに保管しているときに、下記のように問い合わせをやってしまうとN+1問題になります。 const users = User.findAll(); for (const user in users) { const friends = user.findFriend(); // ... } というように1度の取得でフレンドまで持ってくれば良いというので簡単ですね。 N+1問題完全に理解した!やったー!!! 何がわからんの? これで終わればよかったのですが、ひょんなことでN+1問題を考える機会があり実はN+1問題の問題認識が人によってズレてるのでは・・・?ってなりました。 参考までにN+1問題でググっ

                    N+1問題がなんもわからんというだけの記事
                  • Kaigi on Rails 2023 に「Rails アプリの5,000 件の N+1 問題と戦っている話」というタイトルで登壇 & 参加してきました - makicamelの日記

                    10 月 27 - 28 日に開催された Kaigi on Rails 2023 に登壇 & 参加してきました。 kaigionrails.org 「Rails アプリの5,000 件の N+1 問題と戦っている話」というタイトルでお話をさせて頂きました。 speakerdeck.com github.com ひとことでいうと N+1 がいっぱい(いっぱい)あるのでなんとかしたい、手で直すのは面倒くさい、よろしいならば自動修正だ、というお話です。 予定では前後編で「gem を作った話」と「5,000 件の N+1 をなぎ倒した話」の 2 本立てだったのですが、開発が思ったように進まず「gem を作った話」が主軸になったのは非常に悔やまれるところです。完結編をいずれどこかでお話したい。 当初描いていた骨子と変わったので楽しんでもらえるか不安でしたが、「面白かった」と声をかけて頂いてほっとしま

                      Kaigi on Rails 2023 に「Rails アプリの5,000 件の N+1 問題と戦っている話」というタイトルで登壇 & 参加してきました - makicamelの日記
                    • Django ORMのN+1問題について整理する - Qiita

                      目的 Djangoでデータベースとやり取りする際に、ORMを使うことが多いかと思います。 ORMは非常に強力ですが、場合によってはレスポンスタイムの悪化を引き起こすことがあります。 今回はその原因となる「N+1」問題についてと、その解決方法を示します。 N+1問題とは データベース上のデータを取得する際に発生する性能の問題です。 一般的に、1つの主データに対して、それに紐づく複数のデータを取得する場合、1回のクエリで主データと全ての紐づくデータを取得することが望ましいとされます。 しかし、ORMを使用した際に、1つの主データに対して、それに紐づく複数のデータを取得する際、1つの主データに対して1回のクエリを発行し、その紐づくデータを1つずつ取得することがあります。 結果 「主データ(1) + 紐づくデータ数(N)」 の数だけクエリが発行され、性能劣化を引き起こします。 N+1問題とは 主デ

                        Django ORMのN+1問題について整理する - Qiita
                      • Dataloadersを使ったN+1問題への対応 - Qiita

                        Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

                          Dataloadersを使ったN+1問題への対応 - Qiita
                        • [GraphQL] N+1問題を解決するDataLoaderの仕組みとサンプル実装 | DevelopersIO

                          Apollo ServerにDataLoaderを組み込んでみる 簡単なサンプルプロジェクトで実際の動作を確認してみます。プロジェクト構成などは以前の記事をご参照ください。本記事ではDataLoaderに関係する箇所を中心に記載します。 https://dev.classmethod.jp/articles/apollo-server-restdatasource-and-cache/ Schema定義 以下のスキーマを定義します。books Queryからスタートして、author→books→author→...とノードをループすることができます。 type Book { title: String author: Author } type Author { name: String books: [Book] } type Query { books: [Book] } Resol

                            [GraphQL] N+1問題を解決するDataLoaderの仕組みとサンプル実装 | DevelopersIO
                          • N+1問題をincludesメソッドで解決しよう!

                            includesメソッドとは、アソシエーションの関連付けを事前に取得してN +1問題を解決してくれるメソッドです。これによって、指定された関連付けが最小限のクエリ回数で読み込まれます。

                              N+1問題をincludesメソッドで解決しよう!
                            • 【Laravel】N+1問題を完全理解!解消法も!

                              どーも! たかぽんです! 今回はLaravelでN+1問題という設計上発生してしまう問題についてしっかり理解していこうと思います! 実際はLaravelに限らず、より一般的なWeb開発等で発生しがちな問題なんですが、特にLaravelの場合どのように発生するのか? そして、どうやって解消すればいいのか?を調べていこうと思います! さて、ではこのN+1問題を理解していこうと思います! WEBで様々なサービスを設計する際、DBから値の取得を行うシーンはたくさんありますよね。 全てのユーザーに紐付いているコメントリストに対して処理をする... 全てのイベントに紐づいている顧客リストに対して処理をする... などなど... そういった状況で、SQLのクエリを発行して情報を集めていく必要がありますが、その際、余分にたくさんのクエリを発行してしまい、少なからず表示速度等に悪影響を出してしまうことをN+

                                【Laravel】N+1問題を完全理解!解消法も!
                              • 新卒研修でN+1問題について学んだこと - Qiita

                                はじめに 今回は私が新卒研修で学んだN+1問題について学んだことをアウトプットしていきます。 この記事の対象者としては N+1問題について知らない方 Laravel初心者の方 を想定しております。修正点やアドバイスなどございましたら、ご意見ください! N+1問題とは SQLのクエリを発行して情報を集めていく必要がありますが、その際、余分にたくさんのクエリを発行してしまい、少なからず表示速度等に悪影響を出してしまうことを指します。親レコードを1つ取得し、その後、各子レコードを個別に取得するため、合計でN+1回のクエリが実行されます。ここでNは子レコードの数を指します。 具体例 具体的な例を挙げてみましょう。仮に、あるECサイトの注文履歴を表示するというケースを考えます。この場合、以下の3つのテーブルが関与します orders テーブル:各注文に関する情報を保持 items テーブル:販売商品

                                  新卒研修でN+1問題について学んだこと - Qiita
                                • 【Ruby on Rails】n+1 問題とは? - Qiita

                                  Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

                                    【Ruby on Rails】n+1 問題とは? - Qiita
                                  • Railsのタグ機能でN+1問題解消

                                    はじめに GMO NIKKOの吉岡です。 今期は新しいウェブアプリをゼロから作成しましたが、各機能は1〜2日で作る必要があったため、タグ機能を作る際にはacts-as-taggable-onというGemを使いました。 初めは良いですが、タグが増えるにつれてパフォーマンスが気になってきます。 この原因は大体がN+1問題で、includesを使った先読みで改善されますが、細かい動作については忘れてしまうことも多いので、備忘録として残しておきます。 N+1問題とは? acts-as-taggable-onは特定のモデルに関連テーブルとしてタグを追加する機能です。 今回は記事モデルに追加しましたが、記事に関連する一つのタグを取得するのに、1SQLが発行されてしまいます。 タグが含まれている複数記事を一覧表示する場合、無駄なSQLが大量に発行されてしまうでしょう。 この現象がN+1問題です。関連テー

                                      Railsのタグ機能でN+1問題解消
                                    • Active StorageのN+1問題に対処する - シュッと開発日記

                                      まず最初に最近データベースとかのあたりを勉強していると見かけた、 N+1問題というのを知って調べてみた。 N+1問題 繰り返し処理の中で関連があるときに普通にeachなどを使うと、 その関連を探しにデータベースにその関連がある回数だけアクセスしてしまう。 ⇨(SQLが実行されまくる) というような理解でいいのかな? 対策 関連のデータベースをいちいち参照しに行くのではなく、 includesを使ってデータベースをくっつけてしまうことで、 最小の回数データベースをみに行くようにする ってな感じでしょうか。 ここまではこの記事をみて理解しました。 N+1問題 Active Storageの対策 というわけでここまでで自分のプロジェクトを確認すると、 私の場合では、プロフィール画像のところでN+1問題がおきていました。 失敗 # app/models/user.rb has_one_attach

                                        Active StorageのN+1問題に対処する - シュッと開発日記
                                      • 【Rails】N+1問題はincludesで万事OKと思っていた。 �

                                        こんにちは。Webエンジニアとなって2週間経ったオクトと申します。 本記事では、N+1問題をincludesさえ付けておけば完璧じゃない?と思っている方を対象に他にもやり方はあるんだよ、もっと良い方法があるよ、ということをシャアしていきます。 かくいう私も上記の対象に先ほどまで入ってました。 これはそんな私向けの記事でもあるんですね。 バリバリにRailsを書いてきた人には、当たり前に感じると思いますが、 ご指摘箇所がありましたらご教授いただけますと幸いです。 前提 Ruby 3.1.1 Rails 6.1.4.6 テーブル構造は以下の通りです。 includesの他に何があるの? 「ねぇねぇ、先に何があるか教えてよ」という声が聞こえてきたので、先に伝えます。 includesの他に主に2つの方法で解消することができます。 クエリ数 関連先での絞り込み 関連先の情報

                                          【Rails】N+1問題はincludesで万事OKと思っていた。 �
                                        1

                                        新着記事