一:背景 1. 講故事 最近看各大技術社區,不管是知乎,掘金,博客園,csdn基本上看不到有小伙伴分享sqlserver類的文章,看樣子這些年sqlserver沒落了,已經後繼無人了,再寫sqlserver是不可能再寫了,這輩子都不會寫了,只能靠技術輸出mysql維持生活這樣子。 二:瞭解架構圖 m ...
一:背景
1. 講故事
最近看各大技術社區,不管是知乎,掘金,博客園,csdn基本上看不到有小伙伴分享sqlserver類的文章,看樣子這些年sqlserver沒落了,已經後繼無人了,再寫sqlserver是不可能再寫了,這輩子都不會寫了,只能靠技術輸出mysql維持生活這樣子。
二:瞭解架構圖
mysql最大的好處就是開源, 手握百萬源碼,有什麼問題搞不定呢? 這一點要比sqlserver爽多了,不用再dbcc搗來搗去。
1. 從架構圖入手
大家都知道做/裝修房子都要有一張圖紙,其實軟體也是一樣,只要有了這麼一張圖紙,大方向就定下來了,再深入到細節也不會亂了方向,然後給大家看一下我自己畫的架構圖,畫的不對請輕拍。
其實SqlServer,Oracle,MySql架構都大同小異,MySql的鮮明特點就是存儲引擎做成了插拔式,這就牛逼了,現行最常用的是InnoDB,這就讓我有了一個想法,有一套業務準備用 InMemory 模式跑一下,厲害了~~~
2. 功能點介紹
MySql其實就兩大塊,一塊是MySql Server層,一塊就是Storage Engines層。
<1> Client
不同語言的sdk遵守mysql協議就可以與mysqld進行互通。
<2> Connection/Thread Pool
MySql使用C++編寫,Connection是非常寶貴的,在初始化的時候維護一個池。
<3> SqlInterface,Parse,Optimizer,Cache
對sql處理,解析,優化,緩存等處理和過濾模塊,瞭解瞭解即可。
<4> Storage Engines
負責存儲的模塊,官方,第三方,甚至是你自己都可以自定義實現這個數據存儲,這就把生態做起來了,