欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql?體系結(jié)構(gòu)和存儲(chǔ)引擎介紹

 更新時(shí)間:2022年05月06日 16:21:02   作者:??斜月????  
這篇文章主要介紹了mysql?體系結(jié)構(gòu)和存儲(chǔ)引擎,通過mysql數(shù)據(jù)庫常見的數(shù)據(jù)庫引擎展開各個(gè)引擎之間的特性和區(qū)別。下文更多相關(guān)資料介紹感興趣的小伙伴可以參考一下

1 前言

mysql 是一個(gè)單進(jìn)程多線程架構(gòu)的可移植的數(shù)據(jù)庫,mysql 數(shù)據(jù)庫實(shí)例在系統(tǒng)上的表現(xiàn)就是一個(gè)進(jìn)程,可以在所有的平臺(tái)上運(yùn)行。

mysql 的整體架構(gòu)圖如下圖所示: 

2 mysql 配置文件加載順序

mysql 啟動(dòng)會(huì)讀取配置文件,根據(jù)配置文件的參數(shù)啟動(dòng)數(shù)據(jù)庫實(shí)例,數(shù)據(jù)庫的配置文件為my.cnf,按照/etc/my.cnf -> /etc/mysql/my.cnf -> /usr/local/mysql/etc/my.cnf -> ~/my.cnf配置文件進(jìn)行順序加載,如果有相同的配置,則以最后一個(gè)加載的為準(zhǔn),這個(gè)和 springboot 的配置文件加載啟動(dòng)順序是類似的。

3 mysql 引擎介紹

存儲(chǔ)引擎是基于表的,而不是數(shù)據(jù)庫。關(guān)于數(shù)據(jù)庫引擎的語句為:

# 修改數(shù)據(jù)庫引擎的語句
alter table table_name engine=MyISAM;
# 查詢數(shù)據(jù)庫可以支持的數(shù)據(jù)庫引擎
show engines

查看數(shù)據(jù)庫支持的引擎結(jié)果如下圖所示: 

 mysql 存儲(chǔ)引擎有 InnoDB,MyISAM,NDB 引擎,Memory 引擎, Archive 引擎,F(xiàn)ederated 引擎,Maria 引擎。

3.1 InnoDB 引擎

InnoDB 存儲(chǔ)引擎支持事務(wù),其涉及目標(biāo)主要是面向在線事務(wù)處理(OTLP),其特點(diǎn)是支持行鎖和外鍵,并支持非鎖定讀(即讀取數(shù)據(jù)默認(rèn)不會(huì)加鎖),從 mysql 5.5.8 版本開始,InnoDB 存儲(chǔ)引擎就是mysql 的默認(rèn)存儲(chǔ)引擎。

InnoDB 存儲(chǔ)引擎將數(shù)據(jù)存放在一個(gè)邏輯表空間中。InnoDB 通過使用多版本并發(fā)控制(MVCC)來獲得高并發(fā)性的性能,并實(shí)現(xiàn)了SQL標(biāo)準(zhǔn)的4中隔離級別,默認(rèn)使用 repeatable 級別。同時(shí) innodb 引擎使用 next-locking 的測了來避免幻讀現(xiàn)象的產(chǎn)生。除此之外,Innodb 引擎還提供了插入緩存,二次寫,自適應(yīng)哈希索引,預(yù)讀等高性能和高可用的功能。

Innodb 存儲(chǔ)引擎采用了聚集的方式,因此每張表都是按照主鍵的順序進(jìn)行存放的。如果沒有顯示的指定表的主鍵,那么存儲(chǔ)引擎會(huì)為每行生成一個(gè)6字節(jié)的 rowid ,并以此作為主鍵使用。

3.2 MyISAM 引擎

MyISAM 存儲(chǔ)引擎不支持事務(wù)、支持表鎖不支持行鎖,支持全文索引,主要面向一些 OLAP 數(shù)據(jù)庫應(yīng)用。數(shù)據(jù)庫系統(tǒng)和文件系統(tǒng)很大的一個(gè)不同點(diǎn)在于對事務(wù)的支持,然而MyISAM存儲(chǔ)引擎不支持事務(wù),InnoDB 引擎支持,其引擎的緩沖池之緩存索引文件,而不緩存數(shù)據(jù)文件,這個(gè)和大多數(shù)的數(shù)據(jù)庫不同。

MyISAM 存儲(chǔ)引擎表是由 MYD 和 MYI 組成的一個(gè)系統(tǒng),前者用于存放數(shù)據(jù)文件,后者是存放索引文件。

3.3 NDB 引擎

NDB 引擎是一個(gè)集群存儲(chǔ)引擎,其結(jié)構(gòu)是 share nothing 的集群架構(gòu),因此能夠提供高可用性。NDB 的特點(diǎn)是數(shù)據(jù)全部存放在內(nèi)存中,因此根據(jù)主鍵查詢的效率速度極快,并且通過添加存儲(chǔ)節(jié)點(diǎn)來提高數(shù)據(jù)庫的性能。該存儲(chǔ)引擎的連接操作是在數(shù)據(jù)庫底層完成的,而不是在存儲(chǔ)引擎層完成的,如果是復(fù)雜的數(shù)據(jù)庫連接需要巨大的網(wǎng)絡(luò)開銷,查詢速度比較慢。

3.4 Archive 引擎

