[
  {
    "matrix_no": "ODM-01",
    "operation": "add_column",
    "clause_pattern": "ADD COLUMN",
    "algorithm": "INSTANT",
    "rebuilds_table": false,
    "locks_writes": false,
    "note": "끝자리에 붙이는 컬럼은 8.0.12 부터 INSTANT. Aurora MySQL 3 전 버전에서 성립",
    "source_doc": "MySQL 8.0 Reference Manual 15.12.1 Online DDL Operations"
  },
  {
    "matrix_no": "ODM-02",
    "operation": "drop_column",
    "clause_pattern": "DROP COLUMN",
    "algorithm": "INPLACE",
    "rebuilds_table": true,
    "locks_writes": false,
    "note": "8.0.29 부터 INSTANT 도 되지만 Aurora MySQL 3.04(8.0.28 호환) 이하를 고려해 INPLACE 로 둠. 어느 쪽이든 쓰기는 막지 않음",
    "source_doc": "MySQL 8.0 Reference Manual 15.12.1 Online DDL Operations"
  },
  {
    "matrix_no": "ODM-03",
    "operation": "rename_column",
    "clause_pattern": "RENAME COLUMN / CHANGE 같은 타입",
    "algorithm": "INPLACE",
    "rebuilds_table": false,
    "locks_writes": false,
    "note": "8.0.28 부터 INSTANT 가능",
    "source_doc": "MySQL 8.0 Reference Manual 15.12.1 Online DDL Operations"
  },
  {
    "matrix_no": "ODM-04",
    "operation": "change_column_type",
    "clause_pattern": "MODIFY / CHANGE 타입 변경",
    "algorithm": "COPY",
    "rebuilds_table": true,
    "locks_writes": true,
    "note": "테이블을 복사하는 동안 쓰기 불가. 타입이 같은지 알 수 없는 MODIFY 도 이 행으로 읽음",
    "source_doc": "MySQL 8.0 Reference Manual 15.12.1 Online DDL Operations"
  },
  {
    "matrix_no": "ODM-05",
    "operation": "set_column_default",
    "clause_pattern": "ALTER COLUMN … SET DEFAULT",
    "algorithm": "INSTANT",
    "rebuilds_table": false,
    "locks_writes": false,
    "note": "메타데이터만 바뀜",
    "source_doc": "MySQL 8.0 Reference Manual 15.12.1 Online DDL Operations"
  },
  {
    "matrix_no": "ODM-06",
    "operation": "add_secondary_index",
    "clause_pattern": "ADD INDEX / CREATE INDEX",
    "algorithm": "INPLACE",
    "rebuilds_table": false,
    "locks_writes": false,
    "note": "만드는 동안 쓰기 허용. 끝날 때 짧은 메타데이터 잠금",
    "source_doc": "MySQL 8.0 Reference Manual 15.12.1 Online DDL Operations"
  },
  {
    "matrix_no": "ODM-07",
    "operation": "drop_index",
    "clause_pattern": "DROP INDEX",
    "algorithm": "INPLACE",
    "rebuilds_table": false,
    "locks_writes": false,
    "note": "메타데이터만 바뀜",
    "source_doc": "MySQL 8.0 Reference Manual 15.12.1 Online DDL Operations"
  },
  {
    "matrix_no": "ODM-08",
    "operation": "add_fulltext_index",
    "clause_pattern": "ADD FULLTEXT INDEX",
    "algorithm": "INPLACE",
    "rebuilds_table": false,
    "locks_writes": true,
    "note": "INPLACE 지만 동시 쓰기 불가. FTS_DOC_ID 가 없으면 첫 FULLTEXT 는 테이블을 다시 만듦",
    "source_doc": "MySQL 8.0 Reference Manual 15.12.1 Online DDL Operations"
  },
  {
    "matrix_no": "ODM-09",
    "operation": "add_primary_key",
    "clause_pattern": "ADD PRIMARY KEY",
    "algorithm": "INPLACE",
    "rebuilds_table": true,
    "locks_writes": false,
    "note": "테이블을 다시 만들지만 쓰기 허용",
    "source_doc": "MySQL 8.0 Reference Manual 15.12.1 Online DDL Operations"
  },
  {
    "matrix_no": "ODM-10",
    "operation": "drop_primary_key",
    "clause_pattern": "DROP PRIMARY KEY (단독)",
    "algorithm": "COPY",
    "rebuilds_table": true,
    "locks_writes": true,
    "note": "새 PK 를 같은 문장에서 더하지 않으면 COPY",
    "source_doc": "MySQL 8.0 Reference Manual 15.12.1 Online DDL Operations"
  },
  {
    "matrix_no": "ODM-11",
    "operation": "convert_character_set",
    "clause_pattern": "CONVERT TO CHARACTER SET",
    "algorithm": "COPY",
    "rebuilds_table": true,
    "locks_writes": true,
    "note": "문자셋이 바뀌면 전체 복사",
    "source_doc": "MySQL 8.0 Reference Manual 15.12.1 Online DDL Operations"
  },
  {
    "matrix_no": "ODM-12",
    "operation": "add_stored_column",
    "clause_pattern": "ADD COLUMN … STORED",
    "algorithm": "COPY",
    "rebuilds_table": true,
    "locks_writes": true,
    "note": "생성 컬럼 값을 채우느라 전체 복사",
    "source_doc": "MySQL 8.0 Reference Manual 15.12.1 Online DDL Operations"
  }
]