哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MySQL的底層原理和技術(shù)學(xué)習(xí)

Linux愛好者 ? 來源:冰河技術(shù) ? 作者:冰河技術(shù) ? 2021-04-06 16:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

很多小伙伴工作很長時(shí)間了,對于MySQL的掌握程度卻僅僅停留在表面的CRUD,對于MySQL深層次的原理和技術(shù)知識了解的少之又少,隨著工作年限的不斷增長,職場競爭力卻是不斷降低的。很多時(shí)候,出去面試時(shí),被面試官吊打的現(xiàn)象成了家常便飯。

不僅僅是面試,如果你想從一名底層程序員上升為高級工程師、架構(gòu)師等,MySQL的底層原理和技術(shù)是你必須要掌握的。

今天一起來學(xué)習(xí)MySQL的體系架構(gòu)。

MySQL體系架構(gòu)

我們先來看看MySQL的體系架構(gòu)圖,如下所示。

注:圖片來自互聯(lián)網(wǎng)

從MySQL的架構(gòu)圖,我們可以看出MySQL的架構(gòu)自頂向下大致可以分為網(wǎng)絡(luò)連接層、數(shù)據(jù)庫服務(wù)層、存儲引擎層和系統(tǒng)文件層四大部分。接下來,我們就來簡單說說每個部分的組成信息。

網(wǎng)絡(luò)連接層

網(wǎng)絡(luò)連接層位于整個MySQL體系架構(gòu)的最上層,主要擔(dān)任客戶端連接器的角色。提供與MySQL服務(wù)器建立連接的能力,幾乎支持所有主流的服務(wù)端語言,例如:Java、C、C++、Python等,各語言都是通過各自的API接口與MySQL建立連接。

數(shù)據(jù)庫服務(wù)層

數(shù)據(jù)庫服務(wù)層是整個數(shù)據(jù)庫服務(wù)器的核心,主要包括了系統(tǒng)管理和控制工具、連接池、SQL接口、解析器、查詢優(yōu)化器和緩存等部分。

連接池

主要負(fù)責(zé)存儲和管理客戶端與數(shù)據(jù)庫的連接信息,連接池里的一個線程負(fù)責(zé)管理一個客戶端到數(shù)據(jù)庫的連接信息。

系統(tǒng)管理和控制工具

提供數(shù)據(jù)庫系統(tǒng)的管理和控制功能,例如對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行備份和恢復(fù),保證整個數(shù)據(jù)庫的安全性,提供安全管理,對整個數(shù)據(jù)庫的集群進(jìn)行協(xié)調(diào)和管理等。

SQL接口

主要負(fù)責(zé)接收客戶端發(fā)送過來的各種SQL命令,并將SQL命令發(fā)送到其他部分,并接收其他部分返回的結(jié)果數(shù)據(jù),將結(jié)果數(shù)據(jù)返回給客戶端。

解析樹

主要負(fù)責(zé)對請求的SQL解析成一棵“解析樹”,然后根據(jù)MySQL中的一些規(guī)則對“解析樹”做進(jìn)一步的語法驗(yàn)證,確認(rèn)其是否合法。

查詢優(yōu)化器

在MySQL中,如果“解析樹”通過了解析器的語法檢查,此時(shí)就會由優(yōu)化器將其轉(zhuǎn)化為執(zhí)行計(jì)劃,然后與存儲引擎進(jìn)行交互,通過存儲引擎與底層的數(shù)據(jù)文件進(jìn)行交互。

緩存

MySQL的緩存是由一系列的小緩存組成的。例如:MySQL的表緩存,記錄緩存,MySQL中的權(quán)限緩存,引擎緩存等。MySQL中的緩存能夠提高數(shù)據(jù)的查詢性能,如果查詢的結(jié)果能夠命中緩存,則MySQL會直接返回緩存中的結(jié)果信息。

存儲引擎層

MySQL中的存儲引擎層主要負(fù)責(zé)數(shù)據(jù)的寫入和讀取,與底層的文件進(jìn)行交互。值得一提的是,MySQL中的存儲引擎是插件式的,服務(wù)器中的查詢執(zhí)行引擎通過相關(guān)的接口與存儲引擎進(jìn)行通信,同時(shí),接口屏蔽了不同存儲引擎之間的差異。MySQL中,最常用的存儲引擎就是InnoDB和MyISAM。

InnoDB和MyISAM存儲引擎需要小伙伴們重點(diǎn)掌握,高頻面試考點(diǎn),也是成為架構(gòu)師必知必會的內(nèi)容。

系統(tǒng)文件層

系統(tǒng)文件層主要包括MySQL中存儲數(shù)據(jù)的底層文件,與上層的存儲引擎進(jìn)行交互,是文件的物理存儲層。其存儲的文件主要有:日志文件、數(shù)據(jù)文件、配置文件、MySQL的pid文件和socket文件等。

