>  기사  >  Java  >  Java 캐싱 기술 소개

Java 캐싱 기술 소개

黄舟
黄舟원래의
2017-02-06 16:14:431305검색

1. 캐시란
1. 캐시는 자주 사용하는 데이터를 복사하여 빠른 액세스를 가능하게 하는 특수 메모리 하위 시스템입니다.
2. 속도 차이 하드웨어/소프트웨어 간의 데이터 전송 속도 차이를 조정하는 데 사용되는 구조를 캐시

2. 캐시 분류
1. 웹 애플리케이션 기반 시스템 아키텍처 다이어그램

Java 캐싱 기술 소개

2. 액세스 속도를 높이기 위해 시스템 아키텍처의 여러 수준 간에 캐시가 존재할 수 있습니다.

  • 운영 체제 디스크 캐시 -> 디스크 기계적 작업

  • 데이터베이스 캐시 -> 파일 시스템 I/O 감소

  • 애플리케이션 캐시 -> >

  • 웹 서버 캐시 -> 애플리케이션 서버 요청 감소

  • 클라이언트 브라우저 캐시 -> 웹사이트 방문 감소

3. 운영체제 캐시

1. 파일 시스템에서 제공하는 디스크 캐시: 운영체제가 자주 접근하는 파일의 내용을 메모리에 넣어두고 파일 시스템에서 관리하게 됩니다
2. 응용 프로그램이 파일 시스템을 통해 디스크 파일에 액세스하면 운영 체제가 디스크 캐시에서 파일 내용을 읽어 파일 읽기 속도를 높입니다.
3. 디스크 캐시는 운영 체제에서 자동으로 관리하며 일반적으로 사용되지 않습니다. 그러나 운영 체제가 디스크 캐시 역할을 하고 파일 읽기 속도를 가속화하기 위해 가능한 한 많은 메모리를 사용할 수 있도록 충분한 물리적 메모리가 보장되어야 합니다.
4. 특수 응용 프로그램은 파일 시스템 디스크 캐시에 대한 요구 사항이 높으며, 이는 파일 시스템 디스크 캐시를 우회하고 디스크 파티션에 직접 접근하여 디스크를 직접 구현
5. 캐시 전략

  • 오라클의 원시 장치(베어 장치) - 파일 시스템 직접 폐기

  • MySQL의 InnoDB: innodb_flush_method = O_DIRECT

4. 데이터베이스 캐시


    데이터베이스는 대개 기업용 애플리케이션 시스템의 핵심 부분입니다
  • 데이터베이스에 저장되는 데이터의 양은 대개 매우 많습니다
  • 데이터베이스 쿼리 작업은 일반적으로 매우 빈번합니다. 때로는 매우 복잡합니다
  • 위의 이유로 인해 데이터베이스 쿼리로 인해 디스크 I/O 읽기 작업이 매우 빈번하게 발생하여 CPU가 정지되고 대기하게 됩니다. 데이터베이스 성능이 매우 낮습니다
  • 2. 캐시 전략
a. Query Cache


    SQL을 사용하여 쿼리 결과 집합을 캐시합니다. 키 값
  • 쿼리에 포함된 테이블 레코드가 수정되면 캐시는 자동으로 삭제됩니다.
  • 적절한 쿼리 캐시를 설정하면 데이터베이스 성능이 크게 향상됩니다.
  • 쿼리 캐시가 클수록 Qquery 캐시가 너무 커지면 메모리가 낭비됩니다.
  • MySQL: query_cache_size= 128M
  • b. 데이터 버퍼

    데이터 버퍼는 데이터베이스 데이터입니다. 메모리의 컨테이너
  • 데이터 버퍼의 적중률이 데이터베이스의 성능을 직접적으로 결정합니다
  • 데이터 버퍼가 클수록 좋습니다. 많을수록 좋습니다
  • MySQL의 InnoDB 버퍼: innodb_buffer_pool_size = 2G
  • MySQL에서는 서버 물리적 용량의 60~80%로 버퍼 풀을 열 것을 권장합니다. 메모리
  • 5. 애플리케이션 캐시
