成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

索引下推,這個(gè)點(diǎn)你肯定不知道!

運(yùn)維 數(shù)據(jù)庫(kù)運(yùn)維
索引下推(Index Condition Pushdown) ICP 是Mysql5.6之后新增的功能,主要的核心點(diǎn)就在于把數(shù)據(jù)篩選的過(guò)程放在了存儲(chǔ)引擎層去處理,而不是像之前一樣放到Server層去做過(guò)濾。

[[420266]]

索引下推(Index Condition Pushdown) ICP 是Mysql5.6之后新增的功能,主要的核心點(diǎn)就在于把數(shù)據(jù)篩選的過(guò)程放在了存儲(chǔ)引擎層去處理,而不是像之前一樣放到Server層去做過(guò)濾。

雖然這是一個(gè)比較簡(jiǎn)單的概念,但是可能很多不細(xì)心的同學(xué)對(duì)于索引下推會(huì)存在一個(gè)小小的誤區(qū),至于是什么,請(qǐng)看下文。

什么是索引下推

首先,我們創(chuàng)建一張user表,同時(shí)建立age_name的聯(lián)合索引,同時(shí)插入3條測(cè)試數(shù)據(jù)。

然后,我們執(zhí)行查詢(xún)explain SELECT * from user where age >10 and name = 'a',如下圖所示,就會(huì)看見(jiàn)Extra中顯示了Using index condition,你可能就知道了,這表示出現(xiàn)了索引下推了。

沒(méi)錯(cuò),針對(duì)這個(gè)查詢(xún)場(chǎng)景就是索引下推,那到底什么是索引下推呢?

按照我們上述的場(chǎng)景,實(shí)際上就存在兩個(gè)索引樹(shù),一個(gè)是主鍵索引,存儲(chǔ)了具體的數(shù)據(jù)的信息,另外則是age_name的聯(lián)合索引,保存了主鍵的ID。

在沒(méi)有ICP索引下推的時(shí)候,這個(gè)查詢(xún)的流程應(yīng)該是這樣(略過(guò)無(wú)關(guān)的細(xì)節(jié)):

  1. Mysql Server層調(diào)用API查詢(xún)存儲(chǔ)引擎數(shù)據(jù)
  2. 存儲(chǔ)引擎根據(jù)聯(lián)合索引首先通過(guò)條件找到所有age>10的數(shù)據(jù)
  3. 找到的每一條數(shù)據(jù)都根據(jù)主鍵索引進(jìn)行回表查詢(xún),直到找到不符合條件的結(jié)果
  4. 返回?cái)?shù)據(jù)給Server層,Server根據(jù)條件對(duì)結(jié)果進(jìn)行過(guò)濾,流程結(jié)束

而有了ICP之后的流程則是這樣:

  1. Mysql Server層調(diào)用API查詢(xún)存儲(chǔ)引擎數(shù)據(jù)
  2. 存儲(chǔ)引擎根據(jù)聯(lián)合索引首先通過(guò)條件找到所有age>10的數(shù)據(jù),根據(jù)聯(lián)合索引中已經(jīng)存在的name數(shù)據(jù)進(jìn)行過(guò)濾,找到符合條件的數(shù)據(jù)
  3. 根據(jù)找到符合條件的數(shù)據(jù),回表查詢(xún)
  4. 返回?cái)?shù)據(jù)給Server層,流程結(jié)束

對(duì)比這兩個(gè)流程就會(huì)很明顯的發(fā)現(xiàn),使用ICP之后我們就是簡(jiǎn)單的通過(guò)聯(lián)合索引中本來(lái)就有的數(shù)據(jù)直接過(guò)濾了,不需要再查到一堆無(wú)用的數(shù)據(jù)去Server層進(jìn)行過(guò)濾,這樣的話(huà)減少了回表的次數(shù)和返回的數(shù)據(jù),IO次數(shù)減少了,對(duì)性能有很好的提升。

按照官方文檔所說(shuō),ICP其實(shí)也存在一定的使用限制場(chǎng)景,只說(shuō)關(guān)鍵的,亂七八糟的不說(shuō)。

  1. 首先,ICP適用于range、ref、eq_ref和ref_or_null的場(chǎng)景下
  2. InnoDB和MyISAM都支持ICP,Mysql partition分表的話(huà)也可以使用
  3. 對(duì)于InndoDB而言,ICP只支持二級(jí)索引,因?yàn)橹麈I索引它用不上不是嗎?
  4. 子查詢(xún)不支持

現(xiàn)在我們基本都使用的5.6以上的版本了,默認(rèn)就是開(kāi)啟ICP的,想關(guān)閉的話(huà)可以通過(guò)命令SET optimizer_switch = 'index_condition_pushdown=off';。

