본문 바로가기
MySql

MySQL 변경 테이블 쿼리에 대해 MySQL이 매우 느림

by 베이스 공부 2021. 1. 25.
반응형

열을 추가하기 위해이 테이블을 업데이트하는 데 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

 

 

반응형

댓글