MySQL 8のSKIP LOCKED・NOWAIT(ロッキングリードオプション)を試してみる
行ロックを利用してレコードを参照する方法をロッキングリードと呼びます。ロッキングリードを利用することで参照レコードの情報を保護できます。 ロッキングリードには共有ロックを利用するSELECT … LOCK IN SH…
行ロックを利用してレコードを参照する方法をロッキングリードと呼びます。ロッキングリードを利用することで参照レコードの情報を保護できます。 ロッキングリードには共有ロックを利用するSELECT … LOCK IN SH…
MySQLのデータベースエンジンにはMyISAMとInnoDBがあります。 InnoDBにはレコード単位のロック『行ロック』が実装されています。 行ロックが実行されているテーブルにアクセスする場合、行ロック中のレコード以…
InnoDBはMySQLのデータベースエンジンの1つです。InnoDBの行ロックには共有ロック(Sロック)と排他ロック(占有ロック、Xロック)の2種類があります。1 今回は共有ロックと排他ロックの概要と、ロック時の挙動に…
検索条件によってはSQLでインデックスが利用されないケースがあります。 達人に学ぶDB設計 徹底指南書などでインデックスが利用されないと一般的に言われているケースは以下の通りです。 しかし手元で検証してみたところ上記のう…
新規テーブルの作成やクエリチューニング時にインデックスを作成する機会があります。 インデックスを作成することでSQLの実行時間を短くできます。 そこで今回はインデックスを作成する際のチェックポイントについて紹介します。 …
SQLのJOINで利用される代表的な結合方法にはNested loop join(NLJ、ネステッドループ結合)、Merge join(マージ結合、ソートマージ)、Hash join(ハッシュ結合、ハッシュ値マッチング)…
複合インデックス(結合インデックス)とは複数のカラムを組み合わせたインデックスのことをいいます。 検索やソート条件で一緒に利用されるカラムに対して複合インデックスを作成することでクエリの高速化が期待できます。 複合インデ…
前回、MySQLのEXPLAINの読み方とチューニング時のチェックポイントでEXPLAINの読み方について紹介しました。 スロークエリを引き起こす最も多い原因のひとつが『正しくインデックスが作成・利用されていない』です。…
EXPLAINを実行することでSQLの実行計画が取得できます。クエリのチューニングにおいてEXPLAINの理解は必須です。 今回はEXPLAINの読み方とクエリをチューニングする際のチェックポイントについて紹介します。 …
こんにちは。@nishina555です。 前回、遅いクエリを突き止める!MySQLクエリ解析にスロークエリログを導入する手順でSQLのクエリ解析の手段としてスロークエリログをMySQLに導入する手順について説明をしました…
こんにちは。@nishina555です。 Webのパフォーマンス改善において、は非常に重要です。 特に、実行時間の長いものや試行回数の多いクエリを抽出することはチューニングの方向性を決める上で大事です。 MySQLではの…