InnoDB
、MyISAM
、Memory
等多個存儲引擎,如今默認爲 InnoDB
當一個SQL執行時首先會進入查詢緩存mysql
查看以前是否執行過該語句,若是執行過則會以key-value的形式保存在緩存中,key是查詢語句,value是查詢結果sql
若是緩存命中則直接返回結果,若是查詢語句不在緩存中繼續後面的流程緩存
大多數狀況下咱們不推薦使用查詢緩存,由於緩存失效很是頻繁,只要一個更新,那麼這個表上全部的緩存都會失效,吐過數據的更新比較多,那麼緩衝命中的效率很低,不斷的在失效微信
在MySQL中提供了參數 query_cache_type
參數來設置,默認是 DEMAND
,表示對默認的SQL都不使用查詢緩存,若是要對特的語句進行緩存查詢,則可使用 SQL_CACHE
來顯示的指定,如 select SQL_CACHE * from T where ID=1;
函數
在MySQL8.0 開始,查詢緩存整個功能模塊已經刪除掉再也不擁有優化
select
標記出來,這就是一個查詢,在具體的表名,查詢 的字段等等所有分析出來You have an error in your SQL syntax
的提示join
時,查詢表的順序128MB
, 偏小my.ini
配置:[server]
innodb_buffer_pool_size = 2147483648插件
Buffer Pool
中,16KB
, 也就是一頁數據包含16KB
的數據BufferPool
中的數據頁通常咱們叫緩存頁,默認狀況下緩存頁與磁盤上的數據頁大小是對應的Buffer Pool
中的內存地址以及其餘一些信息Buffer Pool
中,全部的描述信息都在最前面,而後各個緩存頁放在後面5%
左右,也就是大概800
字節,因此當咱們設置buffer pool
的大小爲128MB
,可是實際上 Buffer Pool
的真實大小會超出一些,可能有有130MB
左右,這多出來的就是每一個緩存頁的描述信息表名.ibd
, 這樣的磁盤數據文件,這就是表空間的概念和物理體現表名.ibd
的數據文件在表空間中有太多的數據頁很差管理,這是引入了數據區的概念,英文:extent
code
一個數據區中有連續的64
個數據頁,每一個數據頁16kb
, 因此每一個數據區大小是1MB
server
同時265
個數據區被劃分爲一組blog
在表空間中第一組數據區的第一個數據區的前三個數據頁是固定的,存放一些特殊的描述性的信息
FSP_HDR
數據頁: 存放一些表空間和這一組數據區的屬性IBUF——BITMAP
數據頁:存放這組數據頁全部的 insert buffer
的一些信息INODE
數據頁:存放一些特殊信息表空間中其餘各組數據區的第一個數據區的頭兩個數據頁都是存放特殊信息的
本文由AnonyStar 發佈,可轉載但需聲明原文出處。
歡迎關注微信公帳號 :雲棲簡碼 獲取更多優質文章
更多文章關注筆者博客 :雲棲簡碼 i-code.online