我正在创建一个数据库,并首先进行原型设计和基准测试。我正在使用 H2,一个开源的、商业免费的、可嵌入的、关系型的 Java 数据库。我目前没有对任何列进行索引。
数据库增长到 5GB 左右后,它的批量写入速度翻了一番(写入速度减慢了原来的 2 倍)。我每毫秒用一个新的、干净的数据库写大约 25 行,现在我写了 7GB 大约 7 行/毫秒。我的行由一个 short、一个 int、一个 float 和一个 byte[5] 组成。
我不太了解数据库内部结构,甚至对 H2 的编程方式也不太了解。我还想指出,我并不是在说 H2,因为这是我测试过的其他 DBMS 的问题。
如果没有索引开销,哪些因素可能会减慢这样的数据库速度?它主要与文件系统结构有关吗?根据我的结果,我假设 Windows XP 和 ntfs 处理文件的方式使得随着文件的增长将数据附加到文件末尾的速度变慢。