1.1: 보조 데이터 파일을 증가
SQL SERVER 2005 부터는 데이터베이스 기본값으로 사용 하지 않은 NDF 데이터 파일을 생성, 일반적으로 주 데이터 파일 (MDF)은 충분, 하지만 몇 가지 큰 데이터베이스, 정보, 및 자주 쿼리 그래서 쿼리의 속도 개선 하기 위해 어떤 테이블이 나 별도 데이터 파일에 테이블에서 레코드의 일부를 저장할 수 있습니다.
때문에 CPU와 메모리 속도 하드 디스크 보다 훨씬 높은 읽기 쓰기 속도, 그래서 같은 시간 쿼리, CPU 및 메모리 성능을 완전히 활용 하는 여러 개의 하드 드라이브 쿼리 속도 향상 시킬 때 쿼리를 가질 수 있도록 서로 다른 실제 하드 드라이브에서 다른 데이터 파일을 넣을 수 있습니다. 여기에 쓰기를 작동 하는 방법, 그리고 어떻게 데이터 파일 (MDF, NDF) 및 로그 파일 (LDF) 다르게 기록 됩니다에 대 한 자세한 설명이입니다.
데이터 파일: 3 데이터 파일 A.mdf, 경우 동일한 파일 그룹에 있는 모든 파일의 기존 여유 공간의 크기에 따라 모든 공간 데이터 파일에 새 데이터를 배포 하는 SQL Server 그는 경우 로그 파일이 꽉 찼습니다, 그것은 그것을 쓰지 것입니다 40, 20, 10의 데이터를 ABC 세 파일에 쓸 것입니다, 그리고 B.NDF,C.NDF, 유휴 크기 200MB, 50MB, 100MB, 이며 다음 70 mb 일 작성
로그 파일: 로그 파일에에서 작성 되 고 하나는 다른 쓰기 전에 전체
위의 데이터 파일 ndf를 증가 수에서 볼 수, 큰 데이터 쿼리 속도, 그러나 증가 로그의 찬성 파일 유용 하지 않습니다.
1.2: 자동 파일 증가 (많은 양의 데이터, 작은 양의 데이터 설정 없이) 설정
기본 MDF 파일의 초기 크기 5 메가바이트, 1 메가바이트, 무제한 성장, 증가 이후 SQL Server 2005에서는 LDF 처음 1 MB, 10%의 성장, 수, 일반 디자인, 디자인으로 SQL을 사용 하 여 제한 된 파일 증가 수 있지만, 큰 데이터베이스 디자인 초기 값이 너무 작아, 다음 데이터베이스 전체 것, 전체, 경우 삽입 될 경우 그들의 성장 및 직접에서 초기 크기를 디자인 하는 것이 최선인가? 데이터 파일은 전체, 일부 작업을 완료 하면 SQL Server는 파일의 자동 성장 이상이 며 원래 작업은 계속 됩니다 때까지 기다립니다. 그것은 성장 하는 데 시간이 오래 걸립니다, 원래 작업 취소 제한 시간 (기본 임계값은 15 초)를 기다릴 수 없어, 뿐만 아니라이 작업은 롤백할 수, 파일의 자동 증가 또한 취소 됩니다. 즉,이 이번 파일 얻지 않았다 어떤 증가, 시간이 너무 작고, 너무 큰, 긴 시간을 기다려, 그래서 몇 가지에 주목 하 자동 증가 설정 해야 하는 경우 다양 한 맞게, 연속 성장 해야 하는 경우 자동 성장의 크기에 따라 성장:
1 증가 하는 고정된 크기와 비례 하지로 설정 됩니다. 이 성장 하는 너무 많이 또는 너무 적게의 불필요 한 번거로움을 피할 수 있습니다. 작은 데이터베이스를 비교 하 고 mb MB의 증가 설정 하는 것이 좋습니다. 큰 데이터베이스에 대 한 mb MB의 증가 설정 합니다.
정기적으로 큰, 각 파일에 대 한 남은 공간 되도록 최대한 각 데이터 파일 또는 예상된 비율의 사용을 모니터 2.
3은 디스크 공간이 성장에 영향을 미치는 운영 체제에서 SQL Server 파일을 방지 하기 위해 최대 파일 크기를 설정 합니다.
4 성장, 적시에 발생 후 새로운 데이터 파일 공간 할당을 확인합니다. SQL Server 항상 개별 파일에 데이터를 작성 하지 마십시오.
따라서, 더 바쁜 데이터베이스에 대 한 권장된 설정은 데이터베이스 공간이 부족에서 응용 프로그램을 방지 하기 위해 하지만 엄격 하 게 자동 성장 발생을 피하기 위해 데이터베이스 자동 증가 옵션을 켜는 것입니다. 또한, 자동 축소 기능을 사용 하지 않기 위하여 보십시오.
1.3 데이터와 로그 파일이 서로 다른 디스크에 별도로 저장 됩니다.
데이터 파일 및 로그 파일의 작업이 많은 양의 I/O 생성합니다. 가능 하면, 로그 파일 데이터 및 인덱스는 I/O, 또한 데이터베이스에 대 한 재해 복구를 촉진 하는 동안 배포에 데이터 파일이 다른 하드 디스크에 저장 합니다.
② 최적화: 분할 테이블, 인덱스 분할 (최적화 된 ① 거친 테이블 분할 ② 정확한 데이터 분할에 대 한 최적화)
테이블 분할은 왜 필요 합니까?
테이블에 있는 데이터의 양이 너무 큰 경우에, 할 우리가 싶은 무슨 대부분? 하나 이상의 지점으로는 테이블 분할 하지만 테이블은 여전히 테이블 그리고 그것은 단지 그 내용을 분리, 그래서 그것이 거의 n 배 더 빨리 읽을.
원리: 테이블 데이터를 파일에 배치할 수 없습니다 하지만 파일 그룹은 파일에 배치할 수 있습니다 그리고 테이블 직접 구현 하지 테이블 데이터 파일을 다른 파일에는 파일 그룹에 배치 될 수 있습니다. 테이블, 인덱스 및 큰 개체 데이터를 분할 될 수 있다.
도입 하는 SQL SERVER 2005 테이블 분할 때 테이블에 있는 데이터의 양을 증가, 쿼리 데이터의 속도가 느린 것, 응용 프로그램의 성능이 저하 될 것 이다, 데이터의 많은 경우는 테이블 분할 고려해 야 합니다의 개념, 분할할 수 있습니다 그것은 여러 개의 테이블, 데이터를 검색할 수 있기 때문에, 쿼리는 더 빠르게 실행할 수 있습니다,이 작업 크게 성능이 향상 됩니다, 테이블 분한 후, 논리 테이블은 여전히 완전 한 테이블, 테이블에서 데이터는 하나 이상의 테이블 공간 (물리적 파일)에 물리적으로 저장 때 쿼리 데이터를 검색 하지 전체 테이블 모든 시간을
2.1 사용 하는 경우 파티션 테이블:
1, 2GB 보다는 더 많은 테이블의 크기.
2. 테이블 기록 데이터를 포함 하 고 새 파티션으로 새 데이터 추가 됩니다.
2.2 테이블 분할 장점 및 단점
테이블 분할 다음과 같은 이점이 있습니다.
1, 쿼리 성능 향상: 그들의 자신의 관리 파티션 개체 수만 검색 쿼리, 검색의 속도 향상.
2. 유용성 향상: 테이블의 파티션 실패 하면, 다른 파티션에 데이터를 여전히 사용할 수;
3, 유지 보수 편의성:는 오류 섹션의 테이블 파티션을 수 있습니다;만 수리 데이터 복구 해야하는 경우
4, I/O 균형: 균형 I/O 디스크, 전반적인 시스템 성능을 향상 시킬 수 다른 파티션을 매핑할 수 있습니다.
단점:
파티션 테이블 상관 관계: 기존 테이블에 분할 된 테이블로 직접 변환 될 수 있는 방법 없다. 그러나, Oracle 테이블 온라인 재정의 하는 기능을 제공 합니다.
2.3 테이블 분할 작업 3 단계
2.31 파티션 함수 만들기
파티션 함수 만들기 xx1 (int)
값 (10000, 20000);에 대 한 범위를 왼쪽으로
참고: 파티션 함수 만들기: myRangePF2 int 형식 파티션, 지역 c에서 지역 A, 지역 B, 2W 이상 1w-2w 10000 이내 3 간격으로 나누어
2.3.2 파티션 스키마 만들기
파티션 구성표 만들기 myRangePS2
파티션 xx1로
(A, B, c);
참고: 파티션 함수 XX1에 파티션 스키마를 작성: myRangePS2, a, b, c 3 간격으로 각각
A, b의 c 3 파일 그룹의 이름을 3 NDF 합병이 세 그룹을가지고 있어야 합니다 그리고 만들어진 파일 그룹을 수정할 수 없습니다
2.3.3 테이블 분
일반적인 데이터 사양 데이터 공간 유형 수정: 파티션 구성표를 파티션 구성표 이름 및 분할 열 목록을 선택한 다음 그림에서와 같이 결과:
SQL 문을 사용 하 여 생성 또한 수 있습니다.
만들기 테이블 [dbo]입니다. [Avcache] ([avnote] [varchar] (+) NULL, [BB] [int] 정체성 (1, 1)) [MyRangePS2]에 (BB);
-[myRangePS2] 아키텍처 BB 파티션 따라 여기 사용 됩니다
2.3.4 쿼리 테이블 분
선택 *, $PARTITION. [MyRangePF2] (BB) dbo. Avcache
그래서 당신은 명확 하 게 테이블의 데이터를 분할 하는 방법을 볼 수 있습니다.
2.3.5 만들 인덱스 파티션에
③ 최적화: 분산 데이터베이스 디자인
분산된 데이터베이스 시스템은 중앙 집중식된 데이터베이스 시스템 기초 개발 하 고 그것은 매우 간단 이해 하 고, 즉, 전체 데이터베이스를 분리 하 고 다양 한 장소에, 본질적으로, 분산 배포 데이터베이스 시스템은 두 가지로 나누어: 1. 분산된 데이터베이스 이며 논리적으로 통합 데이터는 논리적으로 통합 하 고 물리적으로 분산, 전체, 물리적으로 별도 물리적 노드에 저장 됩니다. 우리는 일반적으로 분산된 데이터베이스는이 2 말. 논리 배포 되어 물리적으로 분산, 그리고 연맹을 구성 하는 다양 한 서브 데이터베이스 시스템은 상대적으로 "자치", 그리고이 시스템의 서로 다른 데이터베이스, 다양 한 수용할 수 있기 때문에 이것은 또한 페더레이션된 배포 데이터베이스 그것은 더 큰 범위에서 데이터베이스의 통합에 적합 합니다.
분산된 데이터베이스는이 자세한 사용에서 더 복잡 한와 설명, 그냥 예를 들어 더 많은 사용자 분할 시스템, 전국 체인, 각 분기에 대 한 일반 디자인 자체 판매 및 재고 정보, 본사는 경우에 대 한 지금 분산된 데이터베이스는 직원, 공급 업체, 정보 및 다른 데이터베이스에 저장 해야 합니다. 지점 데이터베이스의이 유형은 완전히 일치 될 수 있습니다, 각 체인 스토어 데이터 저장 로컬, 그로 인하여 증가 충격 속도, 통신 비용 절감 및 전체 시스템을 붕괴를 유발 하지 않고 개별 사이트를 실패 하는 경우에 여러 복제본을 여러 사이트에서 데이터를 배포 되도록 많은 시스템 또한 불일치, 발생할 수 있습니다. 하지만 그는 또한과 같은 많은 문제, 제공: 데이터 일관성 문제, 원격 데이터 전송, 분산된 데이터베이스 시스템의 개발은 좀 더 복잡 한, 통신 비용의 감소의 구현 그냥 모두의 원리 이해, 특정 사용 방법의 자세한 소개를 하지 않습니다.
④ 최적화: 데이터베이스 조각화 구성
테이블은 이미 인덱스를 만든, 하지만 성능은 여전히 나쁘다, 조각 모음을 해야 하는 인덱스 조각 될 것입니다.
인덱스 조각 이란 무엇입니까?
과도 하 게 삽입, 수정, 및 삭제 테이블에, 때문에 인덱스 페이지는 조각, 그리고 인덱스를 스캔 하는 시간이 된다 더 이상 인덱스 조각화 되 면 및 심지어 인덱스 사용할 수 없습니다, 그래서 데이터 검색 작업 속도가 느려집니다.
인덱스 조각 발생 한 경우 어떻게 알 수 있습니까?
SQL Server 데이터베이스에서 인덱스 조각화는 DBCC SHOWCONTIG 또는 DBCC SHOWCONTIG (테이블 이름) 우리를 안내 하 여 초과 다시 확인 됩니다.
(너무 낮은) 스캔 밀도 통해 분석 결과 (너무 높은) 파편을 검색, 확인 여부 인덱스 재구성 필요 주로 보면 다음 두 가지:
검색 밀도 [http://www.aliyun.com/zixun/aggregation/16460.html 베스트 > 수: 실제]-검색 밀도 [최적: 실제 값]: DBCC Showcontig 가장 유용한 비율을 반환합니다. 이것은 최고의 가치와 실제 범위 값의 비율 이다. 백분율은 가능한 100%에 가까운 이어야 한다. 낮은 외부 조각을 나타냅니다.
논리 스캔 조각화 논리 검색 조각화: 정렬 되지 않은 페이지의 백분율. 비율 0%와 10% 사이 여야 하 고 높은 외부 조각을 나타냅니다.
해결 방법:
먼저, DBCC INDEXDEFRAG를 사용 하 여 인덱스 조각 조각 모음
두 번째 DBCC DBREINDEX를 사용 하 여 인덱스를 재구성 하는 것입니다.
Microsoft에는 두 호출 사이의 차이 다음과 같습니다.
DBCC indexdefrag 명령은 온라인 작업 이므로 인덱스는 명령이 실행 되 고 완료 된 작업의 손실 없이 작업을 해제할 수 있습니다 경우에 사용할 수 합니다. 이 방법의 단점은 없습니다 유효한 드롭/다시 create의 작동 데이터의 조직에서 클러스터형된 인덱스입니다.
클러스터형된 인덱스를 다시 만드는 데이터 페이지 채우고 있도록 데이터 다시 정렬 됩니다. 충만의 수준은 FILLFACTOR 옵션을 사용 하 여 구성할 수 있습니다. 이 방법의 단점은 드롭/재현 주기 동안 인덱스는 오프 라인 및 작업이 원자입니다. 만약 당신이 휴식 인덱스 생성, 인덱스 다시 작성 아니다. 다른 말로 하면, 좋은 결과 얻기 위해 인덱스를 다시 작성 하기로 결정 그래서 다시 인덱스를 사용 해야 합니다.