校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > MySQL高級學習筆記(三):Mysql邏輯架構介紹、mysql存儲引擎詳解

MySQL高級學習筆記(三):Mysql邏輯架構介紹、mysql存儲引擎詳解

熱門標簽:中國地圖標注公司 徐涇鎮騰訊地圖標注 百度地圖標注要什么軟件 400電話申請廠家現貨 電話機器人的價格多少錢一個月 福建外呼電銷機器人加盟 自己做地圖標注需要些什么 昌德訊外呼系統 天津公司外呼系統軟件

Mysql邏輯架構介紹總體概覽

和其它數據庫相比,MySQL有點與眾不同,它的架構可以在多種不同場景中應用并發揮良好作用。主要體現在存儲引擎的架構上,插件式的存儲引擎架構將查詢處理和其它的系統任務以及數據的存儲提取相分離 。 這種架構可以根據業務的需求和實際需要選擇合適的存儲引擎。

controller層:
Connectors:連接層,c 、java等連接mysql

業務邏輯處理成:
Connection Pool:連接層 c3p0連接池等
Manager Service util:備份、容災恢復、集群等
sql interface:存儲過程、視圖觸發器
parser:查詢事物、對象的權限
如果是select開頭的就認為是讀的操作,insert開頭的就是寫的操作,
sql語句的加載從from開始,轉換成mysql能夠讀懂的形式
optimizer:mysql優化器 ,經過前面的轉換,這里mysql會優化成mysql自己認為最優的方式
,并不是我們人為的優化
caches buffers:緩沖

可拔插式的存儲引擎
plugin storage engine
大部分用的是myism和innodb

文件存儲層 計算機硬件
file system
file logs

1.連接層

最上層是一些客戶端和連接服務,包含本地sock通信和大多數基于客戶端/服務端工具實現的類似于tcp/ip的通信。主要完成一些類似于連接處理、授權認證、及相關的安全方案。在該層上引入了線程池的概念,為通過認證安全接入的客戶端提供線程。同樣在該層上可以實現基于SSL的安全鏈接。服務器也會為安全接入的每個客戶端驗證它所具有的操作權限。

2.服務層

2.1 Management Serveices Utilities : 系統管理和控制工具

2.2 SQL Interface : SQL接口
接受用戶的SQL命令,并且返回用戶需要查詢的結果。比如select from就是調用SQL Interface

2.3 Parser : 解析器
SQL命令傳遞到解析器的時候會被解析器驗證和解析。

2.4 Optimizer : 查詢優化器。
SQL語句在查詢之前會使用查詢優化器對查詢進行優化。
用一個例子就可以理解: select uid,name from user where gender= 1;
優化器來決定先投影還是先過濾。

2.5 Cache和Buffer: 查詢緩存。
如果查詢緩存有命中的查詢結果,查詢語句就可以直接去查詢緩存中取數據。
這個緩存機制是由一系列小緩存組成的。比如表緩存,記錄緩存,key緩存,權限緩存等
緩存是負責讀,緩沖負責寫。

3.引擎層

存儲引擎層,存儲引擎真正的負責了MySQL中數據的 存儲和提取 ,服務器通過API與存儲引擎進行通信。不同的存儲引擎具有的功能不同,這樣我們可以根據自己的實際需要進行選取。后面介紹MyISAM和InnoDB

4.存儲層

數據存儲層,主要是將數據存儲在運行于裸設備的文件系統之上,并完成與存儲引擎的交互。

總體概覽

查詢流程圖:

首先,mysql的查詢流程大致是:
•mysql客戶端通過協議與mysql服務器建連接,發送查詢語句,先檢查查詢緩存,如果命中(一模一樣的sql才能命中),直接返回結果,否則進行語句解析,也就是說,在解析查詢之前,服務器會先訪問查詢緩存(query cache)——它存儲SELECT語句以及相應的查詢結果集。如果某個查詢結果已經位于緩存中,服務器就不會再對查詢進行解析、優化、以及執行。它僅僅將緩存中的結果返回給用戶即可,這將大大提高系統的性能。

語法解析器和預處理:首先mysql通過關鍵字將SQL語句進行解析,并生成一顆對應的“解析樹”。mysql解析器將使用mysql語法規則驗證和解析查詢;預處理器則根據一些mysql規則進一步檢查解析數是否合法。
查詢優化器當解析樹被認為是合法的了,并且由優化器將其轉化成執行計劃。一條查詢可以有很多種執行方式,最后都返回相同的結果。優化器的作用就是找到這其中最好的執行計劃。。
然后,mysql默認使用的BTREE索引,并且一個大致方向是:無論怎么折騰sql,至少在目前來說,mysql最多只用到表中的一個索引。

mysql存儲引擎

查看命令

1 如何用命令查看

看你的 mysql 現在已提供什么存儲引擎 :

mysql> show engines;


InnoDB 默認的,支持事物支持外鍵,且是行鎖

看你的 mysql 當前默認的存儲引擎 :

mysql> show variables like ‘%storage_engine%';


默認的是InnoDB
當前的也是InnoDB

各個引擎簡介

1、InnoDB存儲引擎

