是什么减缓了数据库性能的增长?

5 database scalability insert batch-file

我正在创建一个数据库,并首先进行原型设计和基准测试.我正在使用H2,一个开源的,商业免费的,可嵌入的,关系型的java数据库.我目前没有索引任何列.

数据库增长到大约5GB后,其批处理写入速度加倍(写入速度减慢了原始速率的2倍).我使用一个新的,干净的数据库写入大约每行25行,现在是7GB,我写的大约是7行/ ms.我的行由short,int,float和byte [5]组成.

我对数据库内部甚至H2的编程知之甚少.我还要注意,我并没有贬低H2,因为这是我测试的其他DBMS的一个问题.

如果没有索引开销,哪些因素可能会减慢数据库的速度?它主要与文件系统结构有关吗?根据我的结果,我假设Windows XP和ntfs处理文件的方式使得在文件增长时将数据附加到文件末尾的速度变慢.

Mat*_*ley 1

这很可能是由可变宽度字段引起的。我不知道H2是否允许这样做,但是在MySQL中,您必须使用所有固定宽度字段创建表,然后将其显式声明为固定宽度字段表。这使得 MySQL 能够准确计算出需要在数据库文件中的何处进行插入。如果您没有使用固定宽度的表格,那么它必须读取表格才能找到最后一行的末尾。

附加数据(如果操作正确)是一个 O(n) 操作,其中 n 是要写入的数据的长度。它不依赖于文件长度,有查找操作可以轻松跳过。