반응형
열을 추가하기 위해이 테이블을 업데이트하는 데 1 시간 이상 걸리는 이유는 무엇입니까? 이 테이블에는 15M 행이 있습니다. 2 개의 인덱스와 단일 키 기본 키가 있습니다. ALTER TABLE 쿼리는 현재 1 시간 15 분 동안 "tmp 테이블로 복사"상태였습니다.
ALTER TABLE `frugg`.`item_catalog_map`
ADD COLUMN `conversion_url` TEXT NULL DEFAULT NULL
표:
mysql> describe item_catalog_map;
+------------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+---------------+------+-----+---------+-------+
| catalog_unique_item_id | varchar(255) | NO | PRI | NULL | |
| catalog_id | int(11) | YES | MUL | NULL | |
| item_id | int(11) | YES | MUL | NULL | |
| price | decimal(10,2) | YES | | 0.00 | |
+------------------------+---------------+------+-----+---------+-------+
mysql> show index from item_catalog_map;
+------------------+------------+----------------------+--------------+------------------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+------------------+------------+----------------------+--------------+------------------------+-----------+-------------+----------+--------+------+------------+---------+
| item_catalog_map | 0 | PRIMARY | 1 | catalog_unique_item_id | A | 15485115 | NULL | NULL | | BTREE | |
| item_catalog_map | 1 | IDX_ACD6184FCC3C66FC | 1 | catalog_id | A | 18 | NULL | NULL | YES | BTREE | |
| item_catalog_map | 1 | IDX_ACD6184F126F525E | 1 | item_id | A | 15485115 | NULL | NULL | YES | BTREE | |
+------------------+------------+----------------------+--------------+------------------------+-----------+-------------+----------+--------+------+------------+---------+
해결 방법
MySQL ALTER TABLE 성능은 매우 큰 테이블에서 문제가 될 수 있습니다. MySQL은 대부분의 변경은 원하는 새 구조로 빈 테이블을 만들고 이전 테이블의 모든 데이터를 새 테이블에 삽입하고 이전 테이블을 삭제합니다. 특히 메모리가 부족하고 테이블이 크고 인덱스가 많은 경우에는 시간이 오래 걸릴 수 있습니다. 많은 사람들이 완료하는 데 몇 시간 또는 며칠이 걸리는 ALTER TABLE 작업에 대한 경험이 있습니다.
어쨌든 alter table을 진행해야하는 경우 다음 리소스가 도움이 될 수 있습니다.
참조 페이지 https://stackoverflow.com/questions/12774709
반응형
'MySql' 카테고리의 다른 글
MySQL 테이블 열에 하위 문자열을 지정하는 방법 (0) | 2021.01.25 |
---|---|
MySQL SQL에서 GROUP BY와 ORDER BY의 차이점은 무엇입니까 (0) | 2021.01.25 |
MySQL Delete first X lines of a database (0) | 2021.01.25 |
MySQL GROUP_CONCAT 다중 필드 (0) | 2021.01.25 |
MySQL PHP에서 SQL 쿼리를 더 읽기 쉽게 만드는 방법은 무엇입니까? (0) | 2021.01.25 |
댓글