16.6.3.2 MySQL 캐시 레이어로 memcached 사용
memcached를 사용하여 MySQL의 데이터를 캐시하는 경우 응용 프로그램은 데이터베이스에서 데이터를 검색하고 적절한 키 / 값 쌍을 캐시에로드해야합니다. 이후 검색은 캐시에서 직접 실행할 수 있습니다.
MySQL은 쿼리 된 데이터에 대한 자신의 인 메모리 캐싱 메커니즘 ( InnoDB
의 버퍼 풀 과 MySQL 쿼리 캐시 등)가 준비되어 있기 때문에 각 컬럼 값과 행의 캐시에로드 이외의 기능도 사용할 수 합니다. 결합 쿼리에서 여러 테이블에서 검색된 값이나 여러 행에서 모아진 결과 세트 등의 복합 값 캐시에 더 적합합니다.
memcached 인스턴스 내의 정보에 접근하거나 정보의 업데이트에 필요한 보안이 아니기 때문에 캐시의 정보는 기밀이 아닌 데이터에 한정합니다. 컴퓨터에 액세스하는 모든 사용자가 정보를 읽고 표시하고 경우에 따라서는 갱신 할 수 있습니다. 데이터를 안전한 상태로 유지하려면 정보를 캐시하기 전에 암호화합니다. 서버에 연결할 수있는 사용자를 제한하려면 네트워크 액세스를 비활성화하거나 IPTables 또는 유사한 기술을 사용하여 memcached 포트에 대한 액세스를 선택한 호스트의 세트로 제한합니다.
memcached
는 캐시가 원래 설계에 포함되지 않은 경우에도 기존의 응용 프로그램에 도입 할 수 있습니다. 많은 언어와 환경에서 응용 프로그램의 변경은 몇 줄입니다. 먼저 데이터를로드 할 때 캐시에서 읽기를 시도하고 정보가 캐시되지 않은 경우는 옛날 방식으로 대체하여 데이터를 읽고 있으면 그 정보 캐시를 업데이트합니다.
어떤 언어에서도 MySQL 캐시 솔루션으로 memcached를 사용하는 일반적인 절차는 다음과 같습니다.
캐시에서 항목을 요구합니다.
항목이 있으면 해당 항목 데이터를 사용합니다.
항목이 존재하지 않는 경우는 MySQL에서 데이터를로드하고 그 값을 캐시에 저장합니다. 즉, 그 값은 캐시에서 그것을 요구하는 다음 클라이언트에서 사용할 수 있습니다.
이 절차의 흐름도는 그림 16.8 "일반적인 memcached 응용 프로그램의 흐름도" 를 참조하십시오.
그림 16.8 일반적인 memcached 응용 프로그램의 흐름도
memcached 응용 프로그램에 대한 데이터베이스의 모범 사례 적용
MySQL의 데이터를 캐시하는 가장 직접적인 방법은 2 열 테이블을 사용하여 첫 번째 컬럼을 기본 키로 하는 것입니다. memcached 키의 고유성 요구 사항에 대한 데이터베이스 스키마에서 기본 키 및 고유 제약 이 제대로 사용되고 있는지 확인하십시오.
여러 컬럼 값을 결합하여 하나의 memcached 항목 값하려면 값을 그 구성 요소에 쉽게 분석 할 수있는 데이터 형식을 선택하십시오 (예를 들어 숫자 사이에 구분 기호를 사용하는 등).
memcached의 검색에 가장 쉽게지도 할 수있는 쿼리는 WHERE
절이 하나, =
또는 IN
연산자를 사용하는 쿼리입니다. 복잡한 WHERE
절과 <
, >
, BETWEEN
, LIKE
같은 연산자를 사용하는 경우 memcached는 키와 관련된 값을 쉽게 또는 효율적으로 스캔 또는 필터링 할 방법이 없기 때문에 일반적으로 이러한 작업 를 기본 데이터베이스에 대한 SQL 쿼리로 실행합니다.