乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      數(shù)據(jù)庫(kù) | 001-MySQL梳理系列(一)

       路人甲Java 2021-05-13

      MySQL基本組成

      SQL執(zhí)行流程

      • Server 層主要包括連接器、查詢緩存、分析器、優(yōu)化器、執(zhí)行器,包含了MySQL主要的很多核心功能,以及所有的內(nèi)置函數(shù)、存儲(chǔ)過(guò)程、觸發(fā)器、視圖等,其實(shí)就是所有跨存儲(chǔ)引擎的功能都是在這一層實(shí)現(xiàn)的

      • 存儲(chǔ)引擎層,主要負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)和讀取,是以插件的形式存在的 ,支持如 InnoDBMyISAM、Memory 等多個(gè)存儲(chǔ)引擎,現(xiàn)在默認(rèn)為 InnoDB

      查詢緩存

      • 當(dāng)一個(gè)SQL執(zhí)行時(shí)首先會(huì)進(jìn)入查詢緩存

      • 查看之前是否執(zhí)行過(guò)該語(yǔ)句,如果執(zhí)行過(guò)則會(huì)以key-value的形式保存在緩存中,key是查詢語(yǔ)句,value是查詢結(jié)果

      • 如果緩存命中則直接返回結(jié)果,如果查詢語(yǔ)句不在緩存中繼續(xù)后面的流程

      • 大多數(shù)情況下我們不推薦使用查詢緩存,因?yàn)榫彺媸Х浅nl繁,只要一個(gè)更新,那么這個(gè)表上所有的緩存都會(huì)失效,吐過(guò)數(shù)據(jù)的更新比較多,那么緩沖命中的效率很低,不斷的在失效

      • 在MySQL中提供了參數(shù) query_cache_type 參數(shù)來(lái)設(shè)置,默認(rèn)是 DEMAND ,表示對(duì)默認(rèn)的SQL都不使用查詢緩存,如果要對(duì)特的語(yǔ)句進(jìn)行緩存查詢,則可以使用 SQL_CACHE 來(lái)顯示的指定,如 select SQL_CACHE * from T where ID=1;

      • 在MySQL8.0 開(kāi)始,查詢緩存整個(gè)功能模塊已經(jīng)刪除掉不再擁有

      分析器

      • 分析器主要包含詞法分析語(yǔ)法分析

      • 詞法分析主要分析一條SQL中各個(gè)字符串代表什么,比如 select 標(biāo)記出來(lái),這就是一個(gè)查詢,在具體的表名,查詢 的字段等等全部分析出來(lái)

      • 語(yǔ)法分析主要是分析SQL語(yǔ)句是否符合MySQL的規(guī)范,如果我們SQL寫(xiě)的有問(wèn)題,那么經(jīng)常看到的一個(gè)異常就是 You have an error in your SQL syntax 的提示

      優(yōu)化器

      • 對(duì)我們的SQL進(jìn)行優(yōu)化,得到更高的執(zhí)行計(jì)劃

      • 如有多個(gè)索引時(shí)確定要用那個(gè)索引

      • 當(dāng)有多變聯(lián)查join 時(shí),查詢表的順序

      • 對(duì)查詢條件和語(yǔ)句的優(yōu)化

      執(zhí)行器

      • 首先校驗(yàn)是否有對(duì)這張表的訪問(wèn)權(quán)限,如果沒(méi)有權(quán)限則會(huì)報(bào)錯(cuò)

      • 如果有,則根據(jù)引擎接口打開(kāi)表進(jìn)行數(shù)據(jù)的查詢篩選

      Buffer Pool

      • 默認(rèn)大小128MB, 偏小

      • 對(duì)于16核32G機(jī)器,可以分配2G內(nèi)存,配置文件:my.ini 配置:

      [server]
      innodb_buffer_pool_size = 2147483648

      數(shù)據(jù)頁(yè)

      • MySQL中對(duì)數(shù)據(jù)進(jìn)行抽象,按照數(shù)據(jù)頁(yè)的形式來(lái)存放到文件,當(dāng)查詢時(shí),首先定位到要查詢數(shù)據(jù)所在的數(shù)據(jù)頁(yè),之后將整個(gè)數(shù)據(jù)頁(yè)加載到Buffer Pool 中,

      • 數(shù)據(jù)頁(yè)默認(rèn)的大小是 16KB , 也就是一頁(yè)數(shù)據(jù)包含16KB的數(shù)據(jù)

      • BufferPool 中的數(shù)據(jù)頁(yè)一般我們叫緩存頁(yè),默認(rèn)情況下緩存頁(yè)與磁盤(pán)上的數(shù)據(jù)頁(yè)大小是對(duì)應(yīng)的

      • 對(duì)于每個(gè)緩存頁(yè)都有一個(gè)描述信息

      • 描述信息包括:數(shù)據(jù)頁(yè)的所屬表空間,數(shù)據(jù)頁(yè)的標(biāo)號(hào),這個(gè)緩存頁(yè)在Buffer Pool 中的內(nèi)存地址以及其他一些信息

      • Buffer Pool 中,所有的描述信息都在最前面,然后各個(gè)緩存頁(yè)放在后面

      • 描述數(shù)據(jù)大小相當(dāng)于緩存頁(yè)大小的5% 左右,也就是大概800字節(jié),所以當(dāng)我們?cè)O(shè)置buffer pool 的大小為128MB ,但是實(shí)際上 Buffer Pool 的真實(shí)大小會(huì)超出一些,可能有有130MB 左右,這多出來(lái)的就是每個(gè)緩存頁(yè)的描述信息

      表空間

      • 平時(shí)我們創(chuàng)建張表時(shí)都會(huì)在磁盤(pán)上對(duì)應(yīng)著一個(gè)表名.ibd , 這樣的磁盤(pán)數(shù)據(jù)文件,這就是表空間的概念和物理體現(xiàn)

      • 對(duì)于一些系統(tǒng)表空間可能存在著對(duì)應(yīng)多個(gè)磁盤(pán)文件,我們自己創(chuàng)建的表對(duì)應(yīng)的表空間一般都是對(duì)應(yīng)一個(gè) 表名.ibd 的數(shù)據(jù)文件

      數(shù)據(jù)區(qū)

      • 在表空間中有太多的數(shù)據(jù)頁(yè)不好管理,這是引入了數(shù)據(jù)區(qū)的概念,英文:extent

      • 一個(gè)數(shù)據(jù)區(qū)中有連續(xù)的64個(gè)數(shù)據(jù)頁(yè),每個(gè)數(shù)據(jù)頁(yè)16kb, 所以每個(gè)數(shù)據(jù)區(qū)大小是1MB

      • 同時(shí)265個(gè)數(shù)據(jù)區(qū)被劃分為一組

      • 在表空間中第一組數(shù)據(jù)區(qū)的第一個(gè)數(shù)據(jù)區(qū)前三個(gè)數(shù)據(jù)頁(yè)是固定的,存放一些特殊的描述性的信息

        • FSP_HDR 數(shù)據(jù)頁(yè): 存放一些表空間和這一組數(shù)據(jù)區(qū)的屬性

        • IBUF——BITMAP 數(shù)據(jù)頁(yè):存放這組數(shù)據(jù)頁(yè)所有的 insert buffer 的一些信息

        • INODE 數(shù)據(jù)頁(yè):存放一些特殊信息

      • 表空間中其他各組數(shù)據(jù)區(qū)的第一個(gè)數(shù)據(jù)區(qū)的頭兩個(gè)數(shù)據(jù)頁(yè)都是存放特殊信息的


      本文由AnonyStar 發(fā)布,可轉(zhuǎn)載但需聲明原文出處。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類(lèi)似文章 更多