日志文件

MySQL中的日志主要包括:錯誤日志、通用查詢?nèi)罩?、二進(jìn)制日志、慢查詢?nèi)罩镜取?/p>

錯誤日志

主要存儲的是MySQL運(yùn)行過程中產(chǎn)生的錯誤信息??梢允褂孟旅娴腟QL語句來查看MySQL中的錯誤日志。

showvariableslike'%log_error%';

通用查詢?nèi)罩?/p>

主要記錄MySQL運(yùn)行過程中的一般查詢信息,可以使用下面的SQL語句來查看MySQL中的通用查詢?nèi)罩疚募?/p>

showvariableslike'%general%';

二進(jìn)制日志

主要記錄對MySQL數(shù)據(jù)庫執(zhí)行的插入、修改和刪除操作,并且也會記錄SQL語句執(zhí)行的時(shí)間、執(zhí)行的時(shí)長,但是二進(jìn)制日志不記錄select、show等不修改數(shù)據(jù)庫的SQL。主要用于恢復(fù)數(shù)據(jù)庫的數(shù)據(jù)和實(shí)現(xiàn)MySQL主從復(fù)制。

查看二進(jìn)制日志是否開啟。

showvariableslike'%log_bin%';

查看二進(jìn)制日志的參數(shù)。

showvariableslike'%binlog%'

查看日志文件。

showbinarylogs;

慢查詢?nèi)罩?/p>

慢查詢主要記錄的是執(zhí)行時(shí)間超過指定時(shí)間的SQL語句,這個時(shí)間默認(rèn)是10秒。

查看是否開啟慢查詢?nèi)罩尽?/p>

showvariableslike'%slow_query%';

查看慢查詢設(shè)置的時(shí)長。

showvariableslike'%long_query_time%'

數(shù)據(jù)文件

數(shù)據(jù)文件中主要包括了:db.opt文件、frm文件、MYD文件、MYI文件、ibd文件、ibdata文件、ibdata1文件、ib_logfile0和ib_logfile1文件等。

db.opt文件

主要記錄當(dāng)前數(shù)據(jù)庫使用的字符集和檢驗(yàn)規(guī)則等信息。

frm文件

存儲數(shù)據(jù)表的結(jié)構(gòu)信息,主要是數(shù)據(jù)表相關(guān)的元數(shù)據(jù)信息,包括數(shù)據(jù)表的表結(jié)構(gòu)定義信息,每張表都會有一個frm文件。

值得注意的是:MySQL8版本中的innodb存儲引擎的表沒有frm文件。(后面專門寫一些MySQL8新特性的文章,從使用到底層原理與MySQL5到底有何不同)。

MYD文件

MyISAM存儲引擎專用的文件格式,主要存放MyISAM存儲引擎數(shù)據(jù)表中的數(shù)據(jù),每張MyISAM存儲引擎表對應(yīng)一個.MYD文件。

MYI文件

MyISAM存儲引擎專用的文件格式,主要存放與MyISAM存儲引擎數(shù)據(jù)表相關(guān)的索引信息,每張MyISAM存儲引擎表對應(yīng)一個.MYI文件。

ibd文件

存放Innodb存儲引擎的數(shù)據(jù)文件和索引文件,主要存放的是獨(dú)享表空間的數(shù)據(jù)和索引,每張表對應(yīng)一個.ibd文件。

ibdata文件

存放Innodb存儲引擎的數(shù)據(jù)文件和索引文件,主要存放的是共享表空間的數(shù)據(jù)和索引,所有表共用一個(或者多個).ibdata文件,可以根據(jù)配置來指定共用的.ibdata文件個數(shù)。

ibdata1文件

MySQL的系統(tǒng)表空間數(shù)據(jù)文件,主要存儲MySQL的數(shù)據(jù)表元數(shù)據(jù)、Undo日志等信息。

ib_logfile0和ib_logfile1文件

MySQL數(shù)據(jù)庫中的Redo log文件,主要用于MySQL實(shí)現(xiàn)事務(wù)的持久性。如果在某個時(shí)間點(diǎn)MySQL發(fā)生了故障,此時(shí)如果有臟頁沒有寫入到數(shù)據(jù)庫的ibd文件中,在重啟MySQL的時(shí)候,MySQL會根據(jù)Redo Log信息進(jìn)行重做,將寫入Redo Log并且尚未寫入數(shù)據(jù)表的數(shù)據(jù)進(jìn)行持久化操作。

配置文件

用于存放MySQL所有的配置信息,在Unix/Linux環(huán)境中是my.cnf文件,在Windows環(huán)境中是my.ini文件。