InnoDB是MySQL的默認 事務型引擎 ,它被設計用來處理大量的短期(short-lived)事務。除非有非常特別的原因需要使用其他的存儲引擎,否則應該優先考慮InnoDB引擎。 行級鎖,適合高并發情況

2、MyISAM存儲引擎

MyISAM提供了大量的特性,包括全文索引、壓縮、空間函數(GIS)等,但MyISAM 不支持事務和行級鎖(myisam改表時會將整個表全鎖住) ,有一個毫無疑問的缺陷就是崩潰后無法安全恢復。

3、Archive引擎

Archive存儲引擎 只支持INSERT和SELECT 操作,在MySQL5.1之前不支持索引。
Archive表適合日志和數據采集類應用。 適合低訪問量大數據等情況。
根據英文的測試結論來看,Archive表比MyISAM表要小大約75%,比支持事務處理的InnoDB表小大約83%。

4、Blackhole引擎

Blackhole引擎沒有實現任何存儲機制,它會丟棄所有插入的數據,不做任何保存。但服務器會記錄Blackhole表的日志,所以可以用于復制數據到備庫,或者簡單地記錄到日志。但這種應用方式會碰到很多問題,因此并不推薦。

5、CSV引擎

CSV引擎可以將普通的CSV文件作為MySQL的表來處理,但不支持索引。
CSV引擎可以作為一種數據交換的機制,非常有用。
CSV存儲的數據直接可以在操作系統里,用文本編輯器,或者excel讀取。

6、Memory引擎

如果需要快速地訪問數據,并且這些數據不會被修改,重啟以后丟失也沒有關系,那么使用Memory表是非常有用。Memory表至少比MyISAM表要快一個數量級。(使用專業的內存數據庫更快,如redis)

7、Federated引擎

Federated引擎是訪問其他MySQL服務器的一個代理,盡管該引擎看起來提供了一種很好的跨服務器的靈活性,但也經常帶來問題,因此默認是禁用的。

MyISAM和InnoDB(重點)

對比項 MyISAM InnoDB
主外鍵 不支持 支持
事務 不支持 支持
行表鎖 表鎖,即使操作一條記錄也會鎖住整個表,不適合高并發的操作 行鎖,操作時只鎖某一行,不對其它行有影響, 適合高并發
緩存 只緩存索引,不緩存真實數據 不僅緩存索引還要緩存真實數據,對內存要求較高,而且內存大小對性能有決定性的影響
表空間
關注點 性能 事務
默認安裝 Y Y
默認安裝 Y Y
默認安裝 Y Y
用戶表默認使用 N Y
自帶系統表使用 Y N

innodb 索引 使用 B+TREE myisam 索引使用 b-tree
innodb 主鍵為聚簇索引,基于聚簇索引的增刪改查效率非常高。

阿里巴巴、淘寶用哪個


• Percona 為 MySQL 數據庫服務器進行了改進,在功能和性能上較 MySQL 有著很顯著的提升。該版本提升了在高負載情況下的 InnoDB 的性能、為 DBA 提供一些非常有用的性能診斷工具;另外有更多的參數和命令來控制服務器行為。

•該公司新建了一款存儲引擎叫 xtradb 完全可以替代 innodb, 并且在性能和并發上做得更好,

•阿里巴巴大部分 mysql 數據庫其實使用的 percona 的原型加以修改。
•AliSql+AliRedis

以上所述是小編給大家介紹的Mysql邏輯架構介紹、mysql存儲引擎詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

您可能感興趣的文章:
  • 詳解MySQL InnoDB存儲引擎的內存管理
  • 關于MySQL Memory存儲引擎的相關知識
  • 詳解mysql中的存儲引擎
  • 簡述MySQL InnoDB存儲引擎
  • MySql 存儲引擎和索引相關知識總結
  • MySQL MyISAM默認存儲引擎實現原理
  • MySQL 學習總結 之 初步了解 InnoDB 存儲引擎的架構設計
  • 淺談MySQL中四種常用存儲引擎
  • MySQL存儲引擎InnoDB的配置與使用的講解
  • MySQL存儲引擎MyISAM與InnoDB區別總結整理
  • MySQL 常見存儲引擎的優劣

標簽:昌都 北京 黔西 陜西 梅河口 鄂爾多斯 駐馬店 荊門

巨人網絡通訊聲明:本文標題《MySQL高級學習筆記(三):Mysql邏輯架構介紹、mysql存儲引擎詳解》,本文關鍵詞  MySQL,高級,學習,筆記,三,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL高級學習筆記(三):Mysql邏輯架構介紹、mysql存儲引擎詳解》相關的同類信息!
  • 本頁收集關于MySQL高級學習筆記(三):Mysql邏輯架構介紹、mysql存儲引擎詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 九龙县| 通榆县| 潞西市| 江西省| 孟连| 昌乐县| 榆林市| 阳春市| 夹江县| 东兴市| 颍上县| 日照市| 富民县| 句容市| 鹤峰县| 天长市| 莲花县| 曲松县| 滨海县| 海淀区| 洛浦县| 莫力| 洪泽县| 靖边县| 惠来县| 盖州市| 石阡县| 忻州市| 兰考县| 德兴市| 肇庆市| 宜州市| 信宜市| 蛟河市| 泉州市| 镇赉县| 稻城县| 屏东县| 当阳市| 同心县| 胶南市|