一個(gè)小小的誤區(qū)

一般來(lái)說(shuō),正常情況下Mysql一次查詢(xún)都只能走一個(gè)索引,我們來(lái)修改上述的表結(jié)構(gòu),把聯(lián)合索引改為兩個(gè)單獨(dú)的索引,數(shù)據(jù)保持不變

然后我們執(zhí)行查詢(xún)explain SELECT * from user where age >10 and name like 'a%',結(jié)果如下圖。

你會(huì)發(fā)現(xiàn),我靠,怎么還有索引下推?這不科學(xué)對(duì)不對(duì),好像無(wú)法解釋嘛,難道這一次索引下推還能先查出age再下推到name索引嗎,這完全不合理啊。

其實(shí)不然,真實(shí)的情況是,Using index condition并不代表一定是使用了索引下推,只是代表可以使用,但是不一定用了。。。

這個(gè)就有點(diǎn)坑爹,可能會(huì)對(duì)我們判斷的時(shí)候造成誤解啊。

如果你去網(wǎng)上搜很多人舉例子這樣建索引,然后告訴你這就是索引下推的時(shí)候,你可以盡情的噴他了,我們說(shuō)索引下推一定是在聯(lián)合索引的情況下,根據(jù)聯(lián)合索引本身就有的數(shù)據(jù)直接做一次過(guò)濾,而不用再進(jìn)行多次無(wú)用的回表再到Server層進(jìn)行過(guò)濾,這一點(diǎn)你要很明確才行。

好了,今天的話(huà)題就到這里結(jié)束,我是艾小仙,我們下期見(jiàn)。

 

(本來(lái)我想多畫(huà)兩張圖的,不過(guò)好像覺(jué)得這個(gè)概念實(shí)在太簡(jiǎn)單了,畫(huà)的花里胡哨的反而沒(méi)有意義,就像你說(shuō)覆蓋索引、回表還畫(huà)好幾張圖給你解釋嗎,沒(méi)有必要對(duì)不對(duì),肯定不是因?yàn)槲覒小!!?

 

責(zé)任編輯:武曉燕 來(lái)源: 艾小仙
相關(guān)推薦

2018-09-02 15:43:56

Python代碼編程語(yǔ)言

2023-09-08 08:23:29

Servlet程序MVC

2018-05-10 11:50:13

Docker容器冷知識(shí)

2023-11-30 08:32:31

OpenFeign工具

2024-01-09 07:39:20

maven特性版本

2020-06-12 09:20:33

前端Blob字符串

2020-07-28 08:26:34

WebSocket瀏覽器

2019-12-24 09:49:02

微軟英語(yǔ)瀏覽器

2023-11-15 08:22:42

Java開(kāi)發(fā)小技巧

2022-04-24 16:00:15

LinuxLinux命令ls命令

2011-09-15 17:10:41

2021-02-01 23:23:39

FiddlerCharlesWeb

2022-10-13 11:48:37

Web共享機(jī)制操作系統(tǒng)

2009-12-10 09:37:43

2010-08-23 09:56:09

Java性能監(jiān)控

2022-01-24 16:42:48

bpftraceLinux工具

2020-09-15 08:35:57

TypeScript JavaScript類(lèi)型

2022-11-04 08:19:18

gRPC框架項(xiàng)目

2023-12-13 08:28:07

2016-07-22 17:55:07

云計(jì)算
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 中文字幕第7页 | 自拍偷拍中文字幕 | av手机在线看 | 99久久国产综合精品麻豆 | 国产精品高 | 国产亚洲成av人片在线观看桃 | 日韩伦理一区二区 | 日韩中字幕| 亚洲成av人片在线观看 | 欧美极品在线观看 | 天天拍夜夜爽 | 亚洲a网| 日韩综合网 | 国产精品久久久久无码av | 亚洲高清在线 | 先锋资源站 | 国产欧美精品 | 亚洲三级视频 | 日韩一区二区三区av | 久久精品国产免费高清 | 亚洲一区二区三区四区视频 | 新疆少妇videos高潮 | 在线欧美日韩 | 亚洲精品福利视频 | 日韩精品视频网 | 丁香婷婷久久久综合精品国产 | 精品伊人久久 | 欧美精品一区二区三区在线四季 | 日韩福利在线 | 激情视频网站 | 国产在线一 | 日韩伦理一区二区三区 | 欧美日韩亚洲一区 | 亚洲夜射| 日日操操 | 精品久久久久久久久久久久久久 | 精品国产一区二区国模嫣然 | 911网站大全在线观看 | 国产福利精品一区 | 成人精品国产 | 国产精品3区 |