MySQLにおける「回表(テーブル参照)」の動作原理と最適化戦略

技術的定義と内部構造 InnoDBストレージエンジンでは、クラスタードインデックス(主キー索引)がテーブルの実データそのものを格納します。これに対しセカンダリインデックス(非主キー索引)には、索引対象の値と当該行の主キーのみが保存されます。 このアーキテクチャにより、セカンダリインデックスを経由して検索を実行した際、検索条件を満たす主キー値は取得できま ...

8月12日 01:18 投稿

MySQL のロック機構とトランザクション隔離レベルの徹底解説

ストレージエンジンとロックの特性 MySQL におけるロックの挙動は、選択するストレージエンジンによって大きく異なります。主に利用される MyISAM と InnoDB の特徴を比較します。 MyISAM: オーバーヘッドが小さくロック獲得が高速です。デッドロックは発生しませんが、ロック粒度が表単位であり concurrent access(同時アクセス)の性能が低下しやすいです。トラン ...

8月5日 15:00 投稿

MySQLのメモリ使用量監視方法

使用バージョン:MySQL 5.7 公式ドキュメント performance_schemaには、メモリ使用状況を記録する以下のテーブルがあります。 mysql> show tables like '%memory%summary%'; +-------------------------------------------------+ | Tables_in_performance_schema (%memory%summary%) | +-------------------------------------------------+ | memory_summary_by_accou ...

8月4日 13:00 投稿

InnoDB Compact 行格式の内部構造:レコードヘッダの詳細解説

MySQL InnoDB ストレージエンジンでは、データはページ単位で管理され、各レコードにはメタ情報を格納する「レコードヘッダ」が含まれる。特に Compact 行フォーマットにおいて、このヘッダは5バイト(40ビット)で構成され、トランザクション制御や物理レイアウトに不可欠な情報を保持している。本稿では、その構成要素である delete_mask、min_rec_flag、n_owned、heap_n ...

8月4日 11:41 投稿

MySQL InnoDBロック機構の詳細解析

共有ロックと排他ロック InnoDBは標準的な行レベルロックを実装しており、主要なロックタイプとして共有ロック(Sロック)と排他ロック(Xロック)が存在します。 共有ロック:このロックを保持するトランザクションは行の読み取りが可能 排他ロック:このロックを保持するトランザクションは行の更新または削除が可能 トランザクションT1が行rで共有ロックを保持してい ...

8月1日 06:12 投稿

MySQL 5.7における中国語全文検索機能の実装

MySQL 5.7.6以前のバージョンでは、全文検索機能は英語のみに対応しており、中国語の全文検索をサポートしていませんでした。中国語の文章を検索するには、分かち書きツールを使用して文章を単語に分割し、データベースに保存する必要がありました。 しかし、MySQL 5.7.6からは、ngram全文パーサーが組み込まれ、中国語、日本語、韓国語の分かち書きがサポートされるよう ...

7月13日 17:59 投稿

MySQLインデックスが無効になる6つのシナリオとその原因

MySQLでデータベースパフォーマンスを最適化する際、インデックスの適切な使用は不可欠です。しかし、いくつかの一般的な状況では、意図せずインデックスが無効になり、フルテーブルスキャンが発生してしまいます。本記事では、インデックスが無効になる6つの主要なシナリオを詳しく解説します。 インデックスのストレージ構造 インデックスが有効に機能するためには、その ...

7月9日 21:27 投稿

MySQLデータベースの内部構造:ストレージエンジンとインデックスの基本

MySQLデータベースシステムは、データを効率的に管理し、アクセスするために複数のレイヤーで構成されています。その中でも特に重要なのが「ストレージエンジン」と「インデックス」です。これらはデータの永続化、クエリ性能、トランザクションの信頼性に直接影響を与えます。 ストレージエンジン ストレージエンジンは、MySQLサーバーの核となるコンポーネントの一つで ...

6月30日 19:18 投稿

MySQLにおけるテーブルスペースの移行によるデータ移動

MySQLにおけるテーブルスペースの移行によるデータ移動 目次- MySQLにおけるテーブルスペースの移行によるデータ移動 背景 環境構築 移行手順 1. ソーステーブルの準備 2. .ibd、.cfg、.cfpファイルをdatabase1からdatabase2へコピー 3. database1でテーブルのロック解除 4. database2でテーブルスキーマの作成 5. .ibdファイルの削除 6. テーブルスペースをデータディレ ...

6月28日 00:05 投稿

MySQL トランザクションとロックの深掘り:隔離レベル・鎖機構・インデックス戦略

トランザクションの隔離レベル:動作原理と実務上の影響 SQL標準では4段階の隔離レベルが定義されており、それぞれがデータの一貫性と並行処理性能のトレードオフを表現しています。MySQL(InnoDB)では、デフォルトでREPEATABLE READが採用されていますが、その挙動は単純な「再読可能」を超えて、MVCCと特殊なロック機構によって拡張されています。 1. READ UNCOMMITTED ...

6月27日 00:22 投稿