2011-09-20 5 views
-1

하나의 테이블에 거대한 1 억 개의 데이터를 처리하는 방법에 대해 몇 가지 질문을하고 싶습니다.
테이블은 INSERT, SELECT & UPDATE를 수행합니다. 내가 가지고1 개의 테이블에 거대한 레코드 정보 처리

는 일부 몇 테이블에 그 색인 테이블과 아카이브 테이블을 조언한다.

SQL 성능을 조정하는 데 도움이되는 다른 제안 사항.

사례 : SQL Server 2008. 대부분 10 진수 값 및 상태가 작은 int에 관한 업데이트입니다. 내가 있으리라 믿고있어 이후 INSERT 문이 대량 INSERT를 사용하지 않습니다

분마다 INSERT 문을 수행하는 많은 사용자가 할 수 10000-500000 상기 there'r 테이블을 업데이트하는 것이.

+0

갑자기 충분한 정보에 가까운 ... – Randy

+0

나는, 내가 큰, 내가 응용 프로그램 개발자 중 하나를 화재 및 고성능에 익숙한 데이터베이스 전문가와 대체 할 테이블이있는 데이터베이스를 설계하려고한다면 생각 대형 sytems. 이 기술을 올바로 설계 할 기술이나 능력이 없으며이를 얻는 데 약 10 년이 걸립니다. – HLGEM

답변

1

어떤 열이 있는지 고려해야합니다.

당신이 다른 인덱스에 포함 된 한 더 많은 nvarchar/text/등 열, 느린 인덱스가 될 것입니다.

또한 RDBMS를 사용 하시겠습니까? 당신은 ... SQL 서버, 오라클, MySQL을 기반으로

다른 옵션을 가지고 있지만 중요한 것은 바로 인덱스의 당신이 사용하는 것 ...

또 한가지, 당신이에 BULK INSERT을 사용할 수 있습니다 구축 다르게이다 SQL Server를 사용하여 삽입 속도를 높입니다. 나는을하려고합니다 자세한 내용은

온 후)

편집 -----를,

그러나 멀리 물어, 내가 일 홍보 데이터베이스가 70 밀 데이터 행으로 채워지 처리 한 이 사건에 대한 다른 접근법은 거의 없으며 데이터 스크래핑과 비교합니다.

인서트 업데이트보다 빠른 것을 의심의 여지가 있습니다. 그리고 "수집"테이블의 역할을하는 테이블을 만들 수도 있습니다. 내 말은 인서트 만 항상 가져 오는 것입니다. 업데이트가 없으며 모두 삽입으로 처리됩니다.

그런 다음 해당 테이블에 오는 것을 처리하고 다른 (들) 테이블 (들)에 필요한 채우는 트리거/이벤트/스케줄러를 사용합니다. 당신이 "정리"에 약간의 비즈니스 로직을 적용 할 수 (갱신)와 DB 서버의 성능을 유지하고이 일을 수행하는 동안 연결을 유지하지 않습니다

이 방법.

이 과정의 또한 "최종"데이터가 무엇인지 함께 할 수있는 뭔가가은을 위해 ...

\ 사용되는 T 2008 억 개 기록 할 수

+2

이 답변은 명확한 질문과 일치합니다. –

+0

설명이 혼란 스럽습니까? –

+0

또 다른 한가지는, 만약 당신이 대답을 "끌어 내리는"것이면, 당신 자신의 정보를 찾아 내십시오. 쓰여진 것처럼, 나는 해결책/제안에 또 다른 "길"을 선택하기로 결정했습니다. –

0

분명히 SQL하지만 많은 그것을 보아주는 ​​세부 사항은 단지 10 만 명이 재생되지 않습니다. 좋은 기본 키를 선택하십시오. 채우기 비율. 다른 인덱스 (삽입 속도는 느려지지만 속도 선택). 동시성 (잠금). 더러운 읽기를 허용 할 수 있으면 성능에 도움이됩니다. 이 질문에는 훨씬 더 자세한 내용이 필요합니다. 테이블 디자인을 게시하고 TSQL 문을 선택, 업데이트 및 삽입해야합니다. 나는 당신의 질문에 투표하지 않았지만 당신이 더 자세한 내용을 제공하지 않으면 투표를하지 않을 것입니다.

삽입시 BULK INSERT 옵션이없는 경우 여러 행을 동시에 삽입 할 수 있으며 여러 삽입 문보다 훨씬 빠릅니다.

INSERT INTO Production.UnitMeasure 
    VALUES (N'FT2', N'Square Feet ', '20080923'), (N'Y', N'Yards', '20080923'), (N'Y3', N'Cubic Yards', '20080923'); 
관련 문제