none
데이터베이스 유지 관리 계획 관련 문의입니다. RRS feed

  • 질문

  • 안녕하세요.
    비가 온 후로 기온이 더 많이 떨어진 것 같습니다.

    MS SQL Server 관련해서 여쭤 볼 것이 있어서요...
    데이터베이지 유지 관리 계획에 있는 내용으로 정확하게 어떤 것이 궁금해서 문의를 드립니다.

    1. 데이터와 인덱스 페이지 다시 구성하기
    2. 쿼리 최적화 프로그램에서 사용하는 통계 업데이트
    3. 데이터베이스 화일에서 사용하지 않은 공간 제거

    위의 3가지 항목이 의미하는 내용을 아시면 좀 알려 주시면 감사드리겠습니다.
    그리고, 참고할만한 자료가 있으시면 좀 보내 주시면 감사드리겠습니다...

    그리고, 위의 3가지 항목은 얼마의 주기로 스케쥴을 걸어 주는 것이 좋을지 조언도 좀 부탁드립니다.

    감기 조심하시고요....
    즐겁고 행복한 하루 보내세요.....

    2006년 11월 29일 수요일 오후 1:42

모든 응답

  • 2005 기준으로 간단히 의미를 알려드립니다.

    1. 인덱스 페이지 다시 구성 (데이터 페이지 다시 구성이란 유지 관리 계획은 없답니다..)

    SQL Server 2005 데이터베이스 엔진 에서는 기본 데이터에 삽입, 업데이트 또는 삭제 작업을 수행할 때마다 인덱스를 자동으로 유지 관리합니다. 이러한 수정이 거듭되면 시간이 흐름에 따라 인덱스의 정보가 조각화되어 데이터베이스 내에 흩어지게 될 수 있습니다. 조각화는 키 값을 기준으로 하는 인덱스의 논리적 페이지 순서가 데이터 파일 내의 물리적 순서와 일치하지 않을 때 나타납니다. 심하게 조각화된 인덱스는 쿼리 성능을 저하시키고 응용 프로그램의 응답을 늦출 수 있습니다.   SQL Server 2005 에서는 인덱스를 다시 구성하거나 다시 작성하여 인덱스 조각화 문제를 해결할 수 있습니다.

    sys.dm_db_index_physical_stats 의 정보를 query해서 인덱스를 다시 구성해야 할지, 아니면 다시 작성해야 할지 판단할 수 있습니다. 

    2. 통계 업데이트

    통계 업데이트 작업은 지정된 테이블이나 인덱싱된 뷰에서 하나 이상의 통계 그룹(컬렉션)의 키 값 배포에 대한 정보를 업데이트합니다. 쿼리 최적화 프로그램에서는 이 통계 정보를 바탕으로 인덱스 사용 비용을 예측하고 쿼리를 평가하여 최적의 쿼리 계획을 결정합니다. 

    일반적으로 AUTO_UPDATE_STATISTICS 데이터베이스 옵션을 ON(기본값)으로 설정하면 쿼리 최적화 프로그램에서는 테이블의 데이터가 변경됨에 따라 주기적으로 이 통계 정보를 업데이트합니다. 쿼리 실행 계획에 사용되는 통계가 현재 통계 테스트에 실패할 때마다 통계 업데이트가 시작됩니다. 샘플링은 데이터 페이지에서 임의로 이루어지고 통계에서 필요로 하는 테이블이나 열의 가장 작은 비클러스터형 인덱스에서 수행됩니다. 디스크에서 데이터 페이지를 읽으면 데이터 페이지의 모든 행을 사용하여 통계 정보를 업데이트합니다. 대부분의 경우 데이터 행의 약 20%가 변경되면 통계 정보가 업데이트됩니다. 그러나 쿼리 최적화 프로그램에서는 항상 최소한의 행 수를 샘플링합니다.

    3. 데이터베이스 축소 작업

    데이터베이스의 크기를 줄이는 작업을 만들 수 있습니다. 옵션을 사용하면 데이터베이스를 축소한 후 사용되지 않는 상태로 데이터베이스에 유지할 공간의 양을 결정할 수 있습니다. 이 비율이 커질수록 데이터베이스를 축소할 수 있는 비율이 줄어듭니다. 이 값은 데이터베이스에 있는 실제 데이터의 비율에 따라 결정됩니다. 예를 들어 60MB의 데이터와 40MB의 사용 가능한 공간이 있는 100MB의 데이터베이스에서 사용 가능한 공간의 비율을 50%로 설정하면 60MB의 50%는 30MB이기 때문에 데이터 공간은 60MB가 되고 사용 가능한 공간은 30MB가 됩니다. 데이터베이스에서 남는 공간만 제거됩니다. 유효한 값은 0에서 100까지입니다.

    일반적으로 데이터베이스 파일을 크게 잡아두었으나, 사용해본결과 데이터 사이즈가 파일 사이즈보다 작은 비율로 사용되며, 관련 하드 디스크 용량이 부족할때 사용합니다.

    위의 유지 관리 계획을 수립하는데는 데이터베이스의 용도(OLAP?OLTP) 및 사용량등 여러가지 정보가 필요합니다.

    데이터가 많이 변할 경우 인덱스 페이지 다시 구성하기가 필요하고 데이터가 거의 변화하지 않는 경우에는 인덱스 페이지 다시 구성하기가 거의 필요없습니다.  sys.dm_db_index_physical_stats를 주기적으로 query해서 스케줄을 잡으시면 될듯 합니다.

    통계 업데이트는 기본적으로 SQL Server Engine에서도 수행해주는 관계로 DB 이관시에만 수행하는 경우가 많습니다.

    PM시나, 데이터베이스 사용량이 적은 시간대에 데이터 변경이 많은 데이터베이스에 한해서 한번씩 돌리면 될듯 합니다.

    데이터베이스 축소작업은 디스크용량이 부족하지 않는 경우에는 사용하지 않으셔도 무방합니다.

     

    도움이 되셨길..

     

    2006년 11월 30일 목요일 오전 1:02