웹 개발에서 PHP와 MySQL은 두 가지 매우 중요한 도구입니다. PHP는 동적 웹 사이트 및 응용 프로그램을 개발하는 데 사용되는 인기있는 서버 측 스크립팅 언어입니다. MySQL은 데이터를 저장하고 관리하는 데 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. PHP와 MySQL의 조합은 개발자에게 강력한 기능을 제공하지만 성능 최적화 문제에 직면 해 있습니다. 이 기사는 PHP 및 MySQL 인덱스의 데이터 읽기 및 쿼리 캐시에 대한 최적화 전략과 성능에 미치는 영향에 중점을두고 독자에게 특정 코드 예제를 제공합니다.
인덱스는 데이터베이스의 쿼리 속도를 개선하는 데 사용되는 데이터 구조입니다. 특정 참조를 작성하여 레코드를 신속하게 찾아 검색합니다. MySQL에서는 테이블 열에 대한 인덱스를 만들어 특정 열에 대한 쿼리 속도를 높일 수 있습니다.
적절한 인덱스를 만드는 것은 쿼리 성능을 향상시키는 데 핵심입니다. 먼저 인덱스가 쿼리의 열과 일치하는지 확인하십시오. 인덱스가 쿼리 열과 일치하지 않으면 MySQL은 인덱스를 사용할 수 없으며 전체 테이블을 스캔해야하므로 성능 저하가 발생합니다.
샘플 코드 :
<span class="fun">사용자 (이름)에서 색인 IDX_Name을 만듭니다.</span>
조건으로 구성된 여러 열이있는 쿼리 문에서 쿼리의 효율성을 향상시키기 위해 이러한 열이 포함 된 다중 열 인덱스를 만들 수 있습니다.
샘플 코드 :
<span class="fun">사용자 (도시, 국가)에서 색인 IDX_CITY_COUNTRY를 만듭니다.</span>
인덱스는 쿼리 성능을 향상시킬 수 있지만 너무 많은 인덱스가 성능 저하로 이어질 수 있습니다. 데이터를 삽입, 업데이트 또는 삭제할 때마다 인덱스를 업데이트해야합니다. 따라서 불필요한 열에서 인덱스를 생성하는 것이 피해야합니다.
쿼리 캐싱은 MySQL이 제공하는 캐싱 기술입니다. 동일한 쿼리 문의 반복적 인 실행을 피하기 위해 메모리의 쿼리 문의 결과를 메모리에서 캐시 할 수 있습니다. 쿼리 캐싱은 쿼리 속도를 크게 증가시킬 수 있지만 경우에 따라 성능 저하로 이어질 수도 있습니다.
쿼리 캐싱을 사용하려면 먼저 MySQL 서버 구성 파일의 Query_Cache_Type 매개 변수가 1으로 설정되어 있는지 확인하여 쿼리 캐싱이 활성화되었음을 나타냅니다.
샘플 코드 :
<span class="fun">query_cache_type = 1</span>
쿼리 캐시의 적중률은 캐시에서 쿼리 결과를 성공적으로 얻는 비율을 나타냅니다. 적중률이 낮 으면 쿼리 캐시가 완전히 작동하지 않아 최적화되어야 함을 의미합니다.
샘플 코드 :
<span class="fun">'qcache_hits'와 같은 상태를 표시합니다.</span>
<span class="fun">'qcache_inserts'와 같은 상태를 표시합니다.</span>
쿼리 캐시의 크기는 제한되어 있습니다. 캐시 공간이 가득 차면 최근 일반적으로 사용되지 않은 쿼리 결과가 교체됩니다. 따라서 자주 업데이트되는 데이터 테이블의 경우 쿼리 캐시가 열악합니다. 이 문제는 자주 업데이트되는 데이터 테이블을 쿼리 캐시를 사용하지 않으면 해결할 수 있습니다.
샘플 코드 :
<span class="fun">id = 1 사용자에서 sql_no_cache *를 선택하십시오.</span>
인덱스 최적화 및 쿼리 캐시 사용 외에도 PHP 및 MySQL의 성능을 더욱 향상시킬 수있는 성능 최적화를위한 다른 모범 사례가 있습니다.
배치 삽입을 사용하면 대량의 데이터를 삽입해야 할 때 성능이 크게 향상 될 수 있습니다. 배치 삽입은 삽입의 값 절을 명령문으로 사용하여 구현할 수 있습니다.
샘플 코드 :
<span class="fun">사용자 (이름, 연령) 값 ( 'Tom', 20), ( 'Jerry', 25), ( 'Alice', 30)에 삽입;</span>
전처리 명세서는 데이터베이스의 실행 수를 줄여 성능을 향상시킬 수 있습니다. 매개 변수 바인딩 및 쿼리를 수행하기 전에 전처리 명령문을 사용하여 쿼리 문을 데이터베이스 서버로 보내십시오.
샘플 코드 :
<span class="fun">$ stmt = $ mysqli-> repay ( 'select * onge where age>?');</span>
<span class="fun">$ stmt-> bind_param ( 'i', $ age);</span>
<span class="fun">$ stmt-> execute ();</span>
데이터베이스 연결을 작성하고 닫는 것은 시간이 많이 걸리는 작업이며 가능한 한 반복적 인 실행을 피해야합니다. 연결 풀링 기술을 사용하여 데이터베이스 연결의 멀티플렉싱을 최적화 할 수 있습니다.
샘플 코드 :
<span class="fun">$ mysqli = new mysqli ( 'localhost', 'username', 'password', 'database');</span>
이 기사에서는 PHP 및 MySQL 인덱스의 데이터 읽기 및 쿼리 캐시에 대한 최적화 전략에 대해 설명하고 특정 코드 예제를 제공합니다. 인덱스를 합리적으로 생성하고 쿼리 캐싱을 가능하게하며 성능 최적화를위한 모범 사례를 따라 PHP 및 MySQL 성능을 크게 향상시킬 수 있습니다. 독자는이 기사에서 제공하는 최적화 전략과 함께 자신의 요구와 실제 조건에 따라 성능 최적화 작업을 수행 할 수 있습니다.