mcpField
M
mysql

mysql

github.com/pageai-proデータ・データベース33572 回インストール18 週間前に更新
リポジトリ

mysql について

安全で測定可能な MySQL/InnoDB の変更を計画・検証するスキルです。データベース開発者向けに、証拠の確認とロールバックを重視しながら、スキーマ設計、インデックス、クエリ最適化、ロック、運用手順を案内します。

主な機能

  1. 01スキーマ設計の指針
  2. 02インデックスとパーティションの計画
  3. 03クエリ最適化の実践
  4. 04トランザクションとロックの助言
  5. 05運用手順とロールバック

活用シーン

  1. 01新しい OLTP テーブルのスキーマ設計
  2. 02EXPLAIN による遅いクエリの調査
  3. 03本番データベース変更の安全な計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pageai-pro/ralph-loop --skill mysql

インストール後、Claude Code で/mysqlを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
character-sets.md
composite-indexes.md
connection-management.md
covering-indexes.md
data-types.md
deadlocks.md
explain-analysis.md
fulltext-indexes.md
index-maintenance.md
isolation-levels.md
json-column-patterns.md
n-plus-one.md
online-ddl.md
partitioning.md
primary-keys.md
query-optimization-pitfalls.md
replication-lag.md
row-locking-gotchas.md

詳細

MySQL

安全で測定可能な MySQL/InnoDB の変更を行うには、このスキルを使用してください。

ワークフロー

  1. ワークロードと制約(読み取り/書き込みの比率、レイテンシ目標、データ量、MySQL のバージョン、ホスティングプラットフォーム)を定義します。
  2. 以下の各セクションでリンクされている、関連する参照ファイルのみを読みます。
  3. トレードオフを含め、問題を解決できる最小限の変更を提案します。
  4. 証拠(EXPLAIN、EXPLAIN ANALYZE、ロック/接続のメトリクス、本番環境で安全なロールアウト手順)を用いて検証します。
  5. 本番環境への変更には、ロールバックとデプロイ後の検証を含めます。

スキーマ設計

  • 書き込み負荷の高い OLTP テーブルには、幅が狭く単調増加する PK(BIGINT UNSIGNED AUTO_INCREMENT)を優先します。
  • クラスタ化 PK にランダムな UUID 値を使わないでください。外部 ID が必要な場合は、UUID をセカンダリの一意なカラムに保持します。
  • 常に utf8mb4 / utf8mb4_0900_ai_ci を使用します。NOT NULL と、TIMESTAMP より DATETIME を優先します。
  • ENUM よりルックアップテーブルを使用します。3NF に正規化し、計測で効果が確認されたホットパスに限って非正規化します。

参照:

インデックス作成

  • 複合インデックスの順序は、等価条件を先にし、その後に範囲/ソート条件を指定します(最左プレフィックスルール)。
  • 範囲条件を使うと、それ以降のカラムではインデックスが使用されません。
  • セカンダリインデックスには PK が暗黙的に含まれます。長い文字列にはプレフィックスインデックスを使用します。
  • performance_schema で監査し、count_read = 0 のインデックスを削除します。

参照:

パーティショニング

  • 時系列テーブル(5,000 万行超)または大規模テーブル(1 億行超)をパーティショニングします。早めに計画してください。後から導入すると全体の再構築が必要になります。
  • すべての一意キー/PK にパーティションカラムを含めます。必ず MAXVALUE のキャッチオールパーティションを追加します。

参照:

クエリ最適化

  • EXPLAIN を確認します。警戒すべき項目は type: ALL、Using filesort、Using temporary です。
  • OFFSET ではなくカーソルページネーションを使用します。WHERE 内でインデックス付きカラムに関数を適用しないでください。
  • 挿入をバッチ処理します(500~5000 行)。重複排除が不要な場合は UNION より UNION ALL を使用します。

参照:

トランザクションとロック

  • デフォルトは REPEATABLE READ(ギャップロック)です。競合が激しい場合は READ COMMITTED を使用してください。
  • 一貫した順序で行にアクセスすると、デッドロックを防げます。エラー 1213 が発生した場合は、バックオフして再試行してください。
  • トランザクションの外で I/O を実行してください。SELECT ... FOR UPDATE は控えめに使用してください。

参考資料:

運用

  • 可能な場合はオンライン DDL(ALGORITHM=INPLACE)を使用し、まずレプリカでテストしてください。
  • 接続プーリングを調整し、負荷時に max_connections が枯渇しないようにしてください。
  • レプリケーション遅延を監視し、書き込み中にレプリカから古いデータを読み取らないようにしてください。

参考資料:

ガードレール

  • 一律の経験則より、測定に基づく根拠を優先してください。
  • アドバイスを提示する際は、MySQL のバージョン固有の動作に留意してください。
  • 破壊的なデータ操作(ドロップ/削除/切り捨て)の前に、人間による明示的な承認を求めてください。

コメント