반응형
# Adding multiple columns AFTER a specific column in MySQL (mysql 5.7.19)
after 를 사용하게되면 algorithm = copy로 처리하게되서 테이블의 용량에 따라 컬럼 추가시에는 성능이슈가 발생할 수도 있다.
예를 들어 테이블 TMP_LOAD_20201203에 x0 컬럼 뒤에 컬럼 5개를 추가한다고하면
#잘못된 예)
ALTER TABLE TESTDB.TMP_LOAD_20201203 ADD COLUMN x1 VARCHAR(8) DEFAULT NULL AFTER x0;
ALTER TABLE TESTDB.TMP_LOAD_20201203 ADD COLUMN x2 VARCHAR(1) DEFAULT NULL AFTER x1;
ALTER TABLE TESTDB.TMP_LOAD_20201203 ADD COLUMN x3 VARCHAR(1) DEFAULT NULL AFTER x2;
ALTER TABLE TESTDB.TMP_LOAD_20201203 ADD COLUMN x4 VARCHAR(1) DEFAULT NULL AFTER x3;
ALTER TABLE TESTDB.TMP_LOAD_20201203 ADD COLUMN x5 VARCHAR(1) DEFAULT NULL AFTER x4;
// 컬럼 하나 추가할때마다 임시테이블을 만드는 작업을 하고 있어 느리다.
#수정 예)
ALTER TABLE TESTDB.TMP_LOAD_20201203
ADD COLUMN x1 VARCHAR(8) DEFAULT NULL AFTER x0,
ADD COLUMN x2 VARCHAR(1) DEFAULT NULL AFTER x1,
ADD COLUMN x3 VARCHAR(1) DEFAULT NULL AFTER x2,
ADD COLUMN x4 VARCHAR(1) DEFAULT NULL AFTER x3,
ADD COLUMN x5 VARCHAR(1) DEFAULT NULL AFTER x4;
// 임시테이블 한번만 만들고 나머지는 컬럼모두 추가~ 아래꺼가 훨씬 빠르다.
after column 을 쓰게되면 algorithm = inplace 를 사용할 수 없다. mysql 8에서도 맨뒤에 컬럼을 추가하는 경우를
제외하고는 instant를 쓸 수 없는 것으로 알고 있다.
컬럼 순서 재정렬 이슈.. 이번에 정리해두자.
끝~
참조 : stackoverflow.com/questions/17541312/adding-multiple-columns-after-a-specific-column-in-mysql
반응형
'RDB > mysql' 카테고리의 다른 글
.TRG 파일 이건 뭐야 (0) | 2021.03.23 |
---|---|
mysql 디스크 용량이 거의 다 찼어요 (0) | 2021.03.06 |
점차 멀어지는 mysql vs MariaDB (0) | 2020.11.10 |
mysql text 형 어떤 걸 쓸까? (0) | 2020.10.15 |
[튜닝] thread cache miss rate 1%를 향해 (mysql parameter tuning) (0) | 2020.09.29 |