2013-01-08 2 views
0

내 응용 프로그램에는 직원의 일일 스 와이프가 삽입되는 열 11 개가 포함 된 Employee Swipedaily_Tbl SQL Server 2008 테이블이 있습니다.줄 수 줄이기

그리고 내 회사에는 약 8000 명의 직원이 있습니다. 즉, 매일 적어도 16000 개의 행이 생성됩니다.

성능을 향상 시키려면 한 달 말에 모든 행을 삭제하고 다른 테이블에 저장하려고합니다. 전월 데이터를 응용 프로그램 자체에서 dmb 파일로 변환

SQL Server와 DBA에 익숙하지 않으므로 누구나 더 좋은 아이디어가 있는지 제안 할 수 있습니까?

응용 프로그램에서 덤프 파일을 만들 수 있습니까?

+0

벙어리 파일이란 무엇입니까? – Raj

+0

나는 .dmb 파일을 의미합니다. –

+0

@Raj : 나는 바보 파일이 정말로 ** (데이터) 덤프 ** 파일이라고 가정합니다. :-) –

답변

1
  1. 해당 테이블에 지정된 날짜 (오늘 날짜 말한다) 이전의 모든 데이터를 복사 할 수있는 SQL 스크립트를 생성 동일한 테이블
  2. 를 만들고 테이블에서
  3. 구성합니다 SQL 에이전트 작업에 삭제 적절한 색인으로,

그러나 모든 달의 1 일에 해당 스크립트를 실행, 당신은 훨씬 더 긴 기간 동안 원래의 테이블 자체의 데이터를 reatian 확인해야한다 - 3백65일 X 8000 명 직원 × 2 와이프 = 584 만 건 , SQL 서버가 처리 할 수있는 것은 그리 많지 않습니다.

라지 당신은 특정 레코드를 백업 테이블에 삽입 할 때 말할 것 추가 한 열이 Swipedaily_Tbl(11 columns) 동일한 다른 테이블을 만들 수 있습니다

1

. 그런 다음 한 달 이전의 데이터를 백업하고 해당 데이터를 orignal 테이블에서 삭제하는 스크립트를 작성할 수 있습니다. 그런 다음 월말에 실행하도록 예약 할 수있는 일괄 처리 또는 콘솔 응용 프로그램을 만들 수 있습니다.

희망 도움말.

감사합니다.

1

"이전"데이터에 대한 요구 사항에 따라 달라질 수 있습니다. 개인적으로 테이블 분할을 사용하는 것이 좋습니다. 참조 : http://technet.microsoft.com/en-us/library/dd578580(v=sql.100).aspx

모든 레코드를 테이블에 보관하십시오. 이렇게하면 현재 및 과거 데이터를 동시에 간단하고 저렴한 비용으로 조회 할 수 있습니다.

2

Partitioning Table을 사용하면 대용량 데이터베이스 테이블에 새 데이터를 삽입해도 성능에 영향을 미치지 않으며 SQL 작업을 사용하여 월별로 데이터를 백업하고 기존 데이터베이스에서 데이터를 삭제하기 위해 스크립트를 사용하지만 ID 열을 사용하는 경우 이전 및 새 데이터의 충돌을 피하기 위해 스크립트가 변경되었습니다.

1

너무 자주, 의존합니다. 네이티브 파티셔닝에는 Enterprise Edition의 SQL Server가 필요하지만 그 주위에는 (매우 깨끗하지는 않지만) 방법이 있습니다 (예 : this).

Enterprise Edition의 SQL Server를 사용하는 경우 파티셔닝을주의 깊게 살펴 보겠습니다 (다른 답변에서는 잘 링크되어 있음). 그러나 매월 또는 어쩌면 분기별로 나누지 않을 것입니다. 반나절 기준으로 하루에 두 번의 스 와이프가 한 달에 50 만 행보다 적고 1.5-3mil입니다.행 테이블은 SQL 서버가 처리 할 수있는 정도는 아닙니다.

몇 달 간의 데이터로 인해 지금 시점에서 성능 문제가 발생하는 경우 테이블을 조회하는 가장 자주 발생하는 쿼리를 검토하고 인덱스를 사용하고 있는지 확인 했습니까?

관련 문제