Loading...
MySQL 9.5 Reference Manual 9.5의 17.1.2 Best Practices for InnoDB Tables의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
이 섹션에서는 InnoDB 테이블을 사용할 때의 모범 사례를 설명합니다.
각 테이블마다 가장 자주 조회되는 컬럼 또는 컬럼들의 조합을 사용하여 기본 키를 지정하거나, 명확한 기본 키가 없는 경우 자동 증가 값을 사용하십시오.
동일한 ID 값을 기준으로 여러 테이블에서 데이터를 가져오는 경우에는 가능한 조인을 사용하십시오. 빠른 조인 성능을 위해 조인 컬럼에 외래 키를 정의하고, 각 테이블에서 해당 컬럼들을 동일한 데이터 타입으로 선언하십시오. 외래 키를 추가하면 참조되는 컬럼들이 인덱스 처리되므로 성능이 향상될 수 있습니다. 또한 외래 키는 삭제 및 갱신을 모든 관련 테이블에 전파하고, 부모 테이블에 해당 ID가 존재하지 않는 경우 자식 테이블에 데이터가 삽입되는 것을 방지합니다.
자동 커밋을 끄십시오. 초당 수백 번 커밋을 수행하면 성능 상한이 발생하며, 이는 스토리지 장치의 쓰기 속도에 의해 제한됩니다.
관련된 DML 작업 집합을 START TRANSACTION 및 COMMIT 구문으로 감싸 트랜잭션 단위로 그룹화하십시오. 너무 자주 커밋하는 것은 피해야 하지만, 동시에 수 시간 동안 커밋 없이 실행되는 대규모 INSERT, UPDATE, DELETE 구문 배치를 실행하는 것도 피해야 합니다.
LOCK TABLES 구문을 사용하지 마십시오. InnoDB는 여러 세션이 동시에 동일한 테이블을 읽고 쓰도록 하면서도, 신뢰성과 높은 성능을 유지할 수 있습니다. 일련의 행에 대한 배타적 쓰기 액세스가 필요한 경우, 갱신하려는 행만 잠그기 위해 SELECT ... FOR UPDATE 구문을 사용하십시오.
테이블의 데이터와 인덱스를 시스템 테이블스페이스 대신 별도의 파일에 저장하기 위해 innodb_file_per_table 변수를 활성화하거나 일반 테이블스페이스를 사용하십시오. innodb_file_per_table 변수는 기본적으로 활성화되어 있습니다.
데이터 및 액세스 패턴이 InnoDB 테이블 또는 페이지 압축 기능에 의해 이점을 얻는지 평가하십시오. InnoDB 테이블은 읽기/쓰기 기능을 유지하면서 압축할 수 있습니다.
사용하고자 하지 않는 스토리지 엔진으로 테이블이 생성되는 것을 방지하기 위해, --sql_mode=NO_ENGINE_SUBSTITUTION 옵션을 사용하여 서버를 실행하십시오.
17.1.1 Benefits of Using InnoDB Tables
17.1.3 Verifying that InnoDB is the Default Storage Engine