免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

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

MySQL基本組成

SQL執(zhí)行流程

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

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

查詢緩存

  • 當一個SQL執(zhí)行時首先會進入查詢緩存

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

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

  • 大多數(shù)情況下我們不推薦使用查詢緩存,因為緩存失效非常頻繁,只要一個更新,那么這個表上所有的緩存都會失效,吐過數(shù)據(jù)的更新比較多,那么緩沖命中的效率很低,不斷的在失效

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

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

分析器

  • 分析器主要包含詞法分析語法分析

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

  • 語法分析主要是分析SQL語句是否符合MySQL的規(guī)范,如果我們SQL寫的有問題,那么經(jīng)??吹降囊粋€異常就是 You have an error in your SQL syntax 的提示

優(yōu)化器

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

  • 如有多個索引時確定要用那個索引

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

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

執(zhí)行器

  • 首先校驗是否有對這張表的訪問權(quán)限,如果沒有權(quán)限則會報錯

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

Buffer Pool

  • 默認大小128MB, 偏小

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

[server]
innodb_buffer_pool_size = 2147483648

數(shù)據(jù)頁

  • MySQL中對數(shù)據(jù)進行抽象,按照數(shù)據(jù)頁的形式來存放到文件,當查詢時,首先定位到要查詢數(shù)據(jù)所在的數(shù)據(jù)頁,之后將整個數(shù)據(jù)頁加載到Buffer Pool 中,

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

  • BufferPool 中的數(shù)據(jù)頁一般我們叫緩存頁,默認情況下緩存頁與磁盤上的數(shù)據(jù)頁大小是對應的

  • 對于每個緩存頁都有一個描述信息

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

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

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

表空間

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

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

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

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

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

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

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

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

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

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

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


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

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
什么是數(shù)據(jù)庫的“緩存池”?(萬字長文,絕對干貨)
超詳細的MySQL工作原理 體系結(jié)構(gòu)
詳解MySQL大表優(yōu)化方案
?Mysql數(shù)據(jù)庫查詢好慢,除了索引,還能因為什么?
MySQL 深入學習總結(jié)
MySQL這些底層執(zhí)行原理,早已成必備了!
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服