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

Has*_*yed 6 database database-design data-modeling

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

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

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

编辑

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