백엔드 개발 PHP 튜토리얼 [codeigniter 5], 쿼리 캐시

[codeigniter 5], 쿼리 캐시

Jul 30, 2016 pm 01:31 PM
cache gt query this

데이터베이스 캐시 클래스

데이터베이스 캐시 클래스를 사용하면 데이터베이스 쿼리 결과를 텍스트 파일로 저장하여 데이터베이스 액세스를 줄일 수 있습니다.

중요

캐싱이 활성화되면 이 클래스는 데이터베이스 드라이버에 의해 자동으로 로드됩니다. 수동으로 로드하지 마십시오.

중요

모든 쿼리 결과를 캐시할 수 있는 것은 아닙니다. 이 페이지의 내용을 주의 깊게 읽어보시기 바랍니다.

캐시 활성화

캐시 활성화에는 세 단계가 필요합니다.

  • 캐시 파일을 저장하기 위해 서버에 쓰기 가능한 디렉터리를 만듭니다.
  • application/config/database.php 파일의 cashdir 매개변수를 통해 디렉토리 경로를 설정합니다.
  • application/config/database.php 파일의 캐시_on 매개변수를 TRUE로 설정하여 다음을 사용할 수도 있습니다. 다음 방법은 수동으로 구성됩니다.

캐싱이 활성화되면 페이지가 로드될 때마다 페이지에 데이터베이스 쿼리가 포함되어 있는 한 자동으로 캐시됩니다.

캐싱은 어떻게 작동하나요?

CodeIgniter의 쿼리 캐싱 시스템은 페이지를 방문할 때 자동으로 실행됩니다. 캐싱이 활성화된 경우 페이지가 처음 로드될 때 쿼리 결과 개체가 직렬화되어 서버의 텍스트 파일에 저장됩니다. 다음에 해당 페이지에 접속하면 데이터베이스에 접속하지 않고 바로 캐시 파일을 사용하게 됩니다. 이렇게 하면 캐시된 페이지에서는 데이터베이스 접속 권한이 0으로 떨어지게 됩니다.

읽기 유형(SELECT) 쿼리만 결과를 생성하므로 캐시할 수 있습니다. 쓰기 유형 쿼리(INSERT, UPDATE 등)는 결과를 생성하지 않으므로 캐시되지 않습니다.

캐시 파일은 만료되지 않으며 모든 쿼리는 삭제하지 않는 이상 캐시되어 있는 한 계속 사용할 수 있습니다. 특정 페이지의 캐시를 삭제하거나 전체 캐시를 지울 수 있습니다. 일반적으로 특정 이벤트(데이터베이스에 데이터가 추가되는 등)가 발생할 때 다음 기능을 사용하여 캐시를 지울 수 있습니다.

캐싱이 사이트 성능을 향상시킬 수 있나요?

캐싱으로 성능을 향상시킬 수 있는지 여부는 여러 요인에 따라 달라집니다. 낮은 부하에서 고도로 최적화된 데이터베이스를 사용하는 경우 성능 향상이 나타나지 않을 수 있습니다. 데이터베이스에 과도하게 액세스하는 경우 파일 시스템에 오버헤드가 너무 많지 않다면 캐싱 후 성능이 향상될 수 있습니다. 한 가지 기억해야 할 점은 캐싱이 데이터베이스 액세스에서 파일 시스템 액세스까지 데이터를 얻는 방식을 단순히 변경한다는 것입니다.

예를 들어 일부 클러스터 서버 환경에서는 너무 빈번한 파일 시스템 작업으로 인해 캐싱이 실제로 해로울 수 있습니다. 캐싱은 공유된 단일 서버 환경에서만 유용할 수 있습니다. 안타깝게도 데이터베이스를 캐시해야 하는지 여부에 대한 질문에 대한 단일 답변은 없으며 모두 상황에 따라 다릅니다.

캐시 파일은 어떻게 저장되나요?

CodeIgniter는 각 쿼리를 자체 캐시 파일에 캐시하며, 이 캐시 파일은 호출된 컨트롤러 메서드에 따라 각 하위 디렉터리로 추가로 구성됩니다. 더 정확하게 말하면 하위 디렉터리의 이름은 URI의 처음 두 세그먼트(컨트롤러 이름 및 메서드 이름)를 사용하여 지정됩니다.

예를 들어 블로그 컨트롤러와 세 가지 다른 쿼리가 포함된 댓글 방법이 있습니다. 캐싱 시스템은 blog+comments라는 디렉터리를 만들고 이 디렉터리에 세 개의 캐시 파일을 생성합니다.

URI에 동적 쿼리(예: 페이징 사용 시)가 포함된 경우 각 쿼리 인스턴스는 자체 별도의 캐시 파일을 생성하므로 결국 캐시 파일 수는 사용자의 쿼리 수와 같을 수 있습니다. 페이지에서는 이런 일이 여러 번 발생합니다.

캐시 파일 관리

