<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 2828字,需瀏覽 6分鐘

           ·

          2021-05-11 01:33


          作者:z小趙

          ★ 

          一枚用心堅(jiān)持寫原創(chuàng)的“無趣”程序猿,在自身受益的同時(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ù)庫技術(shù)來存儲(chǔ)一些信息。目前市面上用的比較多的主流數(shù)據(jù)庫有 MySQL、Oracle,以及逐漸流行起來的 PostgreSQL;下圖為截止發(fā)稿前各類數(shù)據(jù)庫的排名情況(數(shù)據(jù)來源于 DB-Engines 官網(wǎng))

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

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

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

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

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

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

          • 了解 SQL 語句執(zhí)行的底層實(shí)現(xiàn)原理,從而寫出更加高效的 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,目前庫里單表存儲(chǔ)數(shù)據(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)整(主要是作者寫文章比較隨性,想到比較好的話題會(huì)隨時(shí)插入到系列文章中來)。

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

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

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

          到此,MySQL 安裝完成,關(guān)于 MySQL 的語法基本使用,不熟悉的朋友請(qǐng)先看文章開頭下載 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)于你要回家,但是門上了鎖,你只有擁有正確的鑰匙才能把房門打開進(jìn)去,而分配處理線程去執(zhí)行任務(wù)就相當(dāng)于你回家了讓掃地機(jī)器人幫你掃地,讓電飯煲?guī)湍阒笾啵阒皇侨蝿?wù)的分配者。

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

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

          • 優(yōu)化器:用于優(yōu)化或者重寫用戶的請(qǐng)求 SQL。優(yōu)化或者重寫 SQL 就是優(yōu)化器覺得用戶提交的 SQL 不夠高效,優(yōu)化器通過自己的一套邏輯處理后重寫了執(zhí)行相同功能的 SQL 語句,并且其執(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ǔ)引擎并沒有事務(wù)的功能,再比如 InnoBD 存儲(chǔ)引擎對(duì)于并發(fā)操作實(shí)現(xiàn)了行級(jí)鎖,而 MYISAM 存儲(chǔ)引擎是表鎖。常見的存儲(chǔ)引擎有如下:InnoDB、MYISAM、NDB、Memory 等等,文章以 InnoDB 存儲(chǔ)引擎貫穿整個(gè)系列,因?yàn)?InnoDB 在生產(chǎn)環(huán)境中也是使用最多的存儲(chǔ)引擎。存儲(chǔ)引擎究竟實(shí)現(xiàn)了哪些功能呢?這里以 InnoDB 為例:

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

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

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

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

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

          總結(jié)

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

          推薦閱讀:

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

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

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

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

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

          全網(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)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  3344在线观看免费下载视频 | 精品成人无码麻豆 | 婷婷五月天社区 | 亚洲视频 中文字幕 | 3级片在线播放 |