Nita's Digital Garden
💻Blog🚀GitHub💬micro.blog
  • 👋Welcome
    • Satoshi Nitawaki
      • Hey, I’m Satoshi
      • Uses
  • Digital Garden
    • GitBook
    • micro.blog
  • Photography
    • GR IIIx
  • Knowledge
    • PKM
      • 🆚AnyType vs Capacities
      • Capacities
      • Mindmap Tools
      • Note App Histories
      • Heptabase
    • Mental Models
      • Tech
        • Decision-Making Framework
        • Adopting an API-First / API Mandate Strategy
        • Don't using OOP way on Frontend DDD
        • KISS(Keep it Simple, Stupid)
        • Twelve-Factor App
      • Life
  • Tech
    • My Oshi
    • Frontend
      • Safe Data Fetching
      • SWR
      • Review Point
      • Assets
      • CSS Modules composition
    • Infrastructure
      • Online DDL / MySQL
    • TypeScript / JavaScript
      • 🦮Style Guides
      • Barrel Files
      • npm
    • CLI
      • Scaffolding Tool
  • Workflow
    • Dev Workflow
    • Knowledge Workflow
    • Book Workflow
  • Thought
    • Ideology
      • Getting Real
      • Design ideology
    • 結晶性知能
    • 流動性知能
    • ペット保険プリズムペット SBIプリズム少額短期保険
    • カーボローディング
    • エアコン掃除
    • ウォーターローディング
    • Game
      • How To Create Chart Per Deck Theme
      • Tournament Tool
    • Spotify Podcast
  • Awesome List
    • Dev Tools
    • Tools
    • AI Tools
  • CheatSheet
    • Git
    • Postmortem
    • ADR: Architecture Decision Records
    • Next
      • Next で tailwind スタイルの共存
  • AI
    • Deep Research Best Practice
Powered by GitBook
On this page
  • Add Index with MySQL@5.7
  • FULLTEXT INDEX
  1. Tech
  2. Infrastructure

Online DDL / MySQL

#mysql #index #ddl #online_ddl

PreviousInfrastructureNextTypeScript / JavaScript

Last updated 2 months ago

ALTER TABLE `comments`
ADD INDEX idx_comments_search (`user_id`, `del`, `comment`, `created_at`)
ALGORITHM=INPLACE, LOCK=NONE;
  1. ALTER TABLE によるテーブルロックの影響

MySQL 5.7 の InnoDB テーブルでは、ほとんどの ALTER TABLE 操作が テーブル全体のロックを取得 します。 特に インデックスの追加 (ADD INDEX) や削除 (DROP INDEX) では、テーブルの 書き込み (INSERT, UPDATE, DELETE) がブロックされます。

  1. ALTER TABLE 実行時のロックモード

MySQL 5.7 の InnoDB テーブルでは、ほとんどの ALTER TABLE 操作が テーブル全体のロックを取得 します。 特に インデックスの追加 (ADD INDEX) や削除 (DROP INDEX) では、テーブルの 書き込み (INSERT, UPDATE, DELETE) がブロックされます。

Add Index with MySQL@5.7

開発環境で実行時間からProdでの実行時間を類推して実行。おおよそ、大体近似値となった。
# 実測
# stg: 86500 rows => (649.16ms)
# 推測
# prod: 211875 rows => (1.5s)
  • ALGORITHM=INPLACE, LOCK=NONE;でのテーブルロックの有無は時間が短すぎて判断できず。

  • テーブルロックかかる前提で進めるが安牌かもしれない。

FULLTEXT INDEX

FULLTEXT INDEXはOnlineを適用すると、初回はテーブルロックが発生する。

FULLTEXTユーザー定義の列がない場合、 最初のインデックスを追加するとテーブルが再構築されますFTS_DOC_ID。 FULLTEXTテーブルを再構築せずに追加のインデックスを追加できます。

https://dev.mysql.com/doc/refman/8.4/en/innodb-online-ddl-operations.html
オンライン DDL を期待して ALTER 文を実行したら障害になりかけた話 - カミナシ エンジニアブログカミナシ エンジニアブログ
https://dev.mysql.com/doc/refman/8.4/en/innodb-online-ddl-operations.html
Logo