本文翻譯了如下章節, 介紹資料庫查詢優化器的雜湊連線的實現原理:
雜湊連線演算法更複雜,但在大多數情況下效能也比迴圈巢狀連線更優。
獲取內連線表的所有元素。
在記憶體中構件一張雜湊表。
逐條獲取外連線表中資料。
計算外連線表每條資料的雜湊值,用前面雜湊表的雜湊函式。通過雜湊值找到關聯內連線表的桶。
判斷桶中是否存在元素與外連線表中的資料匹配。
內連線表被劃分為x個雜湊桶。
雜湊函式計算的雜湊值是均勻分布的,也就是說產生的雜湊桶大小是相同的。
匹配外連線表中的元素與桶中的元素所有元素,所需要的開銷是桶中元素的數量(譯者注:即桶中所有的元素都會參與比較一次)。
這個演算法的時間複雜度是(m/x) * n + cost_to_create_hash_table(m) + cost_of_hash_function*n
如果雜湊演算法建立的桶足夠小(譯者注:極限情況是乙個元素乙個桶),那麼時間複雜度可以到o(m+n)。
同時對內連線表和外連線表計算雜湊表。
然後將雜湊表放到磁碟上儲存。
然後按一桶一桶的方式比較內連線表和外連線表(將其中乙個桶資料完成讀到記憶體,另乙個桶的資料逐條讀取)。
資料儲存原理 查詢優化
從乙個簡單的例子出發,通過不同資料量的階段來看資料儲存系統的演化過程,幫助大家了解資料庫儲存系統中查詢優化的一些基本原理和思路。例子 乙個圖書管理系統,有id,bookname,author等字段 需求是根據id來獲得書名和作者等資料。模式一 小資料量 可以採用hashmap的形式,以id為key,...
關係型資料庫原理
這篇文章是對知乎上如何自己實現乙個關係型資料庫的乙個嘗試性回答,後續會不斷更新。對外資料模型為關係型資料庫,內部的實現主要分成兩大類,一類是disk based,比如mysql,postgres,一類是memory based,後者包括memsql,sap haha,oceanbase。這裡說乙個d...
關係型資料庫工作原理 資料庫整體框架 4
所謂的資料庫是指一組易於訪問和修改的資料集合。但是,但是一組簡單的檔案也能實現這個功能。實際上,最近簡單的一些資料庫系統如sqllite實現的功能與一組檔案沒有大的差異。但是,sqllite可以算作設計得非常優秀的一組檔案。因為它支援 通過事務管理保證了資料的安全性和一致性。大資料快速處理能力,能處...