티스토리 뷰

728x90
반응형

https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-operations.html

 

MySQL :: MySQL 5.7 Reference Manual :: 14.13.1 Online DDL Operations

14.13.1 Online DDL Operations Online support details, syntax examples, and usage notes for DDL operations are provided under the following topics in this section. The following table provides an overview of online DDL support for index operations. An aste

dev.mysql.com

 

mysql 5.6 이후부터 online ddl operation이 등장하였습니다

 

이전에는 테이블 관련 스키마를 변경하는 경우에 table lock이 걸려서 해당 작업이 끝날때까지 조회만 가능할뿐

 

DML이 동작을 하지 않았는데요

 

5.6 이후부터는 스키마를 변경하면서도 DML을 함께 사용할수 있습니다

 

ALTER TABLE tbl_name ADD COLUMN column_name column_definition, ALGORITHM=INPLACE, LOCK=NONE;

 

위의 쿼리 예제를 보면 기존 쿼리 뒤에 ALGORITHM과 LOCK 옵션을 통해서 지정이 가능합니다

 

각 명령어마다 사용할수 있는 ALGORITHM, LOCK은

 

위에 링크한 문서에 어떤 동작에서 어떤 것을 적용할수 있는지 케이스별로 정리가 되어있습니다

 

그리고 버전별로 지원 내역에 차이가 있습니다

 

8.0이상부터는 INSTANT algorithm도 사용할수 있는데 훨씬 성능이 좋다라고 이해하면 되겠네요

 

 

문서에서 예를 하나 가져왔습니다

 

column과 관련된 명령어들입니다

 

Operation In Place Rebuilds Table Permits Concurrent DML Only Modifies Metadata
Adding a column Yes Yes Yes* No
Dropping a column Yes Yes Yes No
Renaming a column Yes No Yes* Yes
Reordering columns Yes Yes Yes No
Setting a column default value Yes No Yes Yes
Changing the column data type No Yes No No
Extending VARCHAR column size Yes No Yes Yes
Dropping the column default value Yes No Yes Yes
Changing the auto-increment value Yes No Yes No*
Making a column NULL Yes Yes* Yes No
Making a column NOT NULL Yes* Yes* Yes No
Modifying the definition of an ENUM or SET column Yes No Yes Yes

 

각 명령어별로 4개의 컬럼들이 보이는데요

 

각각의 컬럼은

 

In Place = INPLACE 알고리즘을 지원하는지

 

Rebuild table = 테이블 재구성을 하는지(값비싼 작업)

 

Permit Concurrent DML = 해당 작업을 수행중에 DML을 사용할수 있는지

 

Only Modifies Metadata = 메타데이터만 수정하는지(속도가 빠름)

 

이렇 의미를 담고 있습니다

 

 

In Place가 YES인 경우는 해당 알고리즘이 DML을 허용하기 때문에 Permit Concurrent DML도 마찬가지로 YES이며

 

Only Modifies Metadata가 YES로서 메타데이터만 수정하여 가능한 명령어의 경우

 

Rebuild Table을 수행하지 않아 NO로 표시가 되어있습니다

 

 

예를들어 컬럼을 추가하는 명령을 보면 In Place 알고리즘을 지원하며 Rebuild Table이 발생합니다 그리고 동시 DML을 허용합니다

 

Rebuild Table은 내부적으로 테이블을 재구성한다는 의미이며 대체로 비싼 동작입니다

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함