클러스터 된 인덱스는 사용자 지정 순서에 따라 물리적으로 디스크의 테이블 행을 정렬합니다. 테이블이 파일에 저장되어 있다고 가정합니다 (테이블 당 하나의 파일일까요?). 그럼에도 누군가가 테이블에 "새로운 행"을 삽입한다고 가정 해 봅시다. 시작 부분에 배치되어야합니다. 그런 다음 데이터베이스는 전체 테이블 (모든 행)을 물리적으로 파일로 이동해야합니까? 너무 느리거나 삽입 후 정렬 된 순서를 얻는 방법에 대한 최적화 기술이 있습니까?클러스터 된 인덱스가있는 테이블에 삽입
답변
테이블이 반드시 파일로 저장되는 것은 아닙니다. 논리적으로, 그들은 페이지에 저장됩니다. 모든 페이지에 100 개의 행이 있고 필요에 따라 추가로 20 개의 행을 저장할 수 있다고 가정합니다. 그런 다음 모든 페이지가 링크되어 전체 테이블 데이터를 만듭니다.
처음에는 새 행을 추가 할 때 첫 번째 페이지 만 변경하면 100 개의 행만 이동됩니다. 그 페이지의 행 수가 120을 초과 할 때 반복해서 반복하면 페이지가 함께 링크 된 두 개의 새 페이지로 분할됩니다.
맞아, 내 실수. –
난 그냥 추가 할 것입니다. . . "테이블이 반드시 파일로 저장되는 것은 아닙니다". 데이터베이스는 원하는대로 테이블을 저장할 수 있지만 SQL을 지원하는 일부 데이터베이스는 테이블을 파일에 넣을 수 있습니다. 대부분 그렇지 않지만 엔진을 작성하는 사람들을위한 디자인 결정입니다. –
좋은 지적. 물론 모든 데이터베이스는 테이블을 파일에 저장할 수 있습니다. 나는 그 질문에 대한 일반적인 관점을 제시하고 있었다. 그러나 대부분의 경우와 오라클, DB2 또는 SQL 서버와 같은 대부분의 DBMS에서는 행 -> 페이지 -> 테이블 -> 파일 또는 디스크가됩니다. 나는 당신의 요점에 따라 나의 응답을 편집 할 것이다. –
- 1. 클러스터 된 인덱스가있는 테이블에 병렬로 대량 복사하는 방법?
- 2. 많은 인덱스가있는 테이블에 대해 느린 대량 삽입
- 3. 클러스터 된 인덱스가있는 테이블에 새 행을 추가 할 때 행의 실제 순서가 유지됩니까?
- 4. SQL 서버에서 클러스터 된 인덱스를 삭제해도 안전합니까?
- 5. 이 SQL 2005 테이블에 고유 한 클러스터 된 인덱스 또는 고유하지 않은 클러스터 된 인덱스를 만들어야합니까?
- 6. CodeIgniter에서 조인 된 테이블에 삽입
- 7. 로깅 테이블에 대한 클러스터 된 인덱스 선택에 대한 조언이 필요합니다.
- 8. oracle의 기존 테이블에 클러스터 추가
- 9. 클러스터 된 인덱스
- 10. 클러스터 된 인덱싱
- 11. 클러스터 된 인덱스 스캔 대신 클러스터 된 인덱스는 왼쪽 인덱스 추구하지 왜 두 테이블에
- 12. 인덱스가있는 열을 삽입/업데이트/삭제하는 방법은 무엇입니까?
- 13. 다른 테이블에 삽입 된 값을 삽입하십시오.
- 14. 테이블에 행이 삽입 된 데이터 찾기
- 15. 테이블에 삽입 된 데이터 변경/편집
- 16. 기본 키가없는 테이블에 데이터를 삽입 하시겠습니까?
- 17. 클러스터 된 인덱스 SQL Server
- 18. 테이블에 셀 삽입?
- 19. 하이브 테이블에 삽입
- 20. GraphViz - 여러 줄로 된 클러스터 클러스터
- 21. jdbc로 여러 테이블에 삽입
- 22. 클러스터 된 인덱스는 언제 필요합니까?
- 23. 데이터 누락시 테이블에 삽입
- 24. 삽입 테이블에 대한 트리거
- 25. NewSequentialId UniqueIdentifier 클러스터 된 인덱스
- 26. 클러스터
- 27. 클러스터 된 해시도
- 28. 스프링이있는 클러스터 된 MDB
- 29. MySQLdb가 dict을 테이블에 삽입
- 30. 날짜가 mysql 테이블에 삽입
RDBMS는 무엇입니까? SQL Server? –
** SQL Server **에 대해 이야기하고 있다면 - 데이터는 균형 잡힌 b-tree 구조로 구성된 8K 페이지로 유지됩니다. 테이블에서 새로운 행이 삽입되는 위치는 거의 무의미합니다. 취할 수있는 단계가있을 수도 있고 없을 수도 있지만 ** 분명히 ** 순차적 인 파일 형 구조는 아닙니다. 새로운 행이 삽입되면 다시 ... –