こんばんわ。
データベースのパフォーマンスについて、質問したいことがあります。
- データベースのパフォーマンスが悪い理由
- n + 1問題
- index問題
この3つ以外にあると思うので、もしあればなぜ、それを見直すべき必要があるのかの理由も書いてほしいです。
自分の理由です。
データベースのパフォーマンスが悪い理由
コンピュータはメモリー上のデータの出し入れは早いが、HDDへのアクセスは遅い
データベースはHDDへのアクセスを行っているので、基本的にパフォーマンスは遅くなる。
もし、メモリー上にデータベースを展開できるのなら、高速アクセスは可能になる
→redis, memcached
Mysqlもクエリをメモリー上にキャッシュをするが、全てできるわけではない
n + 1問題
ループで回す処理を毎回クエリを作成しているので遅くなる。
クエリを工夫するだけで一回で取得できる。
このことから、n + 1問題に限らず、余計なクエリを作成しているところを直すことが必要。
index問題
HDDにアクセスする際に、indexがないとレコード全てから探すことになる。
indexを貼ってあれば、余計なレコードから探さなくて良くなる
まとめ
- データベースのパフォーマンスが悪い理由
→コンピュータの性質の問題
- n + 1問題
→クエリの問題
- index問題
→DBアクセスの検索ロジックの問題
まとめると上記の中身だと思っています。
これ以外に注意点や、考えが間違っていることがあれば、教えていただきたいです。
回答4件
あなたの回答
tips
プレビュー