パフォーマンス

MongoDB

【MongoDB】MongoDBのインデックスの基本とパフォーマンス改善の考え方

こんにちは、かつコーチです。「検索は動くけど、データが増えたら急に遅くなった」という相談を、MongoDBを使い始めた方からよく受けます。原因のほとんどはインデックス(検索を高速化するためのデータ構造。SQLのB-Treeインデックスと似た...
SQL

【SQLite】WALモードとは?読み書きを両立させる仕組み

こんにちは、かつコーチです。前回はインデックスによる読み取り最適化を扱いました。今回は、SQLiteの同時アクセス問題を大きく緩和するWALモード(Write-Ahead Logging)を、ジャーナリングの仕組みを前提知識として扱っていき...
SQL

【SQLite】インデックスとEXPLAIN QUERY PLANの読み方

こんにちは、かつコーチです。ここからは上級者向けの内容として、インデックスとBスツリー、EXPLAIN QUERY PLANの読み方といった前提知識を踏まえて解説していきます。トランザクションとロックの挙動を理解したところで、今回はクエリを...
PostgreSQL

【PostgreSQL】EXPLAIN ANALYZEで実行計画を読む

こんにちは、かつコーチです。前回はインデックスの種類を解説しましたが、「インデックスを貼った」だけでは安心できません。実際にそのインデックスが使われているかは、実行計画(PostgreSQLがクエリをどう処理するか事前に立てる計画)を見て確...
PostgreSQL

【PostgreSQL】PostgreSQLのインデックスの種類(B-tree・GiST・GIN・BRIN)

こんにちは、かつコーチです。「インデックスを貼ったのにクエリが速くならない」という相談は、よく聞くと索引の種類がデータの性質に合っていないケースが少なくありません。PostgreSQLはCREATE INDEX ... USINGで複数のイ...
MySQL

【MySQL】スロークエリログの見方と改善の第一歩

こんにちは、かつコーチです。前回はEXPLAINで個別クエリの実行計画を読む方法を解説しましたが、実務ではまず「どのクエリが遅いのか」を見つけるところから始まります。そこで活躍するのがスロークエリログです。今回は、スロークエリログの有効化か...
MySQL

【MySQL】EXPLAINでMySQLの実行計画を読む

こんにちは、かつコーチです。前回はインデックスの種類を整理しましたが、「インデックスを張ったのに速くならない」という相談は実務でも頻繁に起こります。原因を切り分けるには、MySQLが実際にどうクエリを実行しているかを可視化するEXPLAIN...
MySQL

【MySQL】MySQLのインデックスの種類(B-Tree・フルテキスト・空間インデックス)

こんにちは、かつコーチです。SQL基礎編では「インデックスを張ると検索が速くなる」というところまでお話ししました。ただ、MySQLには用途に応じて何種類かのインデックスが用意されていて、それぞれ得意な検索が違います。今回は「インデックス・パ...
SQL

【SQL】EXPLAINで実行計画を読む基本

こんにちは、かつコーチです。前回はインデックスがなぜ検索を速くするのかを解説しました。インデックスを作成したら、それが本当にクエリで使われているかを確認する必要があります。感覚や思い込みではなく、データベースに直接聞く方法がEXPLAINで...
SQL

【SQL】インデックスとは?なぜ検索が速くなるのか

こんにちは、かつコーチです。前回まではCREATE TABLEやデータ型、正規化といったテーブル設計の話を扱ってきました。テーブル設計をきちんと行っても、データ件数が増えてくると検索が遅くなる場面が出てきます。そこで登場するのがインデックス...
Laravel

【Laravel】Request Durationの許容範囲について解説

こんにちは、かつコーチです。Laravelで開発していると、データの取り出しが多くなったり、複雑になるとパフォーマンスに影響してくることがあります。表示が遅いなーと思うことも出てきますが、具体的にどのくらいの速さ以内なら良いのかを調べてみま...