国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MySQL的底層原理和技術學習

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

掃碼添加小助手

加入工程師交流群

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

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

今天一起來學習MySQL的體系架構。

MySQL體系架構

我們先來看看MySQL的體系架構圖,如下所示。

注:圖片來自互聯網

從MySQL的架構圖,我們可以看出MySQL的架構自頂向下大致可以分為網絡連接層、數據庫服務層、存儲引擎層和系統文件層四大部分。接下來,我們就來簡單說說每個部分的組成信息。

網絡連接層

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

數據庫服務層

數據庫服務層是整個數據庫服務器的核心,主要包括了系統管理和控制工具、連接池、SQL接口、解析器、查詢優化器和緩存等部分。

連接池

主要負責存儲和管理客戶端與數據庫的連接信息,連接池里的一個線程負責管理一個客戶端到數據庫的連接信息。

系統管理和控制工具

提供數據庫系統的管理和控制功能,例如對數據庫中的數據進行備份和恢復,保證整個數據庫的安全性,提供安全管理,對整個數據庫的集群進行協調和管理等。

SQL接口

主要負責接收客戶端發送過來的各種SQL命令,并將SQL命令發送到其他部分,并接收其他部分返回的結果數據,將結果數據返回給客戶端。

解析樹

主要負責對請求的SQL解析成一棵“解析樹”,然后根據MySQL中的一些規則對“解析樹”做進一步的語法驗證,確認其是否合法。

查詢優化器

在MySQL中,如果“解析樹”通過了解析器的語法檢查,此時就會由優化器將其轉化為執行計劃,然后與存儲引擎進行交互,通過存儲引擎與底層的數據文件進行交互。

緩存

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

存儲引擎層

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

InnoDB和MyISAM存儲引擎需要小伙伴們重點掌握,高頻面試考點,也是成為架構師必知必會的內容。

系統文件層

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

日志文件

MySQL中的日志主要包括:錯誤日志、通用查詢日志、二進制日志、慢查詢日志等。

錯誤日志

主要存儲的是MySQL運行過程中產生的錯誤信息。可以使用下面的SQL語句來查看MySQL中的錯誤日志。

showvariableslike'%log_error%';

通用查詢日志

主要記錄MySQL運行過程中的一般查詢信息,可以使用下面的SQL語句來查看MySQL中的通用查詢日志文件。

showvariableslike'%general%';

二進制日志

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

查看二進制日志是否開啟。

showvariableslike'%log_bin%';

查看二進制日志的參數。

showvariableslike'%binlog%'

查看日志文件。

showbinarylogs;

慢查詢日志

慢查詢主要記錄的是執行時間超過指定時間的SQL語句,這個時間默認是10秒。

查看是否開啟慢查詢日志。

showvariableslike'%slow_query%';

查看慢查詢設置的時長。

showvariableslike'%long_query_time%'

數據文件

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

db.opt文件

主要記錄當前數據庫使用的字符集和檢驗規則等信息。

frm文件

存儲數據表的結構信息,主要是數據表相關的元數據信息,包括數據表的表結構定義信息,每張表都會有一個frm文件。

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

MYD文件

MyISAM存儲引擎專用的文件格式,主要存放MyISAM存儲引擎數據表中的數據,每張MyISAM存儲引擎表對應一個.MYD文件。

MYI文件

MyISAM存儲引擎專用的文件格式,主要存放與MyISAM存儲引擎數據表相關的索引信息,每張MyISAM存儲引擎表對應一個.MYI文件。

ibd文件

存放Innodb存儲引擎的數據文件和索引文件,主要存放的是獨享表空間的數據和索引,每張表對應一個.ibd文件。

ibdata文件

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

ibdata1文件

MySQL的系統表空間數據文件,主要存儲MySQL的數據表元數據、Undo日志等信息。

ib_logfile0和ib_logfile1文件

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

配置文件

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

pid文件

pid文件是存放MySQL進程運行時的進程號的文件,主要存在于Unix/Linux環境中,具體的存儲目錄可以在my.cnf或者my.ini文件中進行配置。

socket文件

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

原文標題:一文搞懂MySQL體系架構!

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

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7335

    瀏覽量

    94754
  • MySQL
    +關注

    關注

    1

    文章

    905

    瀏覽量

    29517

