表大小会影响INSERT性能吗?

时间:2011-09-21 23:42:32

标签: mysql database insert computer-science

这是一个问题,仅仅是为了询问:

除了所有中级到高级的主题或技术(聚集索引,BULK INSERTS,导出/导入技巧等)之外,INSERT在表格越大时需要更长的时间吗?

这假设只有一个auto-int列,ID [即,所有新行都是INSERTED在底部,没有内存需要洗牌以适应特定的行定位]。


链接到一个好的“基准测试MySQL”会很方便。我在学校学习了Oracle,到目前为止,这些知识对我没有什么好处。

谢谢大家。

4 个答案:

答案 0 :(得分:6)

是的,但这不是表格本身的大小,而是重要的指数大小。一旦索引重写开始颠簸磁盘,你会发现速度减慢。没有索引的表(当然,你的数据库中从来没有这样的东西)应该看不到降级。具有最小紧凑索引的表可以增长到非常大的尺寸而不会看到退化。具有许多大指数的表将开始更快地降级。

答案 1 :(得分:5)

我的经验是,如果数据集索引不再适合内存,性能会下降。一旦发生这种情况,检查重复索引将不得不命中磁盘,它将大大减慢速度。创建一个包含您认为必须处理的数据的表,并进行一些测试和调整。这真的是了解你会遇到什么的最好方法。

答案 2 :(得分:1)

我只能分享我的经验。希望它有所帮助。

我当时在大型数据库(数百万条目)上插入大量行。我有一个脚本打印执行插入之前和之后的时间。好吧,我没有看到任何表现下降。

希望它能给你一个想法,但我在sqlite上而不是在mysql上。

答案 3 :(得分:1)

只要MySQL可以更新内存中的完整索引,速度就不会受到影响,当它开始换出索引时会变慢。如果使用ALTER TABLE立即重建一个巨大的索引,会发生这种情况。