Everything是很多人都很喜欢的一款Windows上的搜索引擎,它比Windows内置的搜索要快得多得多。

Everything的工作原理

在了解Everything如何工作之前,我们还需要理解NTFS的两个功能,MFT和

USN journal。

MFT(Master File Table)

NTFS文件系统中,有一个特殊的MFT表,它位于每个NTFS分区的根目录中,名为$MFT。所有文件夹和文件的名称都存储在这样一张表中,但不能通过用户模式API进行访问。

USN journal

NTFS文件系统还拥有一个日志功能,它最初是一个空文件,每当对卷进行更改时,一条记录就会被添加到$Extend\$UsnJrnl的NTFS元文件中。它并不包含与更改相关的所有数据或详细信息,因此更改这个日志不能对NTFS中的文件进行操作。

Everything在启动时会扫描系统所有的NTFS卷的MTF表,将文件名称以一种利于字符串检索的算法形式存储在Everything的index索引数据库中。除此之外,Everything还会在系统运行过程中监控NTFS卷的USN日志文件,假如文件系统中的文件发生了改变,那么Everything就会更新它的index索引数据库。

由于Everything并不索引文件具体内容,并且依赖USN日志来过滤文件更新,因此只需要占用很少的内存和处理器时间。Everything的索引过程和搜索过程非常快速,几乎是一瞬间完成,占用系统资源极低,同时能实时更新索引数据库和搜索结果,这些优点使得在磁盘容量越来越大、用户文件越来越多的情况下广受欢迎。

Everything和Windows内置搜索的区别

Windows内置搜索用的是普通的文件系统遍历查找,比如:FindFirstFile/FindNextFile之类的。当然Windows 7之后的版本也内置带索引的搜索功能,但非常复杂,不仅可以搜索文件名,还可以搜索文件内容,而且适用于任意文件系统。缺点就是需要一个后台服务爬虫不停地对文件系统进行索引,所以非常耗资源。

Everything在搜索时,根本没有遍历文件系统,它检索的是自己组织好的索引数据库,所以搜索速度是飞快的。不过Everything需要管理员权限才能读取USN日志,这会带来安全上的问题。

Everyting搜索功能会损伤硬盘吗?

不管是那一款快速搜索软件,想要搜索更快,就需要在遍历后形成索引。这个索引文件需要写在硬盘上,并且会更新,但通常这个索引文件都不会很大。对硬盘的造成的伤害可以忽略不计,它和我们拷贝到硬盘一个同等体积的文件相差并不大。

举个例子:

Everything索引一个全新安装的Windows 10(大约120000个文件)仅需要大约14MB的内存以及不到9MB的硬盘空间,仅需要1秒就可以索引完成。如果是一百万个文件大约需要75MB的内存和45MB的硬盘空间,索引完成大约需要1分钟。

这点损耗对比于Windows内置的搜索来说可谓是微乎其微,Windows内置的搜索不管你用不用,它默认都在工作。

为什么微软不去做一个Everything?

对于专业人士来说,毫无疑问Windows内置的搜索真的糟得一塌糊涂,但Windows本身是为广大的普通用户提供一个通用的使用平台,如果叫普通人去使用布尔运算符、通配符、正则表达式来快速的索引文件反而有点不现实。

所以微软要去权衡全球用户的接受程度,但微软可以提供接口,让开发者去充分发挥想象空间,这就是平台和生态圈的概念了。

