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