Loading...
MySQL 9.5 Reference Manual 9.5의 10.2.7 Other Optimization Tips의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
이 섹션에서는 쿼리 처리 속도를 향상시키기 위한 여러 가지 기타 팁을 나열합니다:
애플리케이션이 관련된 업데이트를 수행하기 위해 여러 번 데이터베이스 요청을 하는 경우, 해당 구문들을 하나의 저장 루틴으로 결합하면 성능 향상에 도움이 될 수 있습니다. 비슷하게, 애플리케이션이 여러 열 값이나 대량의 데이터를 기반으로 단일 결과를 계산하는 경우, 계산을 로더블 함수로 결합하면 성능 향상에 도움이 될 수 있습니다. 이렇게 해서 생성된 빠른 데이터베이스 연산은 다른 쿼리, 애플리케이션, 그리고 다른 프로그래밍 언어로 작성된 코드에서도 재사용할 수 있습니다. 자세한 내용은 Section 27.2, “Using Stored Routines” 및 Adding Functions to MySQL을 참조하십시오.
ARCHIVE 테이블에서 발생하는 압축 문제를 해결하려면 OPTIMIZE TABLE을 사용하십시오. Section 18.5, “The ARCHIVE Storage Engine”를 참조하십시오.
가능하다면 리포트를 “라이브(live)”와 “통계(statistical)”로 분류하십시오. 통계 리포트에 필요한 데이터는 라이브 데이터에서 주기적으로 생성되는 요약 테이블에서만 생성되도록 합니다.
행과 열 기반의 테이블 구조에 잘 맞지 않는 데이터가 있는 경우, 해당 데이터를 BLOB 열에 패킹하여 저장할 수 있습니다. 이 경우 애플리케이션에서 정보를 패킹 및 언패킹하는 코드를 제공해야 하지만, 관련 값들의 집합을 읽고 쓰기 위한 I/O 연산을 절약할 수 있습니다.
웹 서버의 경우, 이미지 및 기타 바이너리 에셋은 파일로 저장하고, 파일 자체 대신 그 경로 이름을 데이터베이스에 저장하십시오. 대부분의 웹 서버는 데이터베이스 내용보다 파일을 더 잘 캐시하므로, 일반적으로 파일을 사용하는 것이 더 빠릅니다. (다만 이 경우 백업과 스토리지 문제는 직접 처리해야 합니다.)
매우 높은 속도가 필요하다면 로우 레벨 MySQL 인터페이스를 검토해 보십시오. 예를 들어, MySQL InnoDB 또는 MyISAM 스토리지 엔진에 직접 접근하면 SQL 인터페이스를 사용하는 것에 비해 상당한 속도 향상을 얻을 수 있습니다.
비슷하게, NDBCLUSTER 스토리지 엔진을 사용하는 데이터베이스의 경우, NDB API 사용 가능성을 검토해 볼 수 있습니다(MySQL NDB Cluster API Developer Guide 참조).
복제는 일부 작업에서 성능 이점을 제공할 수 있습니다. 클라이언트 조회를 레플리카에 분산하여 부하를 분산할 수 있습니다. 백업을 수행하는 동안 소스를 느려지지 않게 하려면, 레플리카를 사용하여 백업을 수행할 수 있습니다. Chapter 19, Replication을 참조하십시오.
10.2.6 Optimizing Database Privileges
10.3 Optimization and Indexes