mysql 데이터베이스 쿼리 캐싱의 원리는 다음과 같습니다. 1. SELECT 작업의 결과 집합과 SQL 문을 캐시합니다. 키는 sql이고 값은 쿼리 결과 집합입니다. 2. 새로운 SELECT 문이 도착하면 이를 사용합니다. sql을 캐시에서 쿼리할 키로 사용합니다. 일치하는 항목이 있으면 캐시된 결과 집합이 반환됩니다.
mysql 데이터베이스 쿼리 캐시의 원리는 다음과 같습니다.
Overview
쿼리 캐시(QC)는 SELECT 문과 이들이 생성하는 데이터 결과를 저장합니다. 할 일이 없어서 이 주제를 정리해서 메모를 하려고 합니다!
수집할 가치가 있는 mysql 데이터베이스 쿼리 캐시에 대한 매우 자세한 요약
작동 원리
SELECT 작업의 결과 집합과 SQL 문을 캐시합니다. 키는 sql, 값은 쿼리 결과 집합입니다.
새 SELECT 문이 도착하면 이 SQL을 캐시를 쿼리하는 키로 사용합니다. 일치하는 경우 캐시된 결과 집합을 반환합니다.
일치 기준: 캐시된 SQL과 정확히 동일한지 여부 SQL의 문자는 대소문자를 구분하며 중간에 있는 공백은 키-값 구조를 저장하는 것으로 간단히 이해될 수 있습니다. 일치 시에는 Java의 String equals(를 사용합니다. ) 예를 들면 다음과 같습니다.
사용자에서 나이를 선택하면 대소문자가 다르기 때문에 일치하지 않습니다.
사용에서 나이를 선택하고 사용자에서 나이를 선택하면 공백이 다르기 때문에 일치하지 않습니다.
mysql 설정 매개변수 보기
실행 '%query_cache%'와 같은 변수 표시; 관련 매개변수를 볼 수 있습니다:캐시 사용량 보기
관련 매개변수를 볼 수 있습니다:
Qcache_hits: 캐시 적중 횟수쿼리 캐시를 켜세요.
참고: 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 데이터베이스 쿼리 캐싱의 원리는 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!