2010-03-19 3 views
2

나는 선택할 수있는 데이터를 저장할 아카이브 테이블을 만들었습니다.인덱스 된 테이블에 대량 데이터를 삽입 할 때 시간 비용이 일정합니까?

매일 일괄 레코드를 아카이브 테이블로 전송하는 프로그램이 있습니다. 인덱싱되는 여러 열이 있습니다. 다른 사람들은 그렇지 않습니다.

가 I가 배치 삽입 당 시간 비용에 관심을 오전 :
- 1 배치 삽입 : N1
- 2 일괄 삽입 : N2
- 3 배치 삽입 : N3

질문은 : 것입니다 N1, N2 및 N3은 대략 동일하거나, N3> N2> N1?

즉, 시간 비용은 여러 인덱스가있는 상수 또는 증분 값이됩니까?

모든 인덱스가 클러스터되지 않습니다.

아카이브 테이블 구조

은 이것이다 :

create table document (
    doc_id int unsigned primary key, 
    owner_id int, -- indexed 
    title smalltext, 
    country char(2), 
    year  year(4), 
    time  datetime, 

    key ix_owner(owner_id) 
} 
+0

을 추구합니다, 메모리에 비례한다 및 N3? –

+0

N1은 첫 번째 배치 삽입의 시간 비용입니다. N2는 두 번째 배치 삽입의 시간 비용입니다. N3은 세 번째 배치 삽입의 시간 비용입니다. –

답변

2

비용, O(log(n)) 증가 할 것이다. 인덱스 크기가 특정 임계 값에 도달하고 인덱스 페이지가 캐시의 크기에 MyISAMinnodb_buffer_pool_sizekey_buffer_size에 의해 정의된다

캐시에 맞는 중지 할 때

실제로, 당신은 그래프의 단계를해야합니다 InnoDB. 탐색 시간

이 임계 값 전에, 비용은 임계 후, 비용은 디스크에 비례 N1, N2 무엇 시간 (모든 과정의 log(n) 곱한)

+0

몇 가지 설명을 제공해 주시겠습니까? –

+0

@ Silent Song : B-Tree 인덱스에 레코드를 삽입하는 데 드는 비용은 레코드를 찾는 데 필요한 페이지 트래버스 수와 페이지 분할 수에 따라 다릅니다. 페이지 분할 비용은 일정합니다. 'O (log (n))'에서 순회 횟수가 증가합니다. 인덱스가 커지면 인덱스 페이지가 캐시에 들어가기를 멈추고 페이지 분할 및 페이지 통과에 디스크 읽기가 필요할 때 그래프의 단계를 관찰 할 수 있습니다. – Quassnoi

+0

설명해 주셔서 감사합니다! –

관련 문제