为什么删除文档不会立即释放空间d# 不变性
写到磁盘的倒序索引是不变的:自从写到磁盘就再也不变。d这会有很多好处:
不需要添加锁。如果你从来不用更新索引,那么你就不用担心多个进程在同一时间改变索引。d一旦索引
被内核的文件系统做了 +,它就会待在那因为它不会改变。只要内核有足够的缓冲空间,绝大多数
的读操作会直接从内存而不需要经过磁盘。这大大提升了性能。d其他的缓存例如 2!在索引的
生命周期内保持有效,它们不需要每次数据修改时重构,因为数据不变。d写一个单一的大的倒序索引可
以让数据压缩,减少了磁盘 %/ 的消耗以及缓存索引所需的 *34。
当然,索引的不变性也有缺点。如果你想让新修改过的文档可以被搜索到,你
必须重新构建整个索引。这在一个 "5 可以容纳的数据量和一个索引可以更
新的频率上都是一个限制。
2.6.2 动态更新索引
如何在不丢失不变形的好处下让倒序索引可以更改?答案是:使用不只一个的
索引。d新添额外的索引来反映新的更改来替代重写所有倒序索引的方案。d
- 引进了 6 搜索的概念。一个 是一个完整的倒序
索引的子集,所以现在 "5 在 - 中的含义就是一个 的集合,
每个 都包含一些提交点!。见 ,-#。新的文档
建立时首先在内存建立索引 -7,见 ,-#8。然后再被写入到磁盘的
,见 ,-#。
评论0
最新资源