데이터베이스의 INSERT 쿼리는 애플리케이션 성능에 중요한 영향을 미친다. 단일 레코드 삽입은 간단해 보일 수 있지만, 대규모 데이터 삽입이나 빈번한 트랜잭션 환경에서는 최적화가 필요하다. INSERT 쿼리 성능에 영향을 미치는 요소1. 테이블의 인덱스인덱스는 데이터를 빠르게 조회하는 데 유용하지만, INSERT 시에는 추가적인 작업을 발생시킨다.데이터 삽입 시마다 인덱스도 함께 업데이트되어야 하기 때문이다. 2. 제약 조건 (Constraints)FOREIGN KEY, UNIQUE 같은 제약 조건은 데이터를 검증하는 데 추가적인 시간을 소모한다. 3. 트랜잭션 처리트랜잭션은 데이터 일관성을 보장하지만, 과도하게 사용되면 성능을 저하시킬 수 있다. 4. 대량 삽입 vs. 단일 삽입대량의 데이터를 삽입하..
개인 학습
데이터베이스에서 대규모 데이터를 다룰 때, 정렬 작업은 필수적이다. MySQL에서 정렬 작업을 수행하는 주요 메커니즘 중 하나가 바로 filesort이다. 이는 테이블 데이터를 정렬해야 하지만, 해당 작업을 인덱스를 통해 처리하지 못할 경우 사용된다. 이름은 filesort이지만, 정렬이 반드시 디스크에서 수행되는 것은 아니며, 정렬 작업은 메모리에서 시작하고 필요한 경우 디스크로 이동된다. filesort의 동작 원리MySQL이 정렬 작업을 처리할 때, 다음 두 가지 방식 중 하나를 선택한다. 1. 인덱스 기반 정렬ORDER BY나 GROUP BY 절에서 사용된 컬럼이 인덱스에 포함된 경우, 정렬 작업은 인덱스를 활용해 효율적으로 처리된다.filesort가 사용되지 않는다. 2. filesort 기반 ..
데이터베이스에서 ORDER BY 절은 결과를 특정 컬럼 기준으로 정렬할 때 사용된다. 그리고 해당 작업이 효율적으로 이루어지려면, 적절한 인덱스를 사용하는 것이 중요하다. ORDER BY & 인덱스인덱스의 역할인덱스는 데이터베이스에서 검색과 정렬 성능을 향상시키는 데 중요한 역할을 한다. 특히 ORDER BY 절에서 인덱스를 활용하면 불필요한 정렬 작업을 피하고 효율적으로 결과를 반환할 수 있다. 주의점인덱스를 ORDER BY 절에서 사용해야 할 경우 주의할 점이 존재한다.인덱스가 (a,b,c) 인 경우order by b, c인덱스 첫번째 컬럼인 a가 누락되어 사용 불가order by a, c인덱스에 포함된 b 컬럼이 a, c 사이에 미포함되어 사용 불가order by a, c, b인덱스 컬럼과 orde..
데이터베이스에서 쿼리 성능을 최적화하는 방법은 다양하지만, 그중에서도 Covering Index(커버링 인덱스)는 효율적인 데이터 검색을 가능하게 해준다. Covering Index란?Covering Index(커버링 인덱스)는 쿼리에서 요청된 모든 컬럼 값이 인덱스 자체에 포함되어, 데이터가 저장된 테이블을 직접 참조하지 않고도 결과를 반환할 수 있는 인덱스를 의미한다. 동작 방식일반적으로 쿼리를 실행하면, 데이터베이스는 인덱스를 사용해 검색한 후, 필요한 값을 가져오기 위해 테이블 데이터를 다시 참조한다(Back To Table).하지만 Covering Index는 쿼리에서 필요한 모든 데이터를 인덱스에 포함하고 있으므로, 테이블을 참조할 필요가 없어 성능이 크게 향상된다. 예제테이블 생성CREATE..