将数据批量插入索引表时,时间成本是否恒定?

时间:2010-03-19 14:28:49

标签: mysql indexing insert bulk

我创建了一个存档表,它将存储数据以供选择。

每天都会有一个程序将一批记录传输到存档表中。有几列被索引;而其他人则没有。

我担心每批插入的时间成本:
- 第一批插入:N1
- 第二批插入:N2
- 第3批插入:N3

问题是:N1,N2和N3大致相同,或者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)
}

1 个答案:

答案 0 :(得分:2)

费用将是增量,O(log(n))

实际上,当索引大小达到某个阈值并且索引页将停止适应缓存时,您将在图表上有一个步骤

缓存的大小由key_buffer_size中的MyISAMinnodb_buffer_pool_size中的InnoDB定义。

在此阈值之前,成本将与内存寻道时间成正比,在阈值之后,成本将与磁盘寻道时间成正比(当然全部乘以log(n)