2011-11-09 5 views
3

EBS 볼륨이있는 Amazon EC2 인스턴스에서 실행할 계획 인 Java 프로그램과 PHP 웹 사이트가 있습니다. 이 프로그램은 데이터베이스에 쓰고 읽습니다. 웹 사이트는 동일한 데이터베이스에서만 읽습니다.Amazon EC2에서 MySQL과 SQLite

AWS에서는 볼륨에 대해 IOPS (초당 I/O 요청)를 지불합니다. IOPS가 가장 적은 데이터베이스는 무엇입니까? 또한 SQLite는 프로그램과 웹 사이트의 쿼리를 동시에 처리 할 수 ​​있습니까?

+1

데이터베이스의 크기는 어느 정도입니까? 웹 (읽기 전용) 측면에서 모든 것을 캐시 할 수 있다면 그면에서 거의 I/O를 제거 할 수 있습니다. 서버 코드에서 또는 메모리 내 SQLite 데이터베이스를 사용하여이를 수행 할 수 있습니다. –

+0

데이터베이스의 크기는 약 1-5GB입니다. Java 애플리케이션의 메모리에 있다면 웹 서버는 어떻게 액세스합니까? – Arjan

+1

Java 응용 프로그램은 디스크의 데이터베이스에 대해 작동합니다. 웹 애플리케이션은 주기적으로 업데이트하거나 메모리에서 업데이트해야 할 것이있을 때 자바 애플리케이션의 지시를 받아 메모리에 캐시합니다. 아마도 1GB에서 작동하지만 아마 5GB에서는 작동하지 않을 것입니다. –

답변

7

MySQL의 구성 방법과 응용 프로그램에서 데이터베이스를 사용하는 방법에 따라 IO 양은 크게 달라집니다. 캐싱, 로그 파일 크기, 데이터베이스 엔진, 트랜잭션 등은 모두 IO의 양에 영향을 미칩니다. 다른 말로하면 SQLite가 디스크 IO를 더 많이 차지할 것이라고 추측 할지라도 미리 예측할 수는 없습니다. MySQL이 쓰기 및 읽기 (특히) 중에 캐싱 될 수있는 동안 데이터베이스 파일을 항상 열고 닫아야하기 때문입니다. MySQL 자체에 의해 메모리에 저장됩니다.

이 사이트 Estimating I/O requests에는 실제 IO를 계산하고이를 사용하여 EBS 비용을 산정하는 간단한 방법이 있습니다. 시뮬레이션 된로드하에 테스트 시스템에서 애플리케이션을 실행하고이 기법을 사용하여 MySQL 솔루션과 SQLite 솔루션 간의 IO 차이를 측정 할 수 있습니다.

실제로는 별 문제가되지 않을 수도 있습니다. 비용은 $ IO 요청 당 $ 0.10입니다. 데이터베이스 액세스가 많은 중형 트래픽 전자 상거래 사이트에서 우리는 월 315 만 건의 IO 요청 (31 달러)을 수행했습니다. 이는 수천 명에 달하는 EC2, 스토리지 및 대역폭 비용에 비해 무시할 수있는 수준이었습니다. AWS cost calculator을 사용하여 견적을 연결하고 모든 AWS 비용을 계산할 수 있습니다.

또한 SQLite 사용자는 recommend that you use it for low to medium traffic websites이라는 명심해야합니다. MySQL은 트래픽이 많은 사이트에 더 나은 솔루션입니다.

+0

2016 년부터 sqlite가 볼륨을 잘 처리합니다. 트래픽이 많은 사이트의 경우 잠금 오류가 많이 발생하여 일일 크론과 함께 WAL (미리 기록하기'pragma journal_mode = WAL')을 사용하여 체크 포인트 데이터베이스를 보호해야했습니다 (런웨이 파일을 방지하기 위해) – John

0

예 SQLite는 프로그램과 웹 사이트의 쿼리를 동시에 처리 할 수 ​​있습니다. SQLite는 파일 수준 잠금을 사용하여 일관성을 보장합니다.

메모리에서 SQLite는 독립 실행 형 또는 내장 프로그램 용입니다.

메모리 만 SQLite는 사용하지 마십시오 :

  • 여러 프로세스 사이의 DB를 공유 할 때

  • 당신은 당신이 레버리지 할 수 없습니다하는 경우에 PHP 기반 웹 사이트가있는 경우 PHP fastcgi

관련 문제