標籤:

有什麼好的書籍了解sql執行細節?比如執行計劃之類的。

sql


資料庫查詢優化器的藝術 (豆瓣)

資料庫系統概念 (豆瓣)

資料庫系統概念 (豆瓣)


oralce資料庫推薦崔華的《基於oracle的sql優化》


從你的提問來看,不知道你是想知道執行計劃是怎麼產生的?

還是執行計劃的真正的執行細節。

不管怎麼樣,你可以看看資料庫系統概念這書,可以挑裡面那幾章看看。

如果是想知道執行計劃怎麼產生的,資料庫查詢優化器的藝術,這本書你要抓住一條線。從關係代數的理論上,資料庫支持哪些形式的優化,現實是殘酷的,資料庫又實現了哪些優化條目,其實本質上這涵蓋了sql優化的本質,sql優化器無能為力的地方(或者sql優化器產生錯誤的地方)就是人工sql優化的起點。

至於執行計劃的執行細節,不知道你用什麼資料庫了。哪裡加鎖,哪裡加栓,哪裡自旋,解決並發,哪裡緩存數據,冷熱端,LRU鏈表,數據怎麼存啊。redo undo之類的。

MySQL:

mysql技術內 innodb存儲引擎 那系列的書非常經典。

Oracle:

有蠻久不用Oracle,從官方文檔開始建立基本概念。各個方向的書有很大不同,排故障和內核原理,內核原理,印象比較深的是oracle內核揭秘那本書不錯來著。


可以先看《資料庫系統概念》有一個整體的概念,再看《資料庫查詢優化器的藝術》了解細節

另外補充一個課程:CMU 15-721 :: Database Systems (Spring 2016)

不過最好還是能找一個開源的資料庫,看看代碼,比如pg


只選一本的話推薦 Database Systems The Complete Book (豆瓣)


《高性能mysql》 這本書不錯,內容也合適


Stonebraker的architecture of a database system建議看看,作者為資料庫四大導師之一,在資料庫實現方面做出過突出貢獻而獲得圖靈獎,該書120多頁,可以說是關係資料庫學習的roadmap, 裡面提到了很多查詢優化的相關論文和系統實現。


Calcite


自認為比較了解SQL執行器的細節了,但不是從書里了解的。下載一個postgres,用各種場景去explain sql語句,完了以後,看postgres的代碼,不用半年,對SQL執行器的細節就比較理解了。


《PostgreSQL 資料庫內核分析》豆瓣評分:7.5(39人評) https://www.douban.com/doubanapp/dispatch?uri=/book/6971366/


正好前幾天看了輪子哥推薦的

資料庫管理系統原理與設計

這本書,業餘看了幾天蠻偏底層的。不知道是否符合樓主的需要?


推薦閱讀:

mysql表中查找和小於某個數的所有最前面的記錄?
以 MySQL 為例,如何進行 SQL 注入和防止被注入?
分享下你寫過的你覺得最厲害的sql語句?
請教一下大家,關於 MySQL 百萬數據量的 count(*) 查詢如何優化?
sql 查詢如何將結果集 輸出為一段字元串?

TAG:SQL |