본문 바로가기
서버/Mysql

[Mysql] Insert Query 성능 최적화

by 코딩히어로 2023. 10. 27.
728x90

MySQL 데이터베이스는 대부분의 웹 응용 프로그램에서 중요한 역할을 합니다.
그런데 대용량 데이터를 빠르게 INSERT하는 것은 때로 어려울 수 있습니다.
이번 포스팅에서는 MySQL에서 INSERT 성능을 향상시키는 여러 가지 방법에 대해 알아보겠습니다.


1. Bulk INSERT 사용

INSERT 작업을 가속화하기 위한 가장 기본적인 방법은 Bulk INSERT를 사용하는 것입니다. Bulk INSERT는 한 번의 쿼리로 여러 개의 레코드를 삽입하는 방법입니다. 이를 위해 INSERT INTO ... VALUES 대신 INSERT INTO ... VALUES, (...), (...), ...와 같은 형태를 사용합니다.

INSERT INTO your_table (column1, column2) VALUES
(value1, value2),
(value3, value4),
...
(valueN, valueM);

2. Multiple-row INSERT문 사용

여러 행을 동시에 삽입하려면 Multiple-row INSERT 문을 사용하세요. 이 방법은 여러 개의 레코드를 단일 INSERT 문으로 처리하여 I/O 부하를 줄일 수 있습니다.

INSERT INTO your_table (column1, column2)
VALUES
(value1, value2),
(value3, value4),
...
(valueN, valueM);

3. 트랜잭션 관리

트랜잭션을 효과적으로 관리하면 INSERT 작업의 성능을 개선할 수 있습니다. 트랜잭션을 커밋하기 전에 가능한 한 많은 INSERT 작업을 모아서 수행하면 성능 향상을 기대할 수 있습니다.

START TRANSACTION;
-- 여러 개의 INSERT 작업 수행
COMMIT;

4. 인덱스 관리

인덱스는 데이터 검색을 빠르게 만드는데 도움을 주지만 INSERT 작업을 느리게 할 수 있습니다. 따라서 INSERT 작업 중에 필요 없는 인덱스를 잠시 비활성화하거나, 인덱스를 최소한으로 유지하는 것이 좋습니다. INSERT가 완료된 후에 다시 인덱스를 활성화하세요.


5. Auto-commit 모드 비활성화

MySQL은 기본적으로 Auto-commit 모드가 활성화되어 있습니다. 이 모드는 각 INSERT 문을 자동으로 커밋합니다. 만약 많은 데이터를 한 번에 삽입해야 한다면, Auto-commit 모드를 비활성화하고 명시적으로 커밋을 관리하는 것이 좋습니다.

SET autocommit = 0;
-- 여러 개의 INSERT 작업 수행
COMMIT;
SET autocommit = 1;

MySQL에서 INSERT 성능을 향상시키는 방법은 다양하며, 상황에 따라 적절한 방법을 선택해야 합니다. 데이터베이스 설계와 운영 환경에 따라 최적의 방법이 다를 수 있으므로 신중하게 고려해야 합니다. 이러한 최적화 기술을 적용하여 데이터베이스 성능을 향상시키고 웹 응용 프로그램의 성능을 향상시킬 수 있을 것입니다.

 

728x90
반응형

댓글