캐시 파일은 만료되지 않으므로 애플리케이션에서 캐시를 삭제하는 메커니즘이 있어야 합니다. 예를 들어 a 블로그에서는 사용자가 새 댓글을 제출할 때마다 해당 댓글을 표시하는 컨트롤러 메서드에 해당하는 캐시 파일을 삭제해야 합니다. 캐시된 데이터를 삭제하는 방법에는 두 가지가 있습니다.

모든 데이터베이스 메소드가 캐시와 호환되는 것은 아닙니다.

마지막으로, 캐시된 결과 객체는 결과 객체의 단순화된 버전일 뿐이라는 점을 지적해야 합니다. , 결과를 쿼리하는 여러 가지 방법을 사용할 수 없습니다.

아래 나열된 메서드는 캐시된 결과 개체에 사용할 수 없습니다.

  • num_fields()
  • field_names()
  • field_data()
  • free_result()

동시에 result_id와 conn_id 두 ID는 실시간 데이터베이스 작업에만 적합하므로 사용할 수 없습니다.

함수 참조

$this->db->cache_on() / $this->db->cache_off()

캐싱을 수동으로 활성화/비활성화하는 경우 특정 쿼리를 캐시하지 않으려는 경우 이 두 가지 방법이 유용할 수 있습니다. 예:

// Turn caching on
$this->db->cache_on();
$query = $this->db->query("SELECT * FROM mytable");

// Turn caching off for this one query
$this->db->cache_off();
$query = $this->db->query("SELECT * FROM members WHERE member_id = '$current_user'");

// Turn caching back on
$this->db->cache_on();
$query = $this->db->query("SELECT * FROM another_table");
로그인 후 복사

$this->db->cache_delete()

업데이트할 때 특정 페이지에 대한 캐시 파일을 삭제합니다. 나중에 데이터베이스를 지워야 할 때 유용합니다.

캐시 시스템은 귀하가 방문하는 페이지의 URI에 따라 해당 캐시 파일에 캐시를 기록합니다. 예를 들어 example.com/index.php/blog/comments 페이지를 방문하는 경우 캐시는 다음과 같습니다. 시스템은 캐시 파일을 blog+comments 디렉토리에 저장합니다. 이러한 캐시 파일을 삭제하려면 다음을 사용할 수 있습니다.

$this->db->cache_delete('blog', 'comments');
로그인 후 복사

如果你没提供任何参数,将会清除当前 URI 对应的缓存文件。

$this->db->cache_delete_all()

清除所有的缓存文件,例如:

$this->db->cache_delete_all();
로그인 후 복사

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了[codeigniter 五]、查询缓存,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

화웨이 GT3 Pro와 GT4의 차이점은 무엇입니까? 화웨이 GT3 Pro와 GT4의 차이점은 무엇입니까? Dec 29, 2023 pm 02:27 PM

많은 사용자들이 스마트 시계를 선택할 때 Huawei 브랜드를 선택하게 됩니다. 그 중 Huawei GT3pro와 GT4가 가장 인기 있는 선택입니다. 두 제품의 차이점을 궁금해하는 사용자가 많습니다. Huawei GT3pro와 GT4의 차이점은 무엇입니까? 1. 외관 GT4: 46mm와 41mm, 재질은 유리 거울 + 스테인레스 스틸 본체 + 고해상도 섬유 후면 쉘입니다. GT3pro: 46.6mm 및 42.9mm, 재질은 사파이어 유리 + 티타늄 본체/세라믹 본체 + 세라믹 백 쉘입니다. 2. 건강한 GT4: 최신 Huawei Truseen5.5+ 알고리즘을 사용하면 결과가 더 정확해집니다. GT3pro: ECG 심전도, 혈관 및 안전성 추가

입사하고 나서 Cache가 뭔지 이해하게 됐어요 입사하고 나서 Cache가 뭔지 이해하게 됐어요 Jul 31, 2023 pm 04:03 PM

실제로는 이렇습니다. 당시 리더가 perf 하드웨어 성능 모니터링 작업을 지시했습니다. perf를 사용하는 동안 perf list 명령을 입력했는데 다음 정보가 표시되었습니다. 내 작업은 이러한 캐시 이벤트를 활성화하는 것입니다. 하지만 요점은 이러한 누락과 로드가 무엇을 의미하는지 전혀 모른다는 것입니다.

수정: Windows 11에서 캡처 도구가 작동하지 않음 수정: Windows 11에서 캡처 도구가 작동하지 않음 Aug 24, 2023 am 09:48 AM

