色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

完善資料讓更多小伙伴認識你,還能領取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接口、解析器、查詢優(yōu)化器和緩存等部分。

連接池

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

系統管理和控制工具

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

SQL接口

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

解析樹

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

查詢優(yōu)化器

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

緩存

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

存儲引擎層

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

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

系統文件層

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

日志文件

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

錯誤日志

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

showvariableslike'%log_error%';

通用查詢日志

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

showvariableslike'%general%';

二進制日志

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

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

showvariableslike'%log_bin%';

查看二進制日志的參數

showvariableslike'%binlog%'

查看日志文件。

showbinarylogs;

慢查詢日志

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

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

showvariableslike'%slow_query%';

查看慢查詢設置的時長。

showvariableslike'%long_query_time%'

數據文件

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

db.opt文件

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

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發(fā)生了故障,此時如果有臟頁沒有寫入到數據庫的ibd文件中,在重啟MySQL的時候,MySQL會根據Redo Log信息進行重做,將寫入Redo Log并且尚未寫入數據表的數據進行持久化操作。

配置文件

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

pid文件

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

socket文件

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

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

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

責任編輯:haq

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

    關注

    8

    文章

    7134

    瀏覽量

    89386
  • MySQL
    +關注

    關注

    1

    文章

    829

    瀏覽量

    26674

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

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

