>데이터 베이스 >MySQL 튜토리얼 >mysql 데이터베이스 쿼리 캐싱의 원리는 무엇입니까

mysql 데이터베이스 쿼리 캐싱의 원리는 무엇입니까

coldplay.xixi
coldplay.xixi원래의
2020-10-26 11:58:113762검색

mysql 데이터베이스 쿼리 캐싱의 원리는 다음과 같습니다. 1. SELECT 작업의 결과 집합과 SQL 문을 캐시합니다. 키는 sql이고 값은 쿼리 결과 집합입니다. 2. 새로운 SELECT 문이 도착하면 이를 사용합니다. sql을 캐시에서 쿼리할 키로 사용합니다. 일치하는 항목이 있으면 캐시된 결과 집합이 반환됩니다.

mysql 데이터베이스 쿼리 캐싱의 원리는 무엇입니까

mysql 데이터베이스 쿼리 캐시의 원리는 다음과 같습니다.

Overview

쿼리 캐시(QC)는 SELECT 문과 이들이 생성하는 데이터 결과를 저장합니다. 할 일이 없어서 이 주제를 정리해서 메모를 하려고 합니다!

수집할 가치가 있는 mysql 데이터베이스 쿼리 캐시에 대한 매우 자세한 요약

mysql 데이터베이스 쿼리 캐싱의 원리는 무엇입니까

작동 원리

  • SELECT 작업의 결과 집합과 SQL 문을 캐시합니다. 키는 sql, 값은 쿼리 결과 집합입니다.

  • 새 SELECT 문이 도착하면 이 SQL을 캐시를 쿼리하는 키로 사용합니다. 일치하는 경우 캐시된 결과 집합을 반환합니다.

  • 일치 기준: 캐시된 SQL과 정확히 동일한지 여부 SQL의 문자는 대소문자를 구분하며 중간에 있는 공백은 키-값 구조를 저장하는 것으로 간단히 이해될 수 있습니다. 일치 시에는 Java의 String equals(를 사용합니다. ) 예를 들면 다음과 같습니다.

  • 사용자에서 나이를 선택하면 대소문자가 다르기 때문에 일치하지 않습니다.

  • 사용에서 나이를 선택하고 사용자에서 나이를 선택하면 공백이 다르기 때문에 일치하지 않습니다.

  • SQL 양쪽의 공백은 무시할 수 있으며, 키가 수정된 것으로 간주할 수 있습니다. Trim 작업 후 같음 비교를 수행합니다.

mysql 설정 매개변수 보기

실행

'%query_cache%'와 같은 변수 표시;

mysql 데이터베이스 쿼리 캐싱의 원리는 무엇입니까

관련 매개변수를 볼 수 있습니다:

  • query_cache_type: 0-활성화하지 않음 쿼리 캐시; 1- 활성화, 2- 활성화, 기본값은 0입니다.

  • query_cache_size: 캐시 영역의 전체 크기를 설정합니다. 허용되는 query_cache_size의 최소값은 40K, 기본값은 1M, 권장 설정은 64M/입니다. 128M;

  • query_cache_limit: 제한 캐시 영역에 캐시할 수 있는 단일 쿼리 레코드 세트의 최대 크기는 1M

  • query_cache_type 입니다. 쿼리 캐시 요구 사항이 충족되는 한, 클라이언트의 쿼리 문과 레코드 세트는 SQL_NO_CACHE가 SQL에 추가되면 캐시되지 않습니다. , 클라이언트의 쿼리 문과 레코드 세트를 캐시할 수 있습니다.

  • 캐시 사용량 보기

'%Qcache%%'와 같은 상태 표시;

관련 매개변수를 볼 수 있습니다:

mysql 데이터베이스 쿼리 캐싱의 원리는 무엇입니까

Qcache_hits: 캐시 적중 횟수

  • Qc; ache_insert : 캐시 삽입 수에 캐시당 1을 추가합니다. 이는 캐시 수가 아닙니다.

  • 쿼리 캐시를 켜세요.

옵션을 query_cache_type = 1로 설정하고 query_cache_size = 67108864를 설정하세요.

참고: query_cache_size 값은 100MB 이내로 설정됩니다. MySQL에서는 쿼리 캐시가 전역 잠금으로 제어되며 쿼리 캐시의 메모리 블록이 업데이트될 때마다 잠금이 필요합니다.

쿼리 캐싱을 끄세요

옵션 query_cache_type = 0으로 설정하고 query_cache_size = 0으로 설정하세요.

적용 가능한 시나리오

일부 정적 페이지나 페이지 내 특정 정보가 자주 변경되지 않는 등 동일한 문이 자주 제출되고 테이블 데이터가 자주 변경되지 않는 시나리오에서 사용됩니다. .

쿼리 캐시는 최신 데이터 결과를 캐시해야 하기 때문에 테이블 데이터가 변경되면(삽입, 업데이트, 삭제 또는 데이터 변경이 발생할 수 있는 기타 작업) 쿼리 캐시가 새로 고쳐집니다. 따라서 업데이트 빈도가 매우 낮고 읽기 전용 쿼리 빈도가 매우 높은 시나리오에서는 쿼리 캐시를 켜는 것이 더 유리합니다.

해당되지 않는 시나리오

쿼리 캐시에서는 SQL 문, 연결된 데이터베이스, 프로토콜 버전, 문자 집합 및 기타 요소가 모두 영향을 미치므로 두 SQL 요청이 정확히 동일해야 합니다. 다음은 쿼리 캐싱을 적용할 수 없는 몇 가지 시나리오입니다.

SQL이 프로시저, 함수, 트리거, 이벤트에서 호출되거나 이러한 결과를 참조합니다. 예: BENCHMARK(), CURDATE(), CURRENT_TIME(), CURRENT_TIMESTAMP(), NOW(), SLEEP(), CONNECTION_ID(), CURRENT_DATE(), CURRENT_USER(), PASSWORD(), RAND(), UUID(), ENCRYPT(), LAST_INSERT_ID() 등

  • 쿼리에는 mysql, information_schema 또는performance_schema가 포함됩니다.

  • SELECT...LOCK IN SHARE MODE, SELECT...FOR UPDATE, SELECT..INTO OUTFILE/DUMPFILE, SELECT * FROM... WHERE autoincrement_col IS NULL과 유사한 쿼리

  • SELECT 실행 계획은 다음을 사용합니다.

  • SELECT 1+2와 같은 쿼리가 생성되었습니다.

  • SQL_NO_CACHE 키워드가 SELECT 문에 존재합니다. .

  • 더 많은 관련 무료 학습 권장 사항:
  • mysql 튜토리얼
  • (동영상)

    위 내용은 mysql 데이터베이스 쿼리 캐싱의 원리는 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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