1. 객체 캐시


    Hibernate, Transparent Access, 비즈니스 코드를 명시적으로 프로그래밍하지 않고 데이터베이스 쿼리 결과를 세밀하게 캐싱하는 것이 가장 문제가 없는 캐싱 전략입니다.
  • 소프트웨어 구조가 요구 사항에 따라 특별히 설계된 경우 O/R 매핑 프레임워크, 객체 캐싱을 사용하면 웹 시스템의 데이터베이스 접근 요청이 크게 줄어듭니다
  • 잘 설계된 데이터베이스 구조와 객체 캐시를 사용하면 매우 높은 성능을 제공할 수 있습니다. 객체 캐시는 OLTP(온라인 트랜잭션 처리) 애플리케이션에 적합합니다
  • 2. 쿼리 캐시

    는 다음과 유사하게 데이터베이스 쿼리 결과 집합을 캐시합니다. 데이터베이스 쿼리 캐시
  • 가 적용 가능합니다. 시간이 많이 걸리지만 적시성 요구 사항이 낮은 일부 시나리오에 적합합니다. 쿼리 캐싱과 객체 캐싱은 서로 다른 시나리오에 적용 가능하며 서로 보완적이다
  • 쿼리 결과 집합에 포함된 테이블 레코드가 수정되면 캐시 삭제에 주의해야 한다
  • 3. 페이지 캐싱
a. 기능


    페이지에 대한 캐시 기술은 데이터베이스 서버에 대한 부담을 줄일 수 있을 뿐만 아니라 또한 애플리케이션 서버에 대한 부담을 줄입니다
  • 좋은 페이지 캐싱은 페이지 렌더링 속도를 크게 향상시킬 수 있습니다
  • 페이지 캐싱의 어려움은 정리 방법입니다. 만료된 캐시 업
  • b. 카테고리
I. 동적 페이지 정적화

  • 템플릿 기술을 사용하여 한 번 방문한 동적 페이지에서 정적 HTML을 생성하고 동시에 페이지 링크를 수정하면 다음 요청에서 정적 링크 페이지에 직접 액세스합니다

  • 동적 페이지 정적 기술은 인터넷 CMS/뉴스 웹 애플리케이션에서 널리 사용되지만 Discuz와 같이 이 기술을 사용하는 BBS 애플리케이션도 있습니다!

  • 권한을 수행할 수 없습니다. 확인하고 개인화된 정보를 표시할 수 없습니다

  • AJAX 요청을 사용하여 정적 동적 페이지의 일부 단점을 보완할 수 있습니다

II, 서블릿 캐싱

  • URL 액세스로 반환된 페이지 결과를 캐시합니다. 뉴스 보도와 같은 대략적인 페이지 캐싱에 적합합니다.

  • 권한 확인 가능

  • OScache는 간단한 서블릿 캐시를 제공합니다(web.Page 내부 캐싱의 구성을 통해

  • 동적 페이지의 캐시 로컬 조각 콘텐츠, 일부 개인화되었지만 적합하지만 자주 업데이트되지 않는 페이지(예: 블로그)

OSCache는 간단한 페이지 캐싱을 제공합니다

  • JSP 태그를 직접 확장하여 페이지의 부분 캐싱을 구현할 수 있습니다. 페이지

  • 6. 웹 서버 측 캐싱

  • squid/nginx 등 프록시 서버 모드 기반 웹 서버 측 캐싱

웹 서버 캐싱 기술을 사용하여 CDN(Content Delivery Network Content Delivery Network) 구현

  • 국내 주류 포털 사이트에서 널리 사용됩니다

  • 프로그래밍이 필요하지 않으나 보도자료 사이트에 한하며, 페이지 실시간 요구사항이 높지 않음

  • 7. 캐시

  • AJAX 호출을 사용할 때 브라우저 측에서 데이터베이스를 캐시하세요

현재 페이지를 떠나거나 새로 고치지 않는 한 현재 페이지에서 캐시된 데이터를 직접 읽을 수 있습니다

  • AJAX 기술을 사용하는 페이지에만 적용 가능

  • 이상은 Java 캐싱 기술에 대한 소개입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php .cn)를 참고해주세요!


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