收藏 人收藏

    評論

    相關推薦

    使用插件將Excel連接到MySQL/MariaDB

    使用插件將 Excel 連接到 MySQL/MariaDB 適用于 MySQL 的 Devart Excel 插件允許您將 Microsoft Excel 連接到 MySQL 或 MariaDB
    的頭像 發(fā)表于 01-20 12:38 ?92次閱讀
    使用插件將Excel連接到<b class='flag-5'>MySQL</b>/MariaDB

    適用于MySQL和MariaDB的.NET連接器

    支持 ORM 的適用于 MySQL 和 MariaDB 的 .NET 連接器 dotConnect for MySQL 是一種高性能 ADO.NET 數據提供程序,可在開發(fā) MySQL 的應用程序
    的頭像 發(fā)表于 01-16 14:17 ?83次閱讀
    適用于<b class='flag-5'>MySQL</b>和MariaDB的.NET連接器

    MySQL數據庫的安裝

    MySQL數據庫的安裝 【一】各種數據庫的端口 MySQL :3306 Redis :6379 MongoDB :27017 Django :8000 flask :5000 【二】MySQL 介紹
    的頭像 發(fā)表于 01-14 11:25 ?112次閱讀
    <b class='flag-5'>MySQL</b>數據庫的安裝

    MySQL還能跟上PostgreSQL的步伐嗎

    Percona 的老板 Peter Zaitsev最近發(fā)表一篇博客,討論了MySQL是否還能跟上PostgreSQL的腳步。Percona 作為MySQL 生態(tài)扛旗者,Percona 開發(fā)了知名
    的頭像 發(fā)表于 11-18 10:16 ?252次閱讀
    <b class='flag-5'>MySQL</b>還能跟上PostgreSQL的步伐嗎

    香港云服務器怎么部署MySQL數據庫?

    在香港云服務器上部署MySQL數據庫的步驟如下: 步驟 1: 更新軟件包列表 首先,確保軟件包列表是最新的。在終端中執(zhí)行以下命令: sudo apt update 步驟 2: 安裝 MySQL
    的頭像 發(fā)表于 11-14 16:15 ?216次閱讀

    詳解MySQL多實例部署

    詳解MySQL多實例部署
    的頭像 發(fā)表于 11-11 11:10 ?310次閱讀

    MySQL編碼機制原理

    前言 一位讀者在本地部署 MySQL 測試環(huán)境時碰到一個問題,我覺得挺有代表性的,所以寫篇文章介紹一下,看完相信你會對 MySQL 的編碼機制有最本質的了解,本文的目錄結構如下 讀者問題簡介
    的頭像 發(fā)表于 11-09 11:01 ?283次閱讀

    適用于MySQL的dbForge架構比較

    dbForge Schema Compare for MySQL 是一種工具,用于輕松有效地比較和部署 MySQL 數據庫結構和腳本文件夾差異。該工具提供了 MySQL 數據庫架構中所有差異的全面視圖。
    的頭像 發(fā)表于 10-28 09:41 ?241次閱讀
    適用于<b class='flag-5'>MySQL</b>的dbForge架構比較

    配置MySQL主從復制和讀寫分離

    配置MySQL主從復制和讀寫分離
    的頭像 發(fā)表于 10-23 11:44 ?528次閱讀
    配置<b class='flag-5'>MySQL</b>主從復制和讀寫分離

    Jtti:MySQL初始化操作如何設置root密碼

    MySQL初始化時,可以通過以下步驟設置root密碼: 打開命令行工具,使用以下命令啟動MySQL服務: ? sudo service mysql start ? 使用以下命令登錄MySQL
    的頭像 發(fā)表于 08-08 16:45 ?428次閱讀

    MySQL知識點匯總

    大家好,這部分被稱為DQL部分,是每個學習MySQL必須要學會的部分,下面就讓我來介紹MySQL中的其他部分。
    的頭像 發(fā)表于 08-05 15:27 ?432次閱讀
    <b class='flag-5'>MySQL</b>知識點匯總

    華納云:如何修改MySQL的默認端口

    MySQL是世界上最流行的開源關系型數據庫管理系統之一。在某些情況下,由于安全性、網絡策略或端口沖突的原因,數據庫管理員可能需要更改MySQL服務的默認監(jiān)聽端口。本文將指導您如何在不同的操作系統上
    的頭像 發(fā)表于 07-22 14:56 ?341次閱讀
    華納云:如何修改<b class='flag-5'>MySQL</b>的默認端口

    MySQL的整體邏輯架構

    支持多種存儲引擎是眾所周知的MySQL特性,也是MySQL架構的關鍵優(yōu)勢之一。如果能夠理解MySQL Server與存儲引擎之間是怎樣通過API交互的,將大大有利于理解MySQL的核心
    的頭像 發(fā)表于 04-30 11:14 ?479次閱讀
    <b class='flag-5'>MySQL</b>的整體邏輯架構

    MySQL忘記root密碼解決方案

    mysql登錄密碼為password()算法加密,解密成本太高,以下為通用方案; 原理:mysql提供了特殊啟動方式,即跳過權限表驗證,啟動后,登錄不需要提供密碼; 登錄后,即可修改mysql數據庫的user表,重置
    的頭像 發(fā)表于 04-23 16:08 ?751次閱讀

    Redis與MySQL協同升級企業(yè)緩存

    傳統的MySQL數據庫在處理大規(guī)模應用時已經到了瓶頸,RedisEnterprise怎樣助力突破這一瓶頸?RedisEnterprise與MYSQL共同用作企業(yè)級緩存或副本數據庫,會產生什么樣的火花
    的頭像 發(fā)表于 02-19 13:18 ?404次閱讀
    Redis與<b class='flag-5'>MySQL</b>協同升級企業(yè)緩存
    主站蜘蛛池模板: 恋夜影院支持安卓视频美女 | 亚洲精品在线看 | 高清不卡伦理电影在线观看 | 久久人妻少妇嫩草AV蜜桃99 | 久久99国产精品蜜臀AV | 99久久亚洲 | 久久影院一区 | 国产成人精品免费视频大 | 快播电影网站大全 | 秋秋影视午夜福利高清 | 美女洗澡脱得一二干净 | 超碰97免费人妻 | 亚洲视频精品在线观看 | 精品国产成a人在线观看 | 国产精品成人A蜜柚在线观看 | 少妇无套内谢久久久久 | 稚嫩挤奶h调教h | 精品国产国偷自产在线观看 | 久久精品国产免费播放 | 国产一区二区三区乱码在线观看 | 怡春院国产精品视频 | 99久久综合精品免费 | 69国产精品人妻无码免费 | gogo亚洲肉体艺术照片9090 | 亚洲 欧美 国产 综合不卡 | 国产一级做a爰片久久毛片男 | 欧美97色伦综合网 | 伊人不卡久久大香线蕉综合影院 | 亚洲视频免费看 | 飘雪在线观看免费高清完整版韩国 | 99精品视频在线观看re | 久久久久综合 | 伊人久久影院大香线蕉 | 精品视频在线一区 | 国产盗摄一区二区三区 | 国产精品VIDEOS麻豆TUBE | 青青青视频在线 | 小莹的性荡生活 | 国产亚洲精品97在线视频一 | 哪里能看毛片 | 久久久久综合网 |