数据库实现细节 - 每行标头开销

时间:2012-01-02 14:19:09

标签: database database-design data-modeling

提示此问题的问题与创建类似于构建IR系统时使用的巨大倒置指数有关。 IR社区的一般口号是关系数据库不适合构建IR系统。无论如何,在查看posgres时,行元组开销是23字节+填充(请参阅Postgres FAQ中的“从典型文本文件存储数据需要多少数据库磁盘空间?”)。这对我的工作来说太大了(不缩放)。

顺便提一下,我的数据集是17个文本,需要4-5个表,具体取决于问题的切片方式。我记得在sqlite中尝试了一个模式,并且db文件打破了100个gigs

我很想知道Sql Server / MySql / Sqlite / Berkeley db(所有访问方法)/ Berkley Db的sqlite3接口/ Kyoto,Tokyo db和Firebird的每行开销是多少。 / strong>任何一个人都无法回答我的问题,除非有人像我一样好奇地调查此事。

修改

  • Postgres - 23(OMG!)byte tuple header + padding。
  • bdb-hash:26字节页面开销,6字节密钥/数据开销 (组合)。
  • Bdb-btree:26字节页面开销,10字节密钥/数据开销 (组合)。
  • MySql Innodb:analysed here(5字节标题+事务ID +滚动指针=每行18行)note-to-self:为什么事务ID出现在磁盘上?什么是滚动指针?
  • Sql Server:from here。捕获变量元素长度,具有静态数据类型的行会产生非常适度的开销。开销估计很大程度上取决于模式和数据的性质。变量元素越大,开销越大。

0 个答案:

没有答案