1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        MySQL系列(一):MySQL深入學(xué)習(xí)先導(dǎo)篇之基礎(chǔ)架構(gòu)

        共 2828字,需瀏覽 6分鐘

         ·

        2021-05-11 01:33


        作者:z小趙

        ★ 

        一枚用心堅(jiān)持寫(xiě)原創(chuàng)的“無(wú)趣”程序猿,在自身受益的同時(shí)也讓朋友們?cè)诩夹g(shù)上有所提升。


        文章目錄

        • 為什么要學(xué)習(xí) MySQL?
        • 本系列的側(cè)重點(diǎn)是什么?
        • 本系列文章學(xué)完之后你能得到什么?
        • 關(guān)于 MySQL 環(huán)境及版本的選擇
        • 本系列文章大綱
        • MySQL 的安裝及驗(yàn)證
        • MySQL 的基礎(chǔ)架構(gòu)介紹
        • 總結(jié)


        為什么要學(xué)習(xí) MySQL?

        目前在使用互聯(lián)網(wǎng)技術(shù)的公司中,幾乎每家公司都會(huì)用到數(shù)據(jù)庫(kù)技術(shù)來(lái)存儲(chǔ)一些信息。目前市面上用的比較多的主流數(shù)據(jù)庫(kù)有 MySQL、Oracle,以及逐漸流行起來(lái)的 PostgreSQL;下圖為截止發(fā)稿前各類(lèi)數(shù)據(jù)庫(kù)的排名情況(數(shù)據(jù)來(lái)源于 DB-Engines 官網(wǎng))

        數(shù)據(jù)庫(kù)排名圖

        從圖中可以看出,前 2 名是 Oracle 和 MySQL,可見(jiàn)其應(yīng)用的受歡迎及廣泛使用程度;由于 Oracle 和 MySQL 都是關(guān)系型數(shù)據(jù)庫(kù)且 Oracle 不是免費(fèi)的,本系列文章我們重點(diǎn)來(lái)講解 MySQL 的相關(guān)原理實(shí)現(xiàn)。

        本系列的側(cè)重點(diǎn)是什么?

        關(guān)于 SQL 基礎(chǔ)語(yǔ)法不會(huì)做過(guò)多講解,如果對(duì) SQL 基礎(chǔ)語(yǔ)法不熟悉的朋友可以在公眾號(hào)后臺(tái)回復(fù) MySQL,下載《SQL 必知必會(huì)》PDF 進(jìn)行自學(xué),也可以通過(guò) Google 方式進(jìn)行自學(xué)。

        本系列側(cè)重點(diǎn)是 MySQL 的底層實(shí)現(xiàn)原理、SQL 調(diào)優(yōu)、高性能的索引設(shè)計(jì)、MySQL 集群等等。

        本系列文章學(xué)完之后你能得到什么?

        • 了解 SQL 語(yǔ)句執(zhí)行的底層實(shí)現(xiàn)原理,從而寫(xiě)出更加高效的 SQL
        • 學(xué)會(huì)如何設(shè)計(jì)和使用索引,從而使其效果最大化
        • 學(xué)會(huì)如何構(gòu)建穩(wěn)定的 MySQL 集群
        • 應(yīng)付面試及升職加薪(當(dāng)然,這才是我們的最終目標(biāo)

        關(guān)于 MySQL 環(huán)境及版本的選擇

        1. 安裝使用環(huán)境:MacBook Pro 10.14.6
        2. MySQL 版本:5.6,選擇該版本原因有二:
          • 作者公司使用的是 5.6,目前庫(kù)里單表存儲(chǔ)數(shù)據(jù)量?jī)|級(jí)別
          • 網(wǎng)上調(diào)研各大互聯(lián)網(wǎng)公司使用的 5.6 和 5.7 居多

        基于以上兩點(diǎn),最終選擇使用 5.6 作為本系列內(nèi)容講解的版本,當(dāng)然也會(huì)介紹一些最新版本下的新特性供大家了解學(xué)習(xí)。

        本系列文章大綱

        1. MySQL 安裝及基本架構(gòu)原理介紹
        2. MySQL 的并發(fā)控制和鎖機(jī)制是怎么工作的
        3. MySQL 索引構(gòu)建原理,如果創(chuàng)建出高效的索引
        4. SQL 執(zhí)行原理及優(yōu)化
        5. MySQL 集群搭建及主從同步原理
        6. MySQL 集群的高可用
        7. 實(shí)際生產(chǎn)環(huán)境中 MySQL 與緩存是如何配合使用的?
        8. MySQL 數(shù)據(jù)備份與恢復(fù)(了解學(xué)習(xí))
        9. ......

        以上為本系列文章大綱,當(dāng)然會(huì)隨著文章的逐步講解會(huì)根據(jù)實(shí)際情況進(jìn)行相應(yīng)的調(diào)整(主要是作者寫(xiě)文章比較隨性,想到比較好的話題會(huì)隨時(shí)插入到系列文章中來(lái))。

        MySQL 的安裝及驗(yàn)證

        1. MySQL 下載地址(https://downloads.mysql.com/archives/community/),選擇5.7的dmg版本下載。
        1. 安裝,完成后打開(kāi)系統(tǒng)偏好設(shè)置 -> 點(diǎn)擊 MySQL -> Start MySQL Server
        1. 配置環(huán)境變量
        1. 驗(yàn)證
        • 查看 MySQL 版本號(hào)

        • 登錄 MySQL 服務(wù)端
        • 查看數(shù)據(jù)庫(kù)

        到此,MySQL 安裝完成,關(guān)于 MySQL 的語(yǔ)法基本使用,不熟悉的朋友請(qǐng)先看文章開(kāi)頭下載 PDF 進(jìn)行學(xué)習(xí)。

        MySQL 的基礎(chǔ)架構(gòu)介紹

        MySQL 整個(gè)架構(gòu)圖如上所示,可以分為三部分。第一部分是客戶端,用于向服務(wù)端發(fā)送請(qǐng)求;第二部分為淡綠色框里面的內(nèi)容:

        • 連接及線程管理模塊:用于管理客戶端請(qǐng)求的,比如檢查驗(yàn)證請(qǐng)求連接的合法性,對(duì)于合法用戶分配處理線程去執(zhí)行任務(wù)等等工作。驗(yàn)證合法性就相當(dāng)于你要回家,但是門(mén)上了鎖,你只有擁有正確的鑰匙才能把房門(mén)打開(kāi)進(jìn)去,而分配處理線程去執(zhí)行任務(wù)就相當(dāng)于你回家了讓掃地機(jī)器人幫你掃地,讓電飯煲?guī)湍阒笾?,而你只是任?wù)的分配者。

        • 緩存:用于存儲(chǔ)被頻繁訪問(wèn)的熱點(diǎn)數(shù)據(jù)。其作用是用戶請(qǐng)求的數(shù)據(jù)如果在緩存中存在,則直接返回緩存中的數(shù)據(jù),而不需要再去經(jīng)過(guò)解析器、優(yōu)化器等操作從存儲(chǔ)引擎中獲取,從而加快了數(shù)據(jù)的讀取速度。(題外話,一般涉及到緩存時(shí),絕大部分情況下是為了提高數(shù)據(jù)的訪問(wèn)速度)

        • 解析器:用于解析用戶提交的 SQL 語(yǔ)句,分析請(qǐng)求想要做什么樣的事情。用戶一般提交的請(qǐng)求是 CRUD,比如某個(gè)請(qǐng)求是個(gè) Select,則解析器通過(guò)解析 SQL 語(yǔ)句,發(fā)現(xiàn)是一個(gè)查詢請(qǐng)求,則接下來(lái)就會(huì)進(jìn)行查詢相關(guān)的操作。

        • 優(yōu)化器:用于優(yōu)化或者重寫(xiě)用戶的請(qǐng)求 SQL。優(yōu)化或者重寫(xiě) SQL 就是優(yōu)化器覺(jué)得用戶提交的 SQL 不夠高效,優(yōu)化器通過(guò)自己的一套邏輯處理后重寫(xiě)了執(zhí)行相同功能的 SQL 語(yǔ)句,并且其執(zhí)行效率比用戶提交的 SQL 執(zhí)行效率更高。

        第三部分是存儲(chǔ)引擎,存儲(chǔ)引擎是用于存儲(chǔ)數(shù)據(jù)進(jìn)行 CRUD 操作后對(duì)數(shù)據(jù)處理結(jié)果進(jìn)行存儲(chǔ)的;不同的存儲(chǔ)引擎實(shí)現(xiàn)的功能也不一樣,比如 InnoDB 存儲(chǔ)引擎實(shí)現(xiàn)了事務(wù)功能,而 MYISAM 存儲(chǔ)引擎并沒(méi)有事務(wù)的功能,再比如 InnoBD 存儲(chǔ)引擎對(duì)于并發(fā)操作實(shí)現(xiàn)了行級(jí)鎖,而 MYISAM 存儲(chǔ)引擎是表鎖。常見(jiàn)的存儲(chǔ)引擎有如下:InnoDB、MYISAM、NDB、Memory 等等,文章以 InnoDB 存儲(chǔ)引擎貫穿整個(gè)系列,因?yàn)?InnoDB 在生產(chǎn)環(huán)境中也是使用最多的存儲(chǔ)引擎。存儲(chǔ)引擎究竟實(shí)現(xiàn)了哪些功能呢?這里以 InnoDB 為例:

        1. 支持事務(wù)。對(duì)于日常開(kāi)發(fā)需求中,有些應(yīng)用場(chǎng)景需要聯(lián)動(dòng)多個(gè)資源同時(shí)處理,要么多個(gè)資源同時(shí)處理成功,要么只要有一個(gè)失敗則全體進(jìn)行回滾操作,即是通過(guò)事務(wù)的方式將多個(gè)處理動(dòng)作做成一個(gè)原子性操作。

        2. MVCC 機(jī)制。InnoDB采用了行級(jí)鎖,但是為了進(jìn)一步降低鎖資源的競(jìng)爭(zhēng)程度,采用 MVCC 機(jī)制實(shí)現(xiàn)更高效的并發(fā)操作。

        3. 索引機(jī)制。不同引擎實(shí)現(xiàn)的索引機(jī)制各不相同,InnoDB 引擎通過(guò)對(duì)主鍵建立索引或者主鍵結(jié)合其他列建立二級(jí)索引,加速數(shù)據(jù)的讀取速度。

        4. 可預(yù)測(cè)性預(yù)讀策略。InnoDB 通過(guò)可預(yù)測(cè)性預(yù)讀策略對(duì)磁盤(pán)中的數(shù)據(jù)進(jìn)行讀取,然后在內(nèi)存中建立 hash 索引,從而進(jìn)一步提升讀取數(shù)據(jù)的速度。

        以上為 InnoDB 引擎的部分常見(jiàn)的特性,通過(guò)簡(jiǎn)單了解之后能夠?qū)Φ谌龑拥囊婺軌蛳扔袀€(gè)直觀的認(rèn)識(shí)。

        總結(jié)

        本文主要介紹了為什么要學(xué)習(xí) MySQL,MySQL 的安裝及基本架構(gòu)組成部分的功能介紹,下篇文章我們來(lái)深入了解一下 MySQL 的并發(fā)控制和鎖機(jī)制,敬請(qǐng)期待。

        推薦閱讀:

        數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)概述

        Kafka原理篇:圖解kakfa架構(gòu)原理

        架構(gòu)設(shè)計(jì)方法論

        從面試角度一文學(xué)完 Kafka

        數(shù)據(jù)庫(kù)跟緩存的雙寫(xiě)一致性

        全網(wǎng)最詳盡的負(fù)載均衡原理圖解


        關(guān)號(hào)互聯(lián)網(wǎng)全棧架構(gòu)價(jià)。

            

        瀏覽 58
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            修修视频网站网页在线观看免费 | 一级a一级a爱片免费免免韩国 | 久在线| 寡妇高潮一级毛片免费视频 | 国精产品一区一区三区有va | 双性宝宝你夹得我好难受h | 午夜男人天堂 | 香蕉视频91 | 三级操逼 | 被男人狂揉吃奶胸视频 |