經常用everything對硬盤有傷害嗎?
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本身是為廣大的普通用戶提供一個通用的使用平臺,如果叫普通人去使用布爾運算符、通配符、正則表達式來快速的索引文件反而有點不現實。
所以微軟要去權衡全球用戶的接受程度,但微軟可以提供接口,讓開發者去充分發揮想象空間,這就是平臺和生態圈的概念了。
以上個人淺見,歡迎批評指正。
認同我的看法,請點個贊再走,感謝!
喜歡我的,請關注我,再次感謝!