帶你認識 MySQL 之 MySQL 體繫結構,認識mysql體繫結構
序
最近一直在忙項目,各種加班加點,項目上線,漸漸的沒有了學習的時間。這不,剛這幾天才能抽出點時間,忙裡偷閒,正在看一本資料庫的書籍,相信很多小夥伴們也都看過 — — 《MySQL 技術內幕:InnoDB 儲存引擎》。這本書很詳細的講述了 MySQL 的設計思想,體繫結構,儲存引擎,索引,事務,以及對效能的調優等。當然,現在我也是剛剛看了一部分,至於現在寫這篇文章,主要是為了記錄一下我的學習曆程,並且和大家分享一些新的東西。
背景
至於背景嘛,這裡就不多說了,如果感興趣的話,還是推薦大家看一看這本書的。那麼現在嘛,先瞭解一下 MySQL 的體繫結構也不錯,沒準還可以拿出來炫耀一下(純屬忽悠)。
概念
在說體繫結構之前,先說兩個名詞,而且是在資料庫領域裡很常見的兩個詞:“資料庫”和“資料庫執行個體”。
我想,小夥伴們肯定都知道這兩個名詞的,而且有時候還經常會區分不出來。那麼,什麼是“資料庫”?什麼又是“資料庫執行個體”呢?下面我就詳細跟大家說說。
首先說“資料庫”,資料庫是物理作業系統檔案或其他形式的檔案類型的集合。在 MySQL 中,資料庫檔案可以是 frm、myd、myi、ibd 結尾的檔案。
然後說“資料庫執行個體”,資料庫執行個體是由資料庫後台進程/線程以及一個共用記憶體區組成。共用記憶體可以被啟動並執行後台進程/線程所共用。需要注意的是,資料庫執行個體才是真正用來操作資料庫檔案的。
這兩個詞有時可以互換使用,但兩者的概念完全不同。在 MySQL 中,執行個體和資料庫通常關係是一 一對應的,即一個執行個體對應一個資料庫,一個資料庫對應一個執行個體。但是,在叢集情況下,可能存在一個資料庫可被多個執行個體使用的情況。
體繫結構
MySQL 是一個可移植的資料庫,幾乎能在當前所有的作業系統上運行,如 Unix/Linux、Windows、Mac 和 Solaris。各種系統在底層實現方面各有不同,但是 MySQL 基本上能保證在各個平台上的物理體繫結構的一致性。
MySQL 由以下幾部分組成:
- Connectors:不同語言中與 SQL 的互動
max_connections:就是整個MySQL執行個體的最大串連數限制 max_user_connections:是單個使用者的最大串連數,這裡未指明是哪個使用者,是任意一個使用者。
- Management Serveices & Utilities:系統管理和控制工具
備份和恢複的安全性,複製,叢集,管理,配置,遷移和中繼資料。
進行身分識別驗證、線程重用,串連限制,檢查記憶體,資料緩衝;系統管理使用者的串連,線程處理等需要緩衝的需求。
進行 DML、DDL,預存程序、視圖、觸發器等操作和管理;使用者通過 SQL 命令來查詢所需結果。
查詢翻譯對象的特權;SQL 命令傳遞到解析器的時候會被解析器驗證和解析。
訪問路徑的統計資料;
在 MySQL 最佳化語句過程中,可以通過設定 optimize_switch 控制最佳化行為。在生產環境上,某時間段 MySQL 伺服器壓力特別大,load 一度達到了 100,查詢探索資料庫中有大量的 sql 語句 state 狀態 result sorting ,result sorting 這種排序特別消耗 cpu 和記憶體資源。抽取其中的一條 sql 查看執行計畫。
全域和引擎特定的緩衝和緩衝區;
MySQL 的 Windows 版本預設儲存引擎為 InnoDB,InnoDB 支援事務,並且提供行級的鎖定。
結束語
想要認識 MySQL,這裡僅僅是個開始,在後續的學習中,我還會不定時的跟大家分享,同時,小夥伴們有新的想法也可以跟我一塊交流交流。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。