programing

PHP MySQL 결과를 캐시하는 가장 좋은 방법은?

minimums 2023. 10. 20. 13:31
반응형

PHP MySQL 결과를 캐시하는 가장 좋은 방법은?

저는 현재 PHP 프레임워크(오리지널, 알고 있음)를 구축하고 있으며, 이를 위한 최적화 기능을 개발하고 있습니다.MySQL 결과를 캐싱하는 가장 좋은 방법은 무엇입니까?일부 사람들이 먼저 MySQL 등을 최적화하라고 말할 것이라는 것을 알고 있지만, 논쟁을 위해 내 쿼리는 실행하는 데 1분이 걸리고 가능한 한 최적화되어 있습니다.

페이지가 로드될 때마다 쿼리를 다시 실행할 필요가 없도록 결과를 PHP로 캐시하는 가장 좋은 방법은 무엇입니까?

제 첫번째 생각은 결과를 반복해서 배열에 추가하는 겁니다파일에 저장할 수 있습니다.이제 캐시 생성은 한 번만 수행되므로 어레이에 100만 개의 결과가 포함되어 있으면 직렬화 기능의 오버헤드를 감당할 수 있습니다.그러나 캐시된 파일을 로드한 다음 모든 페이지 로드에서 배열을 비활성화하면 성능에 영향을 미칠 수 있습니다.

그렇다면 결과를 직렬화하여 파일에 기록하는 대신 PHP로 읽을 수 있는 배열로 결과를 표시하는 방식으로 파일에 기록하는 것이 캐싱하는 동안 더 나은 아이디어일까요?따라서 로드할 때 비직렬화 오버헤드가 발생하지 않습니다.

느린 쿼리를 자주 사용할 수 있도록 캐시하는 다른(읽기: 더 빠른) 방법이 있습니까?

만약 이것이 직선 배열이라면, 직렬화가 아닌 var_export()를 사용할 수 있습니다(적절한 ""로 래핑하여 .php 파일에 기록한 다음, 스크립트에 포함합니다).htdocs 트리 외부에 기록할 수 있는 경우 가장 효과적이며, 메모리 캐시가 과도하다고 간주하는 대용량 데이터에만 매우 적합합니다.

멤캐치.

저는 대부분의 상황에서 어떤 일이 일어나고 있는지 더 잘 파악하기 위해 항상 한 번쯤은 제 자신만의 해결책을 만들어 보려고 노력합니다.제가 직접 캐싱 솔루션을 만들었을 때, 저는 기본적으로 당신이 말하는 것을 수행했습니다.

// serialize an array of all results
$serialzedData = serialize($resultData);

// set TTL (60 seconds) and create cache filename with timestamp
$ttl = 60;
$cacheFilename = $ttl . '_' . time() . '_' . md5($sqlQuery)

// dump
file_put_contents($cacheFilename, $serializedData);

쿼리를 실행하기 전에 검색합니다.cache일치하는 쿼리 해시가 있는 파일의 디렉토리입니다.만약 그렇다면, 시험해 봅니다.timestamp + ttl <= current_time, true이면, serialize되지 않은 파일 내용을 반환합니다.그렇지 않으면 덮어씁니다.

질의 결과를 Mysql 캐시, mysql 쿼리 캐시 크기를 늘려야 할까요?아니면 독립 실행형 테이블에서 큰 쿼리의 캐시 결과?

Memcache용 Google, 당신을 올바른 방향으로 인도할 것입니다.

언급URL : https://stackoverflow.com/questions/5327160/php-best-way-to-cache-mysql-results

반응형