经常用everything对硬盘有伤害吗?相关推荐

  1. 经常下载的朋友注意了,教你怎样硬盘零伤害(从论坛上拷下来收藏的)

    大家都知道下载东西会伤害电脑的硬盘,例如迅雷.电驴.比特之类的P2P软件.人人都说"P2P软件猛于虎",一方面是说它经常会爆料资源,另一方面是说它多线下载特性,不但会拖慢电脑的运行 ...

  2. 常用显示器,硬盘都有哪几种接口

    目前,电脑显示器常见的接口主要有HDMI.DP.DVI.VGA等4种接口.显示器数据线性能排名:DP>HDMI>DVI>VGA.其中VGA是模拟信号,现在基本被主流接口所淘汰,DVI ...

  3. centos常用操作——挂载硬盘

    硬盘(小于2TB)的操作 链接(大于等于2TB) 先查看一下硬盘是否已经挂载.(没挂载的不会显示) df -hT 2.以 root 用户执行以下命令,查看磁盘名称. fdisk -l 会显示信息类似如 ...

  4. linux rhel unix centos FreeBSD 查看CPU核数使用率 系统 位 内存大小 硬盘 HBA光纤卡号 常用命令

    一:使用CentOS常用命令查看cpu more /proc/cpuinfo | grep "model name"   grep "model name" / ...

  5. 对症下药 硬盘坏道检测与修复全攻略(组图)

    所有的电脑都要使用到硬盘,我们日常使用的所有数据都存储在硬盘上.硬盘作为电脑不可缺少的重要部件之一而被大家广泛认识.而短短的几年时间里,硬盘从几十MB发展到现在的几百GB,而TB级别的硬盘也已经出现, ...

  6. 计算机专业512g固态硬盘够吗,只有一块512G固态硬盘的电脑,需不需要分区?不存数据可以不分...

    原标题:只有一块512G固态硬盘的电脑,需不需要分区?不存数据可以不分 只有一块512G固态硬盘的电脑,需不需要分区?不存数据可以不分 电脑是我们日常办公或者工作最常用的设备,随着固态硬盘价钱不断走低 ...

  7. 树莓派做网站服务器同时做nas,【项目分享】树莓派4搭建NAS,让硬盘轻松联网...

    本篇内容来自达尔闻粉丝张志选同学使用树莓派4的实战操作分享:如何在树莓派4搭建NAS私人文件服务器?跟着下面视频一起来操作吧. 视频地址:https://www.bilibili.com/video/ ...

  8. idea 报系统分区磁盘不足_系统磁盘管理功能讲解,电脑硬盘分区格式化修改驱动器号图文教程...

    大家好,我是老盖,感谢观看本篇文章,本文做的也有视频,也可以看我发布的视频. 今天给大家讲一下系统自带的磁盘管理管理功能,磁盘管理比较常用的是硬盘分区,格式化和更改驱动器号这几个功能. 对着计算机点右 ...

  9. linux磁盘信息文件,Linux查看硬盘信息方法总结归纳

    Linux查看硬盘信息方法总结归纳 lsblk lsblk命令用来查看接入到系统中的块设备,默认输出分区.大小.挂载点等信息,一目了然: tlanyan@node1:~$ lsblk sda 8:0 ...

最新文章

  1. 计算机解决问题没有奇技淫巧,但动态规划还是有点套路
  2. 看完让你彻底搞懂Websocket原理
  3. 零基础python从入门到精通 pdf-跟老齐学Python从入门到精通.pdf
  4. 【Python②】python之首秀
  5. linux 新建用户、用户组 以及为新用户分配权限
  6. Mysql 零距离-入门(五)操作数据表
  7. Golang 项目布局浅析
  8. Mysql学习总结(74)——慢SQL!压垮团队的最后一根稻草!
  9. python安卓自动化原理_appium---appium自动化原理
  10. UDF-java获取名字中的姓
  11. C++ 练习题(一:布尔表达式与真值表图文详解)
  12. linux和windows下,C/C++开发的延时函数,sleep函数
  13. 数据库,SQL,万恶之源?
  14. (4)Spring框架----依赖注入(DI)
  15. 《企业IT架构转型之道》边读边想——平台稳定性能力
  16. Excel VBA宏
  17. 旅行商问题(TSP)、车辆路径问题(VRP,MDVRP,VRPTW)模型介绍
  18. Euraka学习笔记
  19. 计算机工程与工艺截稿,中国计算机学会第二十届计算机工程与工艺学术年会
  20. Windows11安装教程

热门文章

  1. .set伪指令(mips)
  2. 查看其他计算机的共享资源,NetResView (共享资源查看)
  3. mplab 语法错误不报错_Python怎么解决报错?
  4. Linux-Ubuntu安装软件
  5. 创建win10介质进度为0_win10介质创建工具(media creation tool)下载
  6. 如何使用python多线程_Python:怎样用线程将任务并行化?
  7. ajax 数据data,ajax取出data数据库
  8. mysql bit类型_Mysql:bit类型的查询与插入
  9. 软件工程(2018)第三次团队作业
  10. dxComponentPrinter记录