파티션 테이블을 이용하면 성능이 안나오는 대용량 테이블을 좀 더 효율적으로 관리할 수 있는것으로 알고 있습니다.
운영중인 시스템 중 2년간 로그를 하나의 테이블에 저장하는 경우 성능이슈가 발생해서 문의 드립니다.
이 경우 파일그룹을 추가하고, 월별로 파티션 함수와 스키마를 만들어 파티션 테이블로 전환하는게 좋을것 같은데요..
아래 링크의 글을 기준으로 3가지 질문이 있습니다~
1. 노 파티션 통 테이블에 데이터가 들어 있는 상황에서 파티션을 적용하려면 위 링크의..슬라이딩 윈도우 기법을 이용해
별다른 데이터 Insert 작업 없이 해결이 될까요?
2. 파티션 테이블이 결국 물리적으로 테이블의 데이터를 여러개의 파일로 나누어 IO를 분산한다는 의미이고
테이블은 하나가 되는데..제가 이해 한것이 맞는지요?
3. 작업 후, 프로그램쪽에서는 테이블명 하나만 변경하면 될지요? 혹은 테이블명을 원본 테이블명과 같이 변경하였다면
소스 수정 작업은 필요가 없을까요?
조언 부탁드립니다.~
1. 노 파티션 통 테이블에 데이터가 들어 있는 상황에서 파티션을 적용하려면 위 링크의..슬라이딩 윈도우 기법을 이용해
별다른 데이터 Insert 작업 없이 해결이 될까요?
네. 하지만 해당테이블의 데이터는 한 파티션으로 이동됩니다. switch 하려면 많은
조건을 만족해야하니 꼼꼼히 챙겨보시고 테스트디비에서 먼저 테스트후 작업하시면됩니다. 기존테이블을 파티션된 테이블로 이관하면서 기존자료도 분할시키시려면 슬라이딩 윈도우는 안되구요. 데이터를 인서트 시키셔야합니다. 만약 기존테이블을 분할시키시려면
클러스터인덱스를 리빌드 시키시면 됩니다. 이때 넌클러스터드인덱스를 삭제후 분할시키시고 그다음 다시 넌클러스터드를 생성시키시는게 시간과 부하를 줄일수 있을듯합니다.
2. 파티션 테이블이 결국 물리적으로 테이블의 데이터를 여러개의 파일로 나누어 IO를 분산한다는 의미이고
테이블은 하나가 되는데..제가 이해 한것이 맞는지요?
이건 저도 잘 모르겠습니다. 파일별로 다른디스크에 위치해있다면 IO분산이 효과가 있겠지만, 그렇게 하지않아도 SQL이 깔릴정도
의 서버라면 레이드구성을 다 하기 때문입니다. 또 한파티션만 읽는다고 병렬처리가 안되는것도 아니거든요.
이부분외에도 파티션구성시 성능상 잇점은 많습니다. 파티션된 인덱스의 깊이가 작아지고, 범위조건만 걸리면 풀스캔을 하더라도
해당파티션만 읽게 됩니다.
3. 작업 후, 프로그램쪽에서는 테이블명 하나만 변경하면 될지요? 혹은 테이블명을 원본 테이블명과 같이 변경하였다면
소스 수정 작업은 필요가 없을까요?
네 필요없습니다.