MySQL技术内幕读书笔记(一)——Mysql体系结构和存储引擎
生活随笔
收集整理的這篇文章主要介紹了
MySQL技术内幕读书笔记(一)——Mysql体系结构和存储引擎
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- MySQL體系結構和存儲引擎
- 定義數據庫和實例
- MYSQL體系結構
- MYSQL存儲引擎
MySQL體系結構和存儲引擎
定義數據庫和實例
- 數據庫:物理操作系統文件或者其他形式文件類型的結合。在MYSQL數據庫中,數據庫文件可以是frm、MYD、MYI、ibd結尾的文件。當使用NDB引擎時,數據庫的文件可能不是操作系統上的文件,而是存放在內存之中的文件,但是定義仍然不變。
- 實例:MYSQL數據庫由后臺線程以及一個共享內存區組成。共享內存可以被運行的后臺線程所共享。需要牢記的是,數據庫實例才是真正用于操作數據庫文件的。
? MYSQL被設計為一個單進程多線程架構的數據庫。
# 可以查看當MYSQL數據庫實例啟動時,會在哪些位置查找配置文件。 mysql --help | grep my.cnf? 在配置文件中有一個參數是datadir,改參數指定了數據庫所在的路徑。在LINUX操作系統下默認是/user/local/mysql/data,這個默認路徑只是一個鏈接,實際指向/opt/mysql_data。所以用戶必須保證/opt/mysql_data的用戶和權限
MYSQL體系結構
? MYSQL由一下幾部分組成:
- 連接池組件
- 管理服務和工具組件
- SQL接口組件
- 查詢分析器組件
- 優化器組件
- 緩沖組件
- 插件式儲存引擎
- 物理文件
需要特別注意的是:存儲引擎是基于表的,而不是數據庫。
MYSQL存儲引擎
? 存儲引擎是MYSQL區別與其他數據庫的一個最重要特性。用戶可以根據MYSQL預定的存儲引擎接口編寫自己的存儲引擎。若用戶對某一種存儲引擎的性能或功能不滿意。可以通過修改源碼來得到想要的特性,這就是開源帶給我們的方便與力量。
InnoDB存儲引擎
- 支持事務:主要面向在線事務處理(OLTP)應用。特點是
- 行鎖設計
- 支持外鍵
- 支持類似于Oracle的非鎖定讀,即默認讀取操作不會產生鎖。
- 數據放在一個邏輯的表空間,這個表空間像黑盒一樣由INNODB存儲引擎自身進行管理。它可以將每個INNODB存儲引擎的表單獨存放到一個獨立的ibd文件中。
- 通過使用多版本并發控制(MVCC)來獲得高并發性
- 實現了SQL標準的四種隔離級別。默認為REPEATABLE級別。使用一種被稱為next-keylocking的策略來避免幻讀現象的產生。
- 提供插入緩沖、二次寫、自適應哈希索引、預讀等高性能和高可用功能。
- 表中數據采用聚集的方式存放,因此每場表的儲存都是按主鍵的順序進行存放,如果沒有顯式指定主鍵,則會為每一行生成一個6字節的ROWID,并作為主鍵。
MyISAM存儲引擎
- 不支持事務,支持全文索引,主要面向一些OLAP數據庫應用。
- 緩沖池只緩沖索引文件,不緩沖數據文件。
- MYD用來存放數據文件,MYI用來存放索引文件。
NDB存儲引擎
- 集群架構:share nothing
- 數據全部放在內存中,因此主鍵查找的速度極快,并且通過添加NDB數據存儲節點可以線性地提高數據庫性能,是高可用、高性能的集群系統。
- NDB存儲引擎的連接操作是在MYSQL數據庫層完成的,而是在存儲引擎層完成的。這意味著,復雜的連接操作需要巨大的網絡開銷
Memory存儲引擎
- 數據都存放在內存中,非常適合用于存儲臨時數據的臨時表,以及數據倉庫中的維度表。
- 默認使用哈希索引
- 只支持表鎖,并發性能較差,不支持TEXT和BLOB列類型
- 存儲變長字段(varchar)時按照定常字段(char)的方式進行的,會浪費內存。
Archive存儲引擎
- 只支持INSERT和SELECT操作
- 支持索引
- 使用zlib算法將數據行進行壓縮后存儲,壓縮比一般達1:10
- 適合存儲歸檔數據,例如日志信息等。
- 使用行鎖實現高并發的插入操作
- 不支持事務
FEDERATED存儲引擎
- 不存放數據,只是指向一臺遠程MYSQL數據庫服務器上的表。這非常類似于SQL SERVER的聯結服務器和Oracle的透明網關
- 不支持異構
Maria存儲引擎
- 支持魂村數據和索引文件
- 行鎖設計,提供了MVCC功能
- 支持事務和非事務安全的選項
- 更好的BLOB字符類型的處理性能。
轉載于:https://www.cnblogs.com/BlueMountain-HaggenDazs/p/9297868.html
總結
以上是生活随笔為你收集整理的MySQL技术内幕读书笔记(一)——Mysql体系结构和存储引擎的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tp 5 封装微信网页授权基础类库
- 下一篇: SQL SERVER 2012 OBJE