pid文件

pid文件是存放MySQL進(jìn)程運(yùn)行時(shí)的進(jìn)程號的文件,主要存在于Unix/Linux環(huán)境中,具體的存儲目錄可以在my.cnf或者my.ini文件中進(jìn)行配置。

socket文件

socket文件和pid文件一樣,都是MySQL在Unix/Linux環(huán)境中運(yùn)行才會有的文件。在Unix/Linux環(huán)境中,客戶端可以直接通過socket來連接MySQL。

原文標(biāo)題:一文搞懂MySQL體系架構(gòu)!

文章出處:【微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7347

    瀏覽量

    94995
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    928

    瀏覽量

    29737

原文標(biāo)題:一文搞懂MySQL體系架構(gòu)!

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    全方位對比:Redis能取代MySQL嗎?看完這篇你就懂了

    Redis能不能取代MySQL?答案很明確:不能取代,但可以互補(bǔ)。
    的頭像 發(fā)表于 04-07 10:50 ?133次閱讀
    全方位對比:Redis能取代<b class='flag-5'>MySQL</b>嗎?看完這篇你就懂了

    恒訊科技解析:如何安裝MySQL并創(chuàng)建數(shù)據(jù)庫

    安裝和管理MySQL不必復(fù)雜。只需幾分鐘,你就能在Linux服務(wù)器上搭建MySQL,創(chuàng)建第一個數(shù)據(jù)庫,甚至自動化備份——同時(shí)確保數(shù)據(jù)安全有序。 什么是 MySQL? MySQL 是一個
    的頭像 發(fā)表于 01-14 14:25 ?318次閱讀

    工業(yè)數(shù)據(jù)中臺支持接入MySQL數(shù)據(jù)庫嗎

    工業(yè)數(shù)據(jù)中臺完全支持接入MySQL數(shù)據(jù)庫 ,且通過數(shù)據(jù)同步、集成與治理等技術(shù)手段,能夠充分發(fā)揮MySQL在數(shù)據(jù)存儲與事務(wù)處理方面的優(yōu)勢,同時(shí)彌補(bǔ)其在數(shù)據(jù)分析與共享能力上的不足,具體分析如下:
    的頭像 發(fā)表于 12-04 11:23 ?486次閱讀
    工業(yè)數(shù)據(jù)中臺支持接入<b class='flag-5'>MySQL</b>數(shù)據(jù)庫嗎

    CentOS 7下MySQL 8雙主熱備高可用架構(gòu)全解

    Centos7部署MySQL8+keepalived雙主熱備(含Keepalived配置與GTID同步優(yōu)化方案) 架構(gòu)拓?fù)湓?GTID同步 VIP 192.168.1.100 MySQL主節(jié)點(diǎn)1
    的頭像 發(fā)表于 08-12 17:08 ?964次閱讀

    MySQL配置調(diào)優(yōu)技巧

    上個月,我們公司的核心業(yè)務(wù)系統(tǒng)突然出現(xiàn)大面積超時(shí),用戶投訴電話不斷。經(jīng)過緊急排查,發(fā)現(xiàn)是MySQL服務(wù)器CPU飆升到99%,大量慢查詢堆積。通過一系列配置調(diào)優(yōu)和SQL優(yōu)化,最終在30分鐘內(nèi)恢復(fù)了服務(wù)。
    的頭像 發(fā)表于 07-31 10:27 ?785次閱讀

    MySQL 8.0性能優(yōu)化實(shí)戰(zhàn)指南

    作為一名運(yùn)維工程師,MySQL數(shù)據(jù)庫優(yōu)化是我們?nèi)粘9ぷ髦凶罹咛魬?zhàn)性的任務(wù)之一。MySQL 8.0作為當(dāng)前主流版本,在性能、安全性和功能上都有了顯著提升,但如何充分發(fā)揮其潛力,仍需要我們掌握正確的優(yōu)化策略。
    的頭像 發(fā)表于 07-24 11:48 ?1015次閱讀

    MySQL的組成結(jié)構(gòu)與結(jié)構(gòu)化查詢語言詳解

    MySQL作為世界上最流行的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng),采用了分層架構(gòu)設(shè)計(jì)
    的頭像 發(fā)表于 07-14 11:21 ?765次閱讀

    MySQL數(shù)據(jù)備份與恢復(fù)策略

    數(shù)據(jù)是企業(yè)的核心資產(chǎn),MySQL作為主流的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),其數(shù)據(jù)的安全性和可靠性至關(guān)重要。本文將深入探討MySQL的數(shù)據(jù)備份策略、常用備份工具以及數(shù)據(jù)恢復(fù)的最佳實(shí)踐,幫助運(yùn)維工程師構(gòu)建完善的數(shù)據(jù)保護(hù)體系。
    的頭像 發(fā)表于 07-14 11:11 ?863次閱讀

    企業(yè)級MySQL數(shù)據(jù)庫管理指南

    在當(dāng)今數(shù)字化時(shí)代,MySQL作為全球最受歡迎的開源關(guān)系型數(shù)據(jù)庫,承載著企業(yè)核心業(yè)務(wù)數(shù)據(jù)的存儲與處理。作為數(shù)據(jù)庫管理員(DBA),掌握MySQL的企業(yè)級部署、優(yōu)化、維護(hù)技能至關(guān)重要。本文將從實(shí)戰(zhàn)角度出發(fā),系統(tǒng)闡述MySQL在企業(yè)環(huán)
    的頭像 發(fā)表于 07-09 09:50 ?855次閱讀

    底層邏輯到架構(gòu)設(shè)計(jì):聚徽解析MES看板的技術(shù)實(shí)現(xiàn)路徑

    與數(shù)據(jù)接口的協(xié)同設(shè)計(jì)。本文將從底層邏輯出發(fā),深入解析MES看板的技術(shù)架構(gòu)與實(shí)現(xiàn)路徑。 一、底層邏輯:數(shù)據(jù)驅(qū)動的生產(chǎn)管理 MES看板的核心價(jià)值在于將生產(chǎn)現(xiàn)場的離散數(shù)據(jù)轉(zhuǎn)化為可執(zhí)行信息,其底層
    的頭像 發(fā)表于 06-16 15:23 ?806次閱讀

    介紹三種常見的MySQL高可用方案

    在生產(chǎn)環(huán)境中,為了確保數(shù)據(jù)庫系統(tǒng)的連續(xù)可用性、降低故障恢復(fù)時(shí)間以及實(shí)現(xiàn)業(yè)務(wù)的無縫切換,高可用(High Availability, HA)方案至關(guān)重要。本文將詳細(xì)介紹三種常見的 MySQL 高可用
    的頭像 發(fā)表于 05-28 17:16 ?1412次閱讀

    MYSQL集群高可用和數(shù)據(jù)監(jiān)控平臺實(shí)現(xiàn)方案

    該項(xiàng)目共分為2個子項(xiàng)目,由MYSQL集群高可用和數(shù)據(jù)監(jiān)控平臺兩部分組成。
    的頭像 發(fā)表于 05-28 10:10 ?1440次閱讀
    <b class='flag-5'>MYSQL</b>集群高可用和數(shù)據(jù)監(jiān)控平臺實(shí)現(xiàn)方案

    MySQL數(shù)據(jù)庫是什么

    MySQL數(shù)據(jù)庫是一種 開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS) ,由瑞典MySQL AB公司開發(fā),后被Oracle公司收購。它通過結(jié)構(gòu)化查詢語言(SQL)進(jìn)行數(shù)據(jù)存儲、管理和操作,廣泛應(yīng)用于Web
    的頭像 發(fā)表于 05-23 09:18 ?1409次閱讀

    MySQL簡介與理論基礎(chǔ)

    MySQL是世界上最流行的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,廣泛應(yīng)用于網(wǎng)站、應(yīng)用程序和企業(yè)級系統(tǒng)。它采用客戶端/服務(wù)器架構(gòu),支持多用戶環(huán)境,并基于SQL(結(jié)構(gòu)化查詢語言)標(biāo)準(zhǔn)。
    的頭像 發(fā)表于 05-21 10:43 ?892次閱讀

    利用dockerfile搭建mysql主從集群和redis集群

    ==MySQL主從同步(Replication)是一種實(shí)現(xiàn)數(shù)據(jù)冗余和高可用性的技術(shù),通過將主數(shù)據(jù)庫(Master)的變更操作同步到一個或多個從數(shù)據(jù)庫(Slave),實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)或準(zhǔn)實(shí)時(shí)復(fù)制==。
    的頭像 發(fā)表于 05-14 11:38 ?3610次閱讀
    利用dockerfile搭建<b class='flag-5'>mysql</b>主從集群和redis集群
    花垣县| 册亨县| 巴青县| 浏阳市| 石台县| 滦平县| 同心县| 泸溪县| 乌海市| 亚东县| 宜黄县| 黄大仙区| 宜宾市| 安远县| 板桥市| 涟源市| 额济纳旗| 拉萨市| 广昌县| 那曲县| 盖州市| 勐海县| 四平市| 蒙自县| 文水县| 武宣县| 元朗区| 萝北县| 江门市| 彩票| 景德镇市| 聂拉木县| 兰西县| 桂阳县| 彭阳县| 阿拉善左旗| 香河县| 明光市| 保康县| 仪陇县| 岗巴县|