關於 Hash index


什麼是 Hash Index?
Hash Index 是資料庫系統中的一種索引結構,它使用雜湊函數(Hash Function)將索引鍵(Key)映射到資料表中的記錄位置。相較於傳統的 B-Tree 索引,Hash Index 在某些特定查詢場景下能提供更高效的性能。
基本原理
Hash Index 的核心原理是:
使用雜湊函數將索引鍵轉換為雜湊值(Hash Value)
雜湊值決定資料記錄在雜湊表(Hash Table)中的儲存位置
查詢時,系統對索引鍵應用相同的雜湊函數,直接定位到對應的記錄
記憶體要求
Hash Index 的一個關鍵特性是其高效性能主要來自於記憶體操作:
數據必須存在於記憶體中: Hash Index 的效率優勢主要體現在記憶體內操作,因為它依賴直接的記憶體位置定位
從雜湊值到記憶體位置的映射是直接的,避免了磁碟 I/O 操作的延遲
一旦數據需要從磁碟讀取,Hash Index 的 O(1) 查詢優勢將大幅降低
這也是為什麼 Hash Index 在記憶體資料庫(如 Redis、Memcached)或記憶體表(如 MySQL 的 Memory 引擎)中特別常見
後記
Hash Index 必須在配合記憶體使用,若以 Redis 這種 NoSql 的記憶體儲存的 db 系統,Key value 與 Hash key 的查詢效率並無什麼差別,區為為 Hash key 操作的行為 hset 存入的是 Hash field 與 Hash value。
HSET user:1000 name "Carl"
HGET user:1000 name // return Carl
可以將結構化資料存入,就像物件資料一樣,類似於在關聯式資料庫中使用主鍵進行查詢,並選擇特定值的操作。
在 Redis 中,當需要存入結構化資料時,可以將資料序列化為 JSON 字符串,然後以 Key-Value 的形式存入。這樣做的好處是可以將整個結構化資料作為一個單一的字符串存儲,並在需要時通過反序列化(decode)來還原原始結構。這種方法適合於需要頻繁存取整個結構的情況,因為它簡化了存取操作,只需一次性讀寫整個資料。
Subscribe to my newsletter
Read articles from 李卡爾 directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
