현재 우리 데이터베이스의 크기는 10GB이며 한 달에 약 3GB 씩 증가하고 있습니다. 자주 나는 쿼리 실행 시간을 향상시키기 위해 인덱스를 수시로 재 구축해야한다고 들었습니다. 주어진 시나리오에서 얼마나 자주 인덱스를 재 작성해야합니까?SQL Server 데이터베이스에서 인덱스를 얼마나 자주 다시 작성해야합니까?
답변
이 당신이 바로 인덱스 조각화가 5 개 이상 (때로는 10 %)에 도달로 인덱스를 ("조각 모음") 재구성한다 일반적인 합의, 그리고이 30 %를 넘어 완전히 때 (을 재건한다 적어도 그것은 많은 장소에서지지하는 것으로 들었던 숫자입니다).
Michelle Ufford (a.k.a. "SQL Fool")에는 automated index defrag script이 있으며 인덱스를 재구성하거나 다시 작성할시기를 결정하는 정확한 한계를 사용합니다.
인덱스 재구성을 처리하는 방법에 대한 좋은 생각과 팁을 가지고 Brad McGehee's tips on rebuild indexes을 참조하십시오. 내가 여기에이 스크립트를 사용
(나는에서이 왔을 때 기억이 안나요 - 그것이 누구! 많은 덕분에 정말 도움이 물건을) 지정된 데이터베이스에있는 모든 인덱스에서 인덱스 조각화를 표시 :
SELECT
t.NAME 'Table name',
i.NAME 'Index name',
ips.index_type_desc,
ips.alloc_unit_type_desc,
ips.index_depth,
ips.index_level,
ips.avg_fragmentation_in_percent,
ips.fragment_count,
ips.avg_fragment_size_in_pages,
ips.page_count,
ips.avg_page_space_used_in_percent,
ips.record_count,
ips.ghost_record_count,
ips.Version_ghost_record_count,
ips.min_record_size_in_bytes,
ips.max_record_size_in_bytes,
ips.avg_record_size_in_bytes,
ips.forwarded_record_count
FROM
sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'DETAILED') ips
INNER JOIN
sys.tables t ON ips.OBJECT_ID = t.Object_ID
INNER JOIN
sys.indexes i ON ips.index_id = i.index_id AND ips.OBJECT_ID = i.object_id
WHERE
AVG_FRAGMENTATION_IN_PERCENT > 0.0
ORDER BY
AVG_FRAGMENTATION_IN_PERCENT, fragment_count
데이터베이스의 크기가 주어지면 한 달에 한 번 색인을 쉽게 다시 작성할 수 있습니다. 그러나 크기가 증가함에 따라 약 500GB로, 한 달에 두 번 할 수 있습니다.
오픈 트랜잭션의 수, 유형 및 수명에 따라 다릅니다.이것은 매우 활동적인 10GB 데이터베이스 일 수 있습니다. – NTDLS
"필요한 경우"및 "가능한 경우"! 예를 들어
...
이첫 조각에 대한 테스트 및 아무것도 재구성을 수행하거나 재 구축 할 것인지 여부를 결정합니다. SQL Fool's script does this 예를 들어, 주말
매일@minFragmentation
및@rebuildThreshold
매개 변수마 통계, 말, 그러나 인덱스가 있습니다. 유지 관리 창은 무엇입니까?
인덱스 저하로 인해 제품이 악영향을받지 않도록 인덱스를 자주 다시 작성해야합니다. 나는 이것이 모호하게 보인다는 것을 이해한다. 그러나 모든 데이터베이스는 다르고 다른 방식으로 사용된다. 쓰기 작업 (삽입/업데이트)이 발생하는 인덱스는 정기적으로 다시 작성/조각 모음해야합니다. 정적 또는 주로 읽기 전용 테이블은 많이 다시 색인 할 필요가 없습니다.
색인의 조각화 수준을 확인하고 조각화되는 빈도 및 조각화의 실제 수준을 결정하려면 dbcc showcontig([Table])
을 사용해야합니다.
인덱스가 너무 단편화되어 (20 % -30 % 이상) 색인이 완전히 다시 작성되지만 충분히 큰 중단 시간 창을 찾을 수없고 조각화 수준이 상대적으로 낮 으면 (1 % -25 %) 색인을 완전히 다시 작성하십시오. dbcc indexdefrag([Database], [Table], [Index])
을 사용하여 "온라인"fassion에서 색인을 조각 모음해야합니다. 또한 인덱스 조각 모음 작업을 중지하고 나중에 작업을 손실하지 않고 다시 시작할 수 있음을 명심하십시오.
데이터베이스와 해당 색인을 "조정"상태로 유지하면 약간의 모니터링을 통해 언제 다시 색인 할 지에 대한 느낌을 얻습니다.
SQL Server 2005에서이 3 가지 DBCC 명령 중 아무 것도 사용하지 않을 것입니다. – gbn
나는 오래 전부터, 학교 SQL 사람. 좀 자세히 알려주세요 .... 계몽 해주세요. – NTDLS
SQL Server 2005부터는 사용되지 않는 것으로 표시되어 이후 버전에서는 제거 될 예정입니다. 다음을 언급하는 URL은 다음과 같습니다. http://weblogs.sqlteam.com/tarad/archive/2007/02/26/60121.aspx & http://www.mssqltips.com/tip.asp?tip=1352 및 여기에 지혜의 공식 단어가 있습니다. http://msdn.microsoft.com/en-us/library/ms143729.aspx –
- 1. SQL Server 2000에서 얼마나 자주 통계를 업데이트합니까?
- 2. 새 SQL Server 인덱스를 만드는시기는 언제입니까?
- 3. 라이센스를 얼마나 자주 확인합니까?
- 4. 얼마나 자주 테이블 쿼리를
- 5. 얼마나 자주 autoconf를 실행합니까?
- 6. 데이터를 일괄 적으로 삽입하지 않을 때 인덱스를 다시 작성해야합니까?
- 7. 이 변경 사항에 대해 lucene 인덱스를 다시 작성해야합니까?
- 8. Event.RENDER가 얼마나 자주 호출됩니까?
- 9. EntityManager를 얼마나 자주 만들어야합니까?
- 10. 얼마나 자주 파일에 저장해야합니까?
- 11. GC는 얼마나 자주 실행됩니까?
- 12. 데이터베이스 연결을 얼마나 자주 닫아야합니까?
- 13. SQL Server 데이터베이스에서 양식 생성
- 14. 얼마나 자주 코어 데이터에 저장해야합니까?
- 15. SQL Server 데이터베이스에서 바이트 유지
- 16. SQL Server 데이터베이스에서 사용자 삭제?
- 17. 파이썬 장식자를 얼마나 자주 사용해야합니까?
- 18. 파이썬은 얼마나 자주 파일로 플러시됩니까?
- 19. 얼마나 자주 WSDL URL을 읽어야합니까?
- 20. 연속 통합 - 얼마나 자주 지속됩니까
- 21. 얼마나 자주 코드 검토를 수행해야합니까?
- 22. 얼마나 자주 Quartz Scheduler가 깨어나나요?
- 23. 얼마나 자주 QT에서 데이터베이스를 설정해야합니까?
- 24. 얼마나 자주 맞춤 이벤트를 사용합니까?
- 25. SQL Server 데이터베이스에서 관리되는 어셈블리 버전 확인
- 26. SQL Server 및 인덱스
- 27. iis7.5의 주요 코드를 다시 작성해야합니까?
- 28. solr에서 인덱스를 다시 작성하려면 어떻게해야합니까?
- 29. SQL Server Express Edition은 얼마나 확장됩니까?
- 30. SQL Server 2005 MDF 파일은 얼마나 안전합니까?
Brad McGhee의 팁에 대한 링크가 깨졌습니다. 어쩌면 이것이 올바른 링크 일 것입니다. http://www.sql-server-performance.com/2007/rebuilding-indexes/ –