原文標題:一文搞懂MySQL體系架構!

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    恒訊科技解析:如何安裝MySQL并創建數據庫

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

    工業數據中臺支持接入MySQL數據庫嗎

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

    CentOS 7下MySQL 8雙主熱備高可用架構全解

    Centos7部署MySQL8+keepalived雙主熱備(含Keepalived配置與GTID同步優化方案) 架構拓撲原理 GTID同步 VIP 192.168.1.100 MySQL主節點1
    的頭像 發表于 08-12 17:08 ?828次閱讀

    MySQL配置調優技巧

    上個月,我們公司的核心業務系統突然出現大面積超時,用戶投訴電話不斷。經過緊急排查,發現是MySQL服務器CPU飆升到99%,大量慢查詢堆積。通過一系列配置調優和SQL優化,最終在30分鐘內恢復了服務。
    的頭像 發表于 07-31 10:27 ?604次閱讀

    MySQL 8.0性能優化實戰指南

    作為一名運維工程師,MySQL數據庫優化是我們日常工作中最具挑戰性的任務之一。MySQL 8.0作為當前主流版本,在性能、安全性和功能上都有了顯著提升,但如何充分發揮其潛力,仍需要我們掌握正確的優化策略。
    的頭像 發表于 07-24 11:48 ?848次閱讀

    MySQL的組成結構與結構化查詢語言詳解

    MySQL作為世界上最流行的開源關系型數據庫管理系統,采用了分層架構設計
    的頭像 發表于 07-14 11:21 ?639次閱讀

    MySQL數據備份與恢復策略

    數據是企業的核心資產,MySQL作為主流的關系型數據庫管理系統,其數據的安全性和可靠性至關重要。本文將深入探討MySQL的數據備份策略、常用備份工具以及數據恢復的最佳實踐,幫助運維工程師構建完善的數據保護體系。
    的頭像 發表于 07-14 11:11 ?725次閱讀

    企業級MySQL數據庫管理指南

    在當今數字化時代,MySQL作為全球最受歡迎的開源關系型數據庫,承載著企業核心業務數據的存儲與處理。作為數據庫管理員(DBA),掌握MySQL的企業級部署、優化、維護技能至關重要。本文將從實戰角度出發,系統闡述MySQL在企業環
    的頭像 發表于 07-09 09:50 ?716次閱讀

    底層邏輯到架構設計:聚徽解析MES看板的技術實現路徑

    與數據接口的協同設計。本文將從底層邏輯出發,深入解析MES看板的技術架構與實現路徑。 一、底層邏輯:數據驅動的生產管理 MES看板的核心價值在于將生產現場的離散數據轉化為可執行信息,其底層
    的頭像 發表于 06-16 15:23 ?699次閱讀

    MYSQL集群高可用和數據監控平臺實現方案

    該項目共分為2個子項目,由MYSQL集群高可用和數據監控平臺兩部分組成。
    的頭像 發表于 05-28 10:10 ?1308次閱讀
    <b class='flag-5'>MYSQL</b>集群高可用和數據監控平臺實現方案

    MySQL數據庫是什么

    MySQL數據庫是一種 開源的關系型數據庫管理系統(RDBMS) ,由瑞典MySQL AB公司開發,后被Oracle公司收購。它通過結構化查詢語言(SQL)進行數據存儲、管理和操作,廣泛應用于Web
    的頭像 發表于 05-23 09:18 ?1202次閱讀

    MySQL簡介與理論基礎

    MySQL是世界上最流行的開源關系型數據庫管理系統之一,廣泛應用于網站、應用程序和企業級系統。它采用客戶端/服務器架構,支持多用戶環境,并基于SQL(結構化查詢語言)標準。
    的頭像 發表于 05-21 10:43 ?729次閱讀

    除了增刪改查你對MySQL還了解多少

    我們都知道MySQL服務器的默認端口為3306,之后就在這個端口號上等待客戶端進程進行連接(MySQL服務器會默認監聽3306端口)。
    的頭像 發表于 04-14 17:20 ?719次閱讀

    京東中臺化底層支撐框架技術分析及隨想

    架構涉及的變化和影響,只是從中臺化演進的思路,及使用的底層支撐技術框架進行分析探討,重點對中臺及前臺協作涉及到的擴展點及熱部署包的底層技術細節,結合京東實際落地情況,對涉及的核心
    的頭像 發表于 04-08 11:29 ?663次閱讀
    京東中臺化<b class='flag-5'>底層</b>支撐框架<b class='flag-5'>技術</b>分析及隨想

    底層開發與應用開發到底怎么選?

    理解計算機系統的底層原理,掌握核心技術。 穩定性與稀缺性:底層開發人才相對稀缺,市場需求穩定,薪資待遇通常較高。 行業基礎:底層開發是整個計算機
    發表于 03-06 10:10