문제

디스크에서 다른 테이블을로드하면서 일부 테이블이 메모리에 저장되어있는 내장 모드로 실행할 수있는 Java 용 DBS가 있습니까? H2와 Javadb는 Java DBS의 두 리더 인 것처럼 보이며 둘 다 메모리 내 모드를 가지고 있다는 것을 알고 있지만 전체 DB를 메모리에로드하거나 테이블별로 결정할 수 있습니까?

도움이 되었습니까?

해결책

이것은 HSQL 웹 사이트에 언급 된 캐시 테이블 FAQ입니다.

• HSQLDB는 모든 데이터를 메모리에 저장합니다. 결과적으로 메모리가 소진되지 않습니까?

• 원하는 경우에만 모든 데이터를 메모리에 저장합니다. 기본적으로 테이블을 작성하면 메모리 테이블이 더 작은 테이블에 가장 적합한 유형이므로 메모리 테이블이 생성됩니다. 더 큰 테이블의 경우 캐시 된 테이블을 만들고 캐시 크기를 조정하여 메모리 사용 요구 사항 (8MB 정도)을 적용하십시오. 시스템 관리 및 배포 문제 가이드의 장을 참조하십시오. HSQLDB의 일부에는 단순한 규칙이 없으며 몇 가지 설정 만 사용하여 최대의 유연성이 허용되므로 부과되지 않습니다. HSQLDB의 인기있는 사용은 OLAP, ETL 및 데이터 마이닝 애플리케이션에 대한 거대한 Java 메모리 할당을 사용하여 수백만 행의 데이터를 메모리에 보유하는 것입니다.

캐시 테이블은 이미 당신의 필요를 충족시키기에 충분히 강력하다고 생각합니다.

에서 http://hsqldb.org/web/hsqlfaq.html

캐시 테이블과 메모리 테이블의 비교

메모리 테이블과 캐시 테이블은 일반적으로 데이터 저장에 사용됩니다. 둘 사이의 차이점은 다음과 같습니다.

모든 메모리 테이블의 데이터는 데이터베이스가 시작되고 메모리에 저장 될 때 *.script 파일에서 읽습니다. 대조적으로 캐시 된 테이블의 데이터는 테이블에 액세스 할 때까지 메모리로 읽지 않습니다. 또한, 각 캐시 된 테이블의 데이터의 일부만 메모리에 고정되어 있으므로 메모리에서 보유 할 수있는 것보다 더 많은 데이터가있는 테이블을 허용합니다.

데이터베이스가 정상적인 방식으로 종료되면 메모리 테이블의 모든 데이터가 디스크에 기록됩니다. 이에 비해 변경된 캐시 테이블의 데이터는 작동 중 및 종료시 작성됩니다.

모든 캐시 테이블의 데이터 캐시의 크기와 용량은 구성 가능합니다. 따라서 캐시 된 테이블의 모든 데이터를 메모리에서 캐시 할 수 있습니다. 이 경우 액세스 속도는 양호하지만 메모리 테이블보다 약간 느립니다.

정상적인 응용 프로그램의 경우 메모리 테이블이 소량의 데이터에 사용되어 큰 데이터 세트에 캐시 테이블을 남겨 두는 것이 좋습니다. 속도가 가장 중요하고 많은 양의 무료 메모리를 사용할 수있는 특수 애플리케이션의 경우 메모리 테이블도 큰 테이블에도 사용할 수 있습니다.

이 기능은 아직 H2와 Derby (Javadb)에서 지원하지 않는 것 같습니다. 그것이 사실이 아니라면 나를 바로 잡으십시오.

다른 팁

대부분의 메모리 데이터베이스 (예 : HSQLDB 일부 (또는 모든) 데이터를 디스크로 캐시 할 수 있습니다. 일반적으로 충분히 낮은 수준이므로 프로그래머에게 투명하지만 확실히 구성 가능합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top