Archive 引擎只支持 insert 和 select 操作,從 mysql5.1 之后開始支持索引,可以使用 zlib 算法進(jìn)行數(shù)據(jù)行的壓縮,壓縮比可以達(dá)到 1:10,改引擎特別適合做數(shù)據(jù)的歸檔操作,比如說日志信息。該引擎使用行鎖來實(shí)現(xiàn)高并發(fā)的插入操作,但是其本身不是事務(wù)安全的,其設(shè)計(jì)目的主要是提供高速插入和壓縮功能。

3.5 Federated 引擎

Federated 存儲(chǔ)引擎并不存放數(shù)據(jù),它只是指向遠(yuǎn)程 mysql 數(shù)據(jù)庫服務(wù)器上的表,改引擎只支持mysql 數(shù)據(jù)庫表,不支持異構(gòu)數(shù)據(jù)表。

3.6 Maria 引擎

Maria 引擎是新開發(fā)的數(shù)據(jù)庫引擎,其設(shè)計(jì)目的是用來取代 MyISAM 引擎,從而成為 MySQL 的默認(rèn)存儲(chǔ)引擎。該引擎的特點(diǎn)是:支持緩存數(shù)據(jù)和索引文件,應(yīng)用了行鎖設(shè)計(jì),提供了 MVCC 功能,支持事務(wù)和非事務(wù)安全的選項(xiàng),以及更好的 BLOB 字符類型的處理性能。

3.7 其它引擎

除了以上提到的數(shù)據(jù)庫引擎外,還有CSV、Merge等數(shù)據(jù)庫引擎, 感興趣的可以繼續(xù)關(guān)注學(xué)習(xí)。

4 總結(jié)

到此這篇關(guān)于mysql 體系結(jié)構(gòu)和存儲(chǔ)引擎介紹的文章就介紹到這了,更多相關(guān)mysql 存儲(chǔ)引擎內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql 操作總結(jié) INSERT和REPLACE

    mysql 操作總結(jié) INSERT和REPLACE

    用于操作數(shù)據(jù)庫的SQL一般分為兩種,一種是查詢語句,也就是我們所說的SELECT語句,另外一種就是更新語句,也叫做數(shù)據(jù)操作語句。
    2009-07-07
  • 詳解MySQL8中的新特性窗口函數(shù)

    詳解MySQL8中的新特性窗口函數(shù)

    MySQL8?窗口函數(shù)是一種特殊的函數(shù),它可以在一組查詢行上執(zhí)行類似于聚合的操作,但是不會(huì)將查詢行折疊為單個(gè)輸出行,而是為每個(gè)查詢行生成一個(gè)結(jié)果,本文就來和大家簡單講講它的用法,感興趣的可以了解一下
    2023-06-06
  • mysql允許遠(yuǎn)程連接的方法

    mysql允許遠(yuǎn)程連接的方法

    這篇文章主要介紹了mysql允許遠(yuǎn)程連接的方法,內(nèi)容很詳細(xì),感興趣的小伙伴們可以參考一下
    2015-12-12
  • mysql如何利用Navicat導(dǎo)出和導(dǎo)入數(shù)據(jù)庫的方法

    mysql如何利用Navicat導(dǎo)出和導(dǎo)入數(shù)據(jù)庫的方法

    這篇文章主要介紹了mysql如何利用Navicat導(dǎo)出和導(dǎo)入數(shù)據(jù)庫的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • 親手教你SQLyog12.08安裝詳細(xì)教程

    親手教你SQLyog12.08安裝詳細(xì)教程

    SQLyog?是一個(gè)快速而簡潔的圖形化管理MYSQL數(shù)據(jù)庫的工具,它能夠在任何地點(diǎn)有效地管理你的數(shù)據(jù)庫,這篇文章主要介紹了SQLyog12.08安裝詳細(xì)教程,需要的朋友可以參考下
    2023-04-04
  • MyBatis 動(dòng)態(tài)SQL全面詳解

    MyBatis 動(dòng)態(tài)SQL全面詳解

    MyBatis 的強(qiáng)大特性之一便是它的動(dòng)態(tài) SQL。如果你有使用 JDBC 或其他類似框架的經(jīng)驗(yàn),你就能體會(huì)到根據(jù)不同條件拼接 SQL 語句有多么痛苦。拼接的時(shí)候要確保不能忘了必要的空格,還要注意省掉列名列表最后的逗號。利用動(dòng)態(tài) SQL 這一特性可以徹底擺脫這種痛苦
    2021-09-09
  • mysql的查詢緩存說明

    mysql的查詢緩存說明

    mysql的Query Cache有其特殊的業(yè)務(wù)場景,也不像其他數(shù)據(jù)庫產(chǎn)品,緩存查詢語句的執(zhí)行計(jì)劃等信息,而是直接緩存查詢語句的記錄集和對應(yīng)的SQL語句
    2013-02-02
  • Mysql 數(shù)字類型轉(zhuǎn)換函數(shù)

    Mysql 數(shù)字類型轉(zhuǎn)換函數(shù)

    Mysql 數(shù)字類型轉(zhuǎn)換函數(shù),有此需要的朋友可以參考下用法。
    2009-08-08
  • mysql中not?in隱含陷阱詳解

    mysql中not?in隱含陷阱詳解

    NOT?IN?的作用和?IN?恰好相反,NOT?IN?用來判斷表達(dá)式的值是否不存在于給出的列表中;如果不是,返回值為?1,否則返回值為?0,下面這篇文章主要給大家介紹了關(guān)于mysql中not?in隱含陷阱的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • MySQL存儲(chǔ)時(shí)間類型選擇的問題講解

    MySQL存儲(chǔ)時(shí)間類型選擇的問題講解

    今天小編就為大家分享一篇關(guān)于MySQL存儲(chǔ)時(shí)間類型選擇的問題講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03

最新評論