【问题标题】:how sqlite stores its contentsqlite 如何存储其内容
【发布时间】:2011-07-25 01:15:27
【问题描述】:

根据我的谷歌,sqlite does't support clustered indexes(参见四:聚集索引),但我不明白的是:

这意味着如果您的索引是 顺序整数,记录是 物理布局在数据库中 INTEGER 的顺序是 1 然后 2 然后 3。

  1. 如果从包含顺序 int 索引的表中删除某些记录,新插入的记录应该放在哪里?据我所知,记录 int ID 只会增长,所以记录会附加到尾部,对吗?删除的地方是不是浪费了?
  2. 在没有顺序INTEGER索引的情况下,sqlite表是堆表吗?即记录将放置在第一次找到可用空间的位置。

【问题讨论】:

    标签: database sqlite indexing database-indexes


    【解决方案1】:

    1) 对了,tail 会发生记录。是的,如果数据库引擎不能轻松地重用它,删除的地方可能会被浪费。使用命令VACUUM 压缩数据库时,未使用的位置将被删除。

    2) 是的,这样的 SQL 表是堆表。但是(任何类型的)索引都是精确地用来访问数据的,就好像记录已经排序一样。索引是链接到记录的排序值。但新记录不一定放在最先找到空闲空间的地方。考虑到写入二进制数据的未使用空间和时间(在队列中发生比在中间插入更快),它们被放置在数据库引擎填充的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-11
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-11
      • 1970-01-01
      相关资源
      最近更新 更多