2011-04-20 2 views
4

사용자가 하루에 수천 개의 행을 원하는 web2 프로젝트에서 작업하고 있습니다. 이 데이터 크기를 처리하기위한 데이터베이스는 다음과 같습니다. 하나의 .mdf 및 .ldf 파일을 마이너 데이터베이스로 저장하고 1 개의 메이저 DB를 저장하여 사용자 계정 및 데이터베이스 파일 주소를 쿼리합니다.여러 MDF 파일 VS 단일 데이터베이스 (SQL Server)

나는이 계획을 위해 몇 달 동안 일했으며 이제는 쉽게 관리 할 수 ​​있습니다. 거대한 규모의 독립 데이터를 처리하는 것이 좋은지 알고 싶습니다. 마녀의 의견에 더 나은 실적이 있습니까? 많은 작은 .mdf 파일 또는 거대한 데이터베이스의 연결을 여는 것입니다.

이후에는 여러 대의 컴퓨터에서 mdf 저장소를 나눕니다.

그들 모두는 C# 및 LINQ에 의해 처리됩니다 (.net4)

// 나중에 설명

나는이 계획을 구축하고 그것을 잘 작동합니다. 예 : 모든 작은 mdf 파일을 열 때 1 초가 걸리고 0.0 초 후에 쿼리합니다. 그것은 모든 연결에 대해 정적 시간을 만듭니다. 그러나 단일 데이터베이스에서 50rows 시스템은 인스턴스를 200,000 행에서 찾아야하며 내 시스템에서는 기본 키로 간단한 선택 쿼리로 약 4-5 초가 걸립니다.

다른 인스턴스에 대해 페이지 콘텐츠를 바인딩하고 2milmions 행 사이에 50 개의 댓글을 선택하고 모든 댓글의 투표 수, 일, 주, 월 및 총의 조회수를 얻으려면 500,000 개의 행 사이에 행을 가져 가고 싶습니다. 좋아하는 사람의 수, 의견의 답변 및 2-3 개의 다른 테이블에서 더 많은 데이터를 얻는다면이 쿼리는 작은 슬레이브 데이터베이스보다 무거 우며 시간이 더 걸립니다.

저는 좋은 디자인과 프로세스가 시스템에서 쉽게 작동해야한다고 생각합니다.

유일한 문제는 SQL Server 파일이있는 작은 슬레이브 데이터베이스가 데이터베이스 당 약 3MB의 물리적 크기를 필요로한다는 것입니다.

답변

0

의 u는 하나의 데이터베이스가 OS 당 10 기가 바이트 데이터 스토리지를 제공하는 SQL 서버와 SQL 서버 데이터베이스에 갈 필요가 작은 MDF 파일을 관리하기 어려울 쉬운

/A로 존재한다 수있는 일을 분할 할 이유가 없습니다
+0

도움 주셔서 감사합니다. 나는이 응용 프로그램에서 이미 작업했습니다. 그래서 여러분의 의견대로 모든 것을 다시 시작하는 것이 낫습니다, 맞습니까? –

3

단일 데이터베이스를 여러 독립 부품에 통합

여러 파일에 단일 논리 데이터베이스를 분할하는 메커니즘은 이미 있습니다. Files and Filegroups Architecture뿐만 아니라 partition 큰 테이블 (하루에 수천 개의 행이 실제로 큰 테이블로 적합하지 않음).

+0

도움 주셔서 감사합니다. 나는이 응용 프로그램에서 이미 작업했습니다. 그래서 여러분의 의견대로 모든 것을 다시 시작하는 것이 낫습니다, 맞습니까? –

1

"하루에 수천 개의 행"은 SQL Server의 포켓 변경이어야합니다.

먼저 Alex K 답변에 대해 투표했습니다. 파일 그룹은 가장 가능성이 높은 곳으로 이동합니다. 분할 된 테이블은 잔인하며 엔터프라이즈 버전에서만 사용 가능하며 가벼운 마음이 아닙니다.

내가 추가 할 것은 :

http://www.google.com/#q=glenn+berry+dmv&bav=on.2,or.r_gc.r_pw.&fp=73d2ceaabb6b01bf&hl=en

당신은 당신의 인덱스를 조정할 필요가있다. 좋은 카테고리 대 좋은 카테고리와 가장 좋은 카테고리에서 Glenn Berry의 DMV 검색어는 "더 좋음"입니다. 이러한 쿼리는 대부분의 문제를 해결하는 데 도움이됩니다. "최고의"범주는 각 저장 프로 시저를 살펴보고 실행 계획을보고 다른 것들을 시도하는 고통입니다. 이것은 좋은 dba가 제공 할 수있는 것입니다.

다음은 파일 설정시 고려해야 할 몇 가지 "기본 사항"입니다. TEMP 데이터베이스 설정에주의하십시오. http://technet.microsoft.com/en-us/library/cc966534.aspx

관련 문제