存儲引擎和體系結構

MySQL有哪些常見的引擎,說說他們的區別?

show engines; #查看支持的引擎
  • MyISAM:非事務處理存儲引擎

    索引放在XX.MYI文件中,數據放在XX.MYD文件中。

    在線分析處理OLAP。

    全文索引。

  • InnoDB:具備外鍵功能的存儲引擎、行鎖

    索引也是數據。數據和索引存在一個XX.IDB文件中。

    在線事務處理OLTP。

  • Mermory:基於內存

    Memory表至少比MyISAM表要快一個數量級,因爲所有的數據都保存在內存中,不需要進行磁盤I/O。Memory表的結構在重啓以後還會保留,但數據會丟失。

    默認hash索引。

  • Archive:數據存檔,數據插入後不能修改,只支持insert和select

    針對高寫入壓縮做了優化的簡單引擎,壓縮存儲1:10。

  • Maria

    MyISAM後續版本

    緩存數據和索引文件,行鎖設計,MVCC,支持事務,更好的BLOB字符類型處理性能

  • NDB

    集羣存儲引擎

    數據全放內存(可以將非索引數據放磁盤)

  • Merge、CSV、Sphinx、Infobright

特點 InnoDB MyISAM Memory Archive
b+樹索引 yes yes yes no
MVCC yes no no no
事務 yes no no no
存儲限制 64TB 256TB RAM None
索引緩存 yes yes 本身就是緩存 No
外鍵 yes no no no
鎖粒度 row table table row
全文索引 yes yes no no
數據緩存 yes no 本身就是緩存 no

數據庫和實例的區別

  • 數據庫:物理操作系統文件或其他形式文件類型的集合。
  • 數據庫實例:有數據庫後臺進程/線程以及一個共享內存區組成。

查看MySQL從哪裏讀取的配置文件

從上到下找my.cnf文件,最終值以最後一個文件中的參數爲準。

➜  ~ mysql --help | grep my.cnf
                      
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf 
/etc/mysql/my.cnf 
/usr/local/Cellar/mysql-client/8.0.18/etc/my.cnf 
~/.my.cnf

MySQL體系結構

在這裏插入圖片描述

  • 連接池
  • 管理服務和工具
  • SQL接口
  • 查詢分析器
  • 優化器
  • 緩衝
  • 存儲引擎
  • 物理文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章