2011-12-11 3 views
0

대용량의 OLTP DB를 보급했는데 합리적으로 가능한 한 많이 향상시킬 수 있도록 무료로 통치했습니다. 개선은 이미 도움이되었지만 다음 단계로 넘어 가고 싶습니다. 내가 찾은 데이터 액세스 패턴은 다른 서버의 데이터를 캐시하기위한 좋은 후보 IMO로 만들었으며 이러한 유형의 설정으로 다른 사람의 경험이나 권장 사항을 듣고 싶습니다.SQL Server 용 웹 캐싱 서버 OLTP Env. 권장 사항

우리는 매일 약 3GB의 데이터를 테이블에 추가하는 DB를 가지고 있으며 그보고는 매우 느린 편이었습니다. 일단 데이터가 입력되면 데이터가 변경되지 않으며, 1 주일 넘게 데이터가 삽입되지 않습니다. 지난 3 일 내에 입력 된 행은 수천만 행 사이에 수천 개의 삽입을 보는 경향이 있습니다.

2 주 전의 데이터가 MongoDB에 푸시 아웃 될 것으로 생각했습니다. 그런 다음 Mongo에 푸시되지 않은 2 주짜리 슬라이딩 창 데이터를 캐싱 소프트웨어의 일종으로 캐싱하여 전체 시간 동안 DB에서 데이터를 읽지 않고 쿼리하고 표시 할 수 있습니다. 우리는 여전히 DB 엔진에 모든 데이터의 유효성을 검사하고 높은 읽기 성능을 제공하여 데이터베이스를 손상시키지 않으면 서 전체 C.C.I.D를 준수하는 방식으로 파악합니다. 그러면 Mongo는 더 이상 '트랜잭션'이 아닐 때이를 수행 할 수 있습니다.

누구나 권장 해결책이 있습니까? 나는 MemCached를보고 있었지만, 그것이 좋은지 또는 그럴듯한 해결책인지 확실하지는 않습니다. 감사!

+0

SQL Server 데이터를 캐싱 한 경험이있는 사람이 있습니까? :/ –

답변

0

SQL Server에 대한 경험이 없지만 설명하는 내용이 MongoDB의 유효한 사용 사례처럼 보입니다.

MongoDB는 트랜잭션을 직접 처리 할 수는 없지만 원자 단위로 특정 연산을 처리 할 수 ​​있습니다 (예 : findAndModify 참조). 또한 저널링을 사용하도록 설정하면 내구성에 대해 걱정할 필요가 없습니다. MongoDB는 신뢰할 수있는 데이터 저장소이므로 데이터를 손실하거나 손상시키지 않습니다.

저널링을 사용하지 않고 두 번째 배포를 실행하면 MongoDB 자체가 공연 캐시로 작동 할 수도 있습니다. 이 경우 쓰기는 메모리에서 발생하며 60 초마다 디스크에 지속됩니다 (달리 구성되어 있지 않은 경우). 이렇게하면 memcache와 비슷한 성능을 제공 할 수 있습니다. memcache는 스택 내에서 좀 더 단순하게 유지하면서 메모리 내에서만 사용됩니다.

희망이 도움이됩니다.

2

또 다른 고려 사항은 SQL Server 2014의 새로운 메모리 내장 OLTP 기능을 사용하는 것입니다.이 기능은 OLTP 작업 부하의 효율성과 확장 성을 향상시킵니다. 특정 캐싱 메커니즘을 고려할 필요없이 기존 서버에서 더 많은 것을 얻을 수 있습니다.

+0

감사합니다. Jos! 나는 우리가 말하는 것처럼 이미 내 연구실에 가지고있다.) 좋은 제안. 메모리에서 OLTP는 운좋게도 필자가 현재 필요로하는 것은 더러운 읽기로 바꾸는 대신 많은 문제를 해결합니다. –

+0

@Ali 메모리 OLTP에서 더러운 읽기를 얻지 못합니다. MVCC의 잠금 및 래치 무료 버전을 사용하므로 스냅 샷은 최소 격리 수준입니다. –

+0

@ MartinsSmith 네, 잘 부탁드립니다. Kalen Delaney 나 Kim Tripp가 '메모리 테이블에서 기본적으로 잠금/차단 엔진을 끄는'것을 언급 한 것을 들었지만 기술적 인 백서에 따르면 MVCC를 사용합니다. 알았어, 고마워! –