原创 數據庫內核雜談(三):執行模式

在之前的文章中,我們通過存儲和索引,瞭解瞭如何把數據存儲在文件系統裏,然後根據不同的查詢語句,通過建立索引來提速讀取。今天,我們來聊一下當數據讀進內存後,數據庫怎麼繼續執行查詢。 之前系列文章都是以自底向上的線索來介紹數據庫內核。但在介紹具

原创 數據庫內核雜談(三):索引優化

在上一篇文章的末尾,我們留了一個坑。雖然通過列存,能夠避免讀取不必要的數據(沒使用的列)來提高查詢速度,但是對於下面這類點查詢(point query),還能不能進一步優化呢? SELECT * FROM titanic_survivor

原创 數據庫內核雜談(二):存儲“演化論”

數據庫是用來存儲海量數據的。存儲如此大量的數據,自然而然想到的就是以文件的形式存儲在硬盤(HDD或SSD)中。當然,一些商用數據庫爲了追求性能,是將數據優先存儲在內存中(比如SAP的HANA和MemSQL)來獲得更高速的讀寫。本文主要涉及的

原创 數據庫內核雜談(一):一小時實現一個基本功能的數據庫

數據庫內核博大精深,很多子系統的設計初看不知所云,但是細讀就會發現其已經做到了極致。但是市面上很少有類似的資源或者課程把數據庫內容的精髓講解出來,因此Facebook 現任 Tech Lead 顧仲賢撰寫了《數據庫內核雜談》的系列文章。