Windows 11에서 캡처 도구가 작동하지 않는 이유 문제의 근본 원인을 이해하면 올바른 솔루션을 찾는 데 도움이 될 수 있습니다. 캡처 도구가 제대로 작동하지 않는 주요 이유는 다음과 같습니다. 초점 도우미가 켜져 있습니다. 이렇게 하면 캡처 도구가 열리지 않습니다. 손상된 응용 프로그램: 캡처 도구가 실행 시 충돌하는 경우 응용 프로그램이 손상되었을 수 있습니다. 오래된 그래픽 드라이버: 호환되지 않는 드라이버가 캡처 도구를 방해할 수 있습니다. 다른 응용 프로그램의 간섭: 실행 중인 다른 응용 프로그램이 캡처 도구와 충돌할 수 있습니다. 인증서가 만료되었습니다. 업그레이드 프로세스 중 오류로 인해 이 문제가 발생할 수 있습니다. 이 문제는 대부분의 사용자에게 적합하며 특별한 기술 지식이 필요하지 않습니다. 1. Windows 및 Microsoft Store 앱 업데이트

캐시를 사용하면 컴퓨터 속도가 빨라지는 이유는 무엇입니까? 캐시를 사용하면 컴퓨터 속도가 빨라지는 이유는 무엇입니까? Dec 09, 2020 am 11:28 AM

캐시를 사용하면 CPU의 대기 시간이 단축되므로 컴퓨터 속도가 향상될 수 있습니다. 캐시는 CPU와 메인 메모리 DRAM 사이에 위치한 작지만 고속의 메모리입니다. 캐시의 기능은 CPU 데이터 입출력 속도를 높이는 것입니다. 캐시는 용량은 작지만 속도가 빠르며, 메모리 속도는 낮지만 용량이 큽니다. 시스템 성능은 향상됩니다. 크게 개선되었습니다.

끌어서 놓기를 통해 파워 쿼리에서 여러 열의 순서를 바꾸는 방법 끌어서 놓기를 통해 파워 쿼리에서 여러 열의 순서를 바꾸는 방법 Mar 14, 2024 am 10:55 AM

이 문서에서는 끌어서 놓기를 통해 PowerQuery에서 여러 열의 순서를 바꾸는 방법을 보여줍니다. 다양한 소스에서 데이터를 가져올 때 열의 순서가 원하는 순서가 아닌 경우가 많습니다. 열을 다시 정렬하면 분석 또는 보고 요구 사항에 맞는 논리적 순서로 열을 정렬할 수 있을 뿐만 아니라 데이터의 가독성이 향상되고 필터링, 정렬, 계산 수행 등의 작업 속도가 빨라집니다. Excel에서 여러 열을 다시 정렬하는 방법은 무엇입니까? Excel에서 열을 재정렬하는 방법에는 여러 가지가 있습니다. 열 머리글을 선택하고 원하는 위치로 끌기만 하면 됩니다. 그러나 이 접근 방식은 많은 열이 포함된 대규모 테이블을 처리할 때 번거로울 수 있습니다. 열을 보다 효율적으로 다시 정렬하려면 향상된 쿼리 편집기를 사용할 수 있습니다. 쿼리 개선

캐시란 무엇입니까? 캐시란 무엇입니까? Nov 25, 2022 am 11:48 AM

캐시(Cache)는 캐시 메모리(Cache Memory)라고 하며 중앙처리장치와 메인 메모리 사이에 있는 고속 소용량 메모리로 일반적으로 고속 SRAM으로 구성된다. CPU와 메모리 사이의 속도 차이가 시스템 성능에 미치는 영향을 줄이거 나 제거합니다. 캐시 용량은 작지만 빠르며, 메모리 속도는 낮지만 용량이 큽니다. 스케줄링 알고리즘을 최적화하면 시스템 성능이 크게 향상됩니다.

React Query 데이터베이스 플러그인: 데이터를 가져오고 내보내는 방법 React Query 데이터베이스 플러그인: 데이터를 가져오고 내보내는 방법 Sep 26, 2023 pm 05:37 PM

ReactQuery 데이터베이스 플러그인: 데이터 가져오기 및 내보내기를 구현하는 방법에는 특정 코드 예제가 필요합니다. 프론트 엔드 개발에서 ReactQuery가 널리 적용됨에 따라 점점 더 많은 개발자가 이를 사용하여 데이터를 관리하기 시작했습니다. 실제 개발에서는 데이터를 로컬 파일로 내보내거나 로컬 파일의 데이터를 데이터베이스로 가져와야 하는 경우가 많습니다. 이러한 기능을 보다 편리하게 구현하기 위해서는 ReactQuery 데이터베이스 플러그인을 사용할 수 있습니다. ReactQuery 데이터베이스 플러그인은 일련의 메소드를 제공합니다.

nginx 역방향 프록시 캐싱 튜토리얼. nginx 역방향 프록시 캐싱 튜토리얼. Feb 18, 2024 pm 04:48 PM

다음은 nginx 역방향 프록시 캐싱에 대한 튜토리얼입니다. nginx 설치: sudoaptupdatesudoaptinstallnginx 역방향 프록시 구성: nginx 구성 파일 열기: sudonano/etc/nginx/nginx.conf 캐싱을 활성화하려면 http 블록에 다음 구성을 추가합니다. http{...proxy_cache_path /var/cache/nginxlevels=1:2keys_zone=my_cache:10mmax_size=10ginactive=60muse_temp_path=off;proxy_cache

See all articles