精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MySQL統計信息以及執行計劃預估方式初探

數據庫 MySQL
數據庫中的統計信息在不同(精確)程度上描述了表中數據的分布情況,執行計劃通過統計信息獲取符合查詢條件的數據大小(行數),來指導執行計劃的生成。不過MySQL中的統計信息相對來說簡單很多。

數據庫中的統計信息在不同(精確)程度上描述了表中數據的分布情況,執行計劃通過統計信息獲取符合查詢條件的數據大小(行數),來指導執行計劃的生成。

在以Oracle和SQLServer為代表的商業數據庫,和以開源的PostgreSQL為代表的數據庫中,直方圖是統計信息的一個重要組成部分。

在生成執行計劃的時候,通過統計信息以及統計信息的直方圖來預估符合條件的數據行數,從而影響執行計劃的生成。

統計信息對執行計劃的影響,具體體現在:索引的查找與掃描,多表連接時表之間的驅動順序,表之間的JOIN方式,以及對sql查詢語句的資源分配等等。

但是在MySQL數據庫中,執行計劃的方式相對簡單,表之間的JOIN只有LOOPJOIN一種方式,且沒有并行執行計劃等,也就說通過預估結果集的行數對執行計劃的影響有限。

但是對于某些情況,依舊需要預估的方式來指導執行計劃的生成,比如常見的多表連接時驅動順序,多數情況下是小表驅動大表(不完全一定)的方式來實現查詢的,因此MySQL中一樣需要預估來指導執行計劃的生成。

不過MySQL中的統計信息相對來說簡單很多,只有一個cardinality信息來預估索引的選擇性(show index from table),索引統計信息不包含直方圖的信息,非索引列也不會生成直方圖,也就是無法通過直方圖來預估查詢數據的大小,mysql是通過其他方式來實現預估的。

對于有直方圖的數據來說,直方圖為預估提供了重要的依據,對于沒有直方圖的MySQL,執行計劃是如何預估的?預估的準確性有如何?

筆者在研究這個問題的時候,一開始也遇到不少疑惑的地方,還是看了博客園大神的問題才得以釋惑,后面會給出鏈接。 

首先通過例子,通過一個非常簡單的查詢來觀察一個有意思的現象。

新建測試表,測試表如下: 

  1. create table test_statistics 
  2.     id int auto_increment primary key
  3.     col2 varchar(200), 
  4.     col3 varchar(200), 
  5.     create_date datetime, 
  6.     index idx_create_date(create_date) 
  7. )ENGINE=InnoDB; 

存儲過程通過循環插入數據,調用存儲過程生成100W行數據(100W行的數據,在實際應用中已經是一個非常小的數據量了),create_date字段上生成一個范圍之內的隨機時間。 

  1. CREATE DEFINER=`root`@`%` PROCEDURE `p_insert_test_data`( 
  2.     IN `loop_count` INT 
  3. BEGIN 
  4.     declare i int
  5.     while (loop_count>0)  
  6.     do    
  7.         insert into test_statistics(col2,col3,create_date) values (uuid(),uuid(), DATE_ADD(sysdate(), INTERVAL  -rand()*2400  hour)); 
  8.         set loop_count = loop_count -1; 
  9.     end while; 
  10. END 

寫入測試數據完成之后,進行如下兩個查詢做測試。

簡單地使用select count(1)的來做測試

首先看***個查詢:查詢的時間范圍是: where create_date>’2017-11-01 12:00:00′ and create_date<’2017-11-01 16:00:00′

可以發現:explain預估的行數,與實際行數完全一致。

繼續第二個查詢,擴大查詢的時間范圍,查詢的時間范圍是:where create_date>’2017-11-01 12:00:00′ and create_date<’2017-11-03 16:00:00′

可以發現,此時的explain執行計劃的預估,與實際行數出現了嚴重的偏差

為什么***個查詢做到了精確的預估,而第二個查詢的預估出現嚴重的偏差?

這一點要從預估的計算方式入手來說。

首先,***個查詢和第二個查詢,唯一的不同是,第二個查詢的時間范圍放寬了,為什么時間放寬之后,執行計劃的預估的準確性就大大下降?

既然是“預估”,就一定是存在誤差,只不過是誤差大與小的問題,誤差的大下與具體的預估的方式有關。

任何預估的實現,都是以一種在不同程度上“以偏概全”的方式進行的,比如SQL Server是以對相關數據page的通過某種百分比來取樣,然后存儲在直方圖中做預估依據的。

當然,這種“以偏概全”的預估方式,是在性能與精確度之間權衡折中的結果。

在考慮收集統計信息對性能和資源影響的前提下,預估策略各種方式或者代價盡可能減少對預估產生誤差的因素,關于直方圖的生成這里不細說。

對于沒有直方圖的MySQL,它是是在執行的時候,通過掃描符合查詢條件的部分數據頁后做預估統計的。

MySQL是在查詢的時候,直接對查詢條件范圍內的數據頁,取一定比例樣本做統計之后預估的,但是這里取樣的數據頁面有一定的限制,不會***制取樣做統計預估。

如果符合條件的數據頁超出了預定的范圍,則會取部分頁進行預估,而不是全部頁(為什么不是全部樣做統計預估,原因就不用說了吧)。

比如下圖中,不管是聚集索引還是二級索引(非聚集索引),理論上說都是一顆平衡樹,暫不探究其細節。

假如符合條件的數據是一個范圍,位于兩個矩形框之間。矩形框分別是范圍的左右節點,中間可以想象成多個葉子節點

參考zhanlijun大神的文章,

https://www.cnblogs.com/LBSer/p/3333881.html

上述參考鏈接中得知,MySQL在5.5之后的預估原理如下:

其預估掃描的數據頁分別是前后兩個數據頁,以及從左邊開始連續8個數據頁,得到平均每個page的行數,根據總的page個數預估出這個范圍的數據行數。

具體說,也就是取左右兩個葉子節點,以及從左葉子節點開始連續8個頁的數據做統計,中間可能有多個數據頁,但也會被忽略,這就是上面提到的“以偏概全”的方式。

這里面就存在一個最明顯的問題,也就是符合條件的數據頁面與預估時候采集的頁面的大小關系。

如果符合條件的數據頁的分布少于10個,當然在預估的時候,會全部掃描這些page,當然預估是完全精確的,這也是***個查詢執行計劃預估的實際行數完全不一致的原因。

如果符合條件的數據頁的分布大于10個,當然在預估的時候,會部分掃描這些page,預估的誤差情況就此產生,這也是第二個查詢執行計劃預估的實際行數差異較大的原因。

當然MySQL的每個版本可能都有所改進或者差異,筆者并沒有從源碼中找到具體的算法,當前測試的是5.7.20版本。

但目前仍不清楚,

  1. 在create_date字段上,時間是按照DATE_ADD(sysdate(), INTERVAL -rand()*2400 hour)生成的,從整體分布看,基本按照時間均勻分布的.
  2. 理論上根據這種方式推到,得到的預估結果偏差應該不會很大,但尚不清楚為什么預估與實際存在如此大的差異。
  3. 嘗試找到預估值從精確到產生差異的臨界點,通過查詢實際行數,根據key_len的值以及B樹索引的存儲原理(二級索引葉子節點存儲的二級索引的key值+聚集索引的key值).

理論上計算出來當前查詢一個大概的取樣的page個數,發現這個值預報理論上的10個page差異較大,可能是推到方式有問題,或者是MySQL預估本身有一些不知道的細節問題。

沒有詳細翻MySQL的源碼,尚未找到具體的實現細節。

對于有直方圖的數據庫來說,直方圖的信息也不是沒有代價,或者是***的,直方圖也有直方圖的局限性,這里暫不表述。

對于尚沒有直方圖的MySQL數據庫來說,其預估原理是每次查詢的時候進行對相關的數據頁面進行采樣預估的,而不是從直方圖中獲取到預估信息的,這是一個很消耗性能的操作。

詳情參考:

http://www.orczhou.com/index.php/2013/04/how-mysql-choose-index-in-a-join/

這可能會導致MySQL不適合做較大數據量或者較為復雜的JOIN操作,當然這也取決于具體的業務設計方案以及對數據的依賴程度,或者主觀上的查詢提示操作。

說這句話是冒著被MySQL的大神以及粉絲們怒噴的風險的。

關于MySQL的預估的知識點,搜索到的文章并不是很多,也拘泥于個人的認識有限,也希望對這方面有關注的大神多多指點。

據說MySQL在8.0之后的版本中會加入直方圖信息,以及其他JOIN方式(除了LOOP JOIN),這可能對性能上有比較大的幫助。

參考鏈接

  • https://www.cnblogs.com/LBSer/p/3333881.html
  • http://www.orczhou.com/index.php/2013/04/how-mysql-choose-index-in-a-join/ 
責任編輯:龐桂玉 來源: 數據庫開發
相關推薦

2023-09-21 10:55:51

MysqlSQL語句

2021-05-28 10:46:36

MySQL執行計劃

2022-08-08 08:03:44

MySQL數據庫CBO

2024-09-12 15:16:14

2011-09-14 17:03:17

數據庫執行計劃解析

2021-04-24 12:01:08

MySQL數據庫Mysql執行計劃

2020-09-15 08:44:57

MySQL慢日志SQL

2024-06-12 09:23:37

2021-03-17 09:35:51

MySQL數據庫explain

2015-04-22 14:17:45

SQL SERVERMSSQL SERVE緩沖區

2022-02-15 07:36:21

SQLEXPLAIN數據庫

2017-11-15 08:50:59

數據庫MySQL

2009-11-13 16:28:02

Oracle生成執行計

2010-04-16 09:27:18

Ocacle執行計劃

2022-08-15 15:09:26

SQL數據庫MySQL

2021-02-20 08:40:19

HiveExplain底層

2009-11-18 17:05:47

捕獲Oracle SQ

2009-11-10 16:00:05

Oracle執行計劃

2021-09-07 10:43:25

EverDB分布式執行

2022-12-13 08:36:42

D-SMARTOracle數據庫
點贊
收藏

51CTO技術棧公眾號

国产**成人网毛片九色 | 一呦二呦三呦国产精品| 久久九九99视频| 国产精品私拍pans大尺度在线| 日韩aaaaa| 美女网站视频一区| 亚洲免费观看高清| 成人高清视频观看www| 摸摸摸bbb毛毛毛片| 国产精品一区二区美女视频免费看 | 欧美午夜在线一二页| 中文字幕在线乱| 亚洲区小说区图片区| 欧美日本一区二区视频在线观看| 欧美日韩电影在线| 僵尸世界大战2 在线播放| 国产女人在线视频| 福利一区福利二区| 国内成人精品一区| av片在线免费看| 黑人一区二区三区| 中文字幕在线播放不卡一区| 国产日韩欧美视频| 日本一级片免费看| 伊甸园亚洲一区| 精品国产免费一区二区三区香蕉| www.好吊操| 日韩欧美小视频| 狠狠色丁香婷婷综合久久片| www高清在线视频日韩欧美| 久久久久久综合| 亚洲国产中文字幕在线观看| 玩弄中年熟妇正在播放| 色播色播色播色播色播在线| 国产东北露脸精品视频| 国产精品伦子伦免费视频| 日韩黄色在线视频| 国内综合精品午夜久久资源| 精品国产一区二区三区久久狼黑人| 亚洲精品视频三区| 黄网av在线| 久久综合久久鬼色中文字| 91在线观看免费网站| 中文字幕在线2018| 欧美一区综合| 亚洲另类图片色| 亚洲av永久无码精品| 91看片一区| 色婷婷精品久久二区二区蜜臀av| 国产免费黄视频| 成入视频在线观看| 成人免费一区二区三区视频| 国产欧美综合精品一区二区| 毛片在线免费播放| 欧美精选一区| 有码中文亚洲精品| 免费看日本黄色片| japanese色系久久精品| 精品国产乱码91久久久久久网站| 人妻巨大乳一二三区| 欧美艳星kaydenkross| 亚洲乱码中文字幕| 日韩欧美激情一区二区| 国产午夜在线观看| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 久久露脸国语精品国产91| 亚洲激情网站| 色青青草原桃花久久综合| 久久久无码人妻精品无码| 97久久精品| 69av一区二区三区| 日批视频免费看| 亚洲精品美女久久7777777| 国产又黄又大又粗的视频| 欧美人禽zoz0强交| 免费在线成人激情电影| 欧美视频在线一区| 久久婷婷中文字幕| 一二三四视频在线中文| 欧美日韩免费在线| 手机在线免费观看毛片| 77thz桃花论族在线观看| 中文字幕一区av| 欧美性猛交内射兽交老熟妇| 思思99re6国产在线播放| 久久综合九色综合97婷婷| 日韩久久在线| 内衣办公室在线| av一区二区三区在线| 欧美日韩在线精品一区二区三区| 亚洲精品成人电影| 91免费视频观看| 国内精品久久国产| 丰满人妻av一区二区三区| 88av在线播放| 欧美性猛交xxxx乱大交hd| 99久久.com| 欧美成人激情在线| 国产一区二区三区影院| 久久狠狠亚洲综合| 国产视色精品亚洲一区二区| 风间由美一区| 亚洲成人激情综合网| 日本成人在线不卡| 2024最新电影免费在线观看| 欧美日韩激情小视频| 日本欧美黄色片| 2020日本在线视频中文字幕| 亚洲一区二区三区影院| 人妻少妇被粗大爽9797pw| 国产高潮在线| 欧美高清视频www夜色资源网| 99在线小视频| 欧美日韩一区二区国产| 国产91成人video| 99国产精品99| 成人国产精品免费网站| 一区二区三区av| 中文在线免费二区三区| 色视频一区二区| 无码日韩人妻精品久久蜜桃| 91精品久久久久久综合五月天| 在线观看不卡av| 国产一级片毛片| 国产精品99久久久久久久女警| 99视频网站| 婷婷五月综合久久中文字幕| 播五月开心婷婷综合| 中文字幕一区二区三区5566| 欧美色网一区| 欧美一区二视频| 午夜黄色福利视频| 免费在线看成人av| 欧美一区二区在线视频观看| 成人免费黄色网页| 精品人伦一区二区三区蜜桃免费| 男人天堂999| 好吊妞国产欧美日韩免费观看网站| 久久国产加勒比精品无码| 国产污视频在线看| 粉嫩av一区二区三区| 精品一区二区三区毛片| 欧美亚洲日本精品| 亚洲国产精品va在线看黑人| 久久精品视频免费在线观看| 亚洲影院在线| 91精品久久久久久久久久另类| 亚洲h视频在线观看| 亚洲视频一区二区在线| 日韩视频在线观看一区二区三区| 四季av一区二区凹凸精品| 国产精品久久一区| 婷婷在线免费观看| 一区在线播放视频| 国产精品免费入口| 亚洲aa在线| 色综合导航网站| 97人妻一区二区精品视频| 国产精品一区二区在线观看网站 | 国产精品sss在线观看av| 色综合色综合久久综合频道88| www.97超碰| 亚洲国产精品99久久久久久久久| 国产精品人人爽人人爽| 精品亚洲自拍| 777精品视频| 国产香蕉视频在线看| 欧美日韩一级二级| 波多野结衣亚洲一区二区| 日韩av中文字幕一区二区三区| av在线不卡观看| zzzwww在线看片免费| 亚洲欧美www| 特级西西444www大胆免费看| 亚洲欧洲精品一区二区三区| 超碰网在线观看| 成人羞羞动漫| 亚洲xxx大片| 91在线不卡| 色呦呦日韩精品| 刘亦菲国产毛片bd| 国产成人综合网| 亚洲成人一区二区三区| 欧美aa在线| 亚洲电影免费观看高清完整版在线| 亚洲综合一二三| 国产欧美精品一区二区三区四区 | 又色又爽又黄无遮挡的免费视频| 1024成人网色www| 午夜免费看毛片| 激情综合久久| 国产精品国产三级欧美二区| 国产高清不卡| 久久亚洲影音av资源网| 污污网站免费在线观看| 欧美剧情片在线观看| 国产视频91在线| 久久综合色8888| 成人性生交视频免费观看| 999久久久免费精品国产| 国产精品久久久久7777婷婷| 2024最新电影在线免费观看| 日韩一区二区在线看| 91插插插插插插| gogo大胆日本视频一区| 亚洲最大天堂网| 欧美伊人影院| 国产精品欧美久久| caoporn视频在线| 久久精品99久久久香蕉| 亚洲人成色777777精品音频| 在线免费观看日本一区| 久久免费少妇高潮99精品| 亚洲国产高清在线观看视频| 男人的天堂最新网址| 亚洲伊人网站| 午夜精品短视频| av国产精品| 久久久影视精品| 天堂а√在线8种子蜜桃视频| 91精品在线观看入口| 久久免费精彩视频| 亚洲丝袜另类动漫二区| 中文字幕第3页| 国产成人自拍网| 日韩视频在线观看一区二区三区| 秋霞午夜鲁丝一区二区老狼| 欧美亚洲另类色图| 久久婷婷蜜乳一本欲蜜臀| 亚洲淫片在线视频| 精品美女一区| 国产精品成人av性教育| а√天堂资源地址在线下载| 精品精品国产高清a毛片牛牛| 日韩乱码一区二区| 中文在线免费一区三区高中清不卡| www.se五月| 亚洲高清二区| 五码日韩精品一区二区三区视频| 国产精品一区二区美女视频免费看 | 亚洲一二三在线观看| 欧美国产精品一区| 一级特黄曰皮片视频| 国产午夜精品久久久久久久| 亚洲精品视频大全| 久久99久久99| 亚洲免费av一区| 久久久久中文| 精品人妻人人做人人爽| 91精品国产自产拍在线观看蜜| 精品久久久久久乱码天堂| 99精品中文字幕在线不卡| 国产精品jizz在线观看麻豆| 欧美专区福利免费| 国产精品久久久久77777| 男女啪啪999亚洲精品| 成人黄色免费片| 国产精品久久久久久久久久辛辛 | 国产精品成人一区二区不卡| 一本色道久久综合亚洲二区三区 | 亚洲不卡视频| 国产精品白丝jk白祙| 日本久久成人网| 欧美中文娱乐网| 久久中文字幕av一区二区不卡| 伊人情人网综合| 欧美精品自拍| 欧美日韩亚洲一| 免费观看日韩av| 成人精品视频一区二区| 亚洲视频日本| 国产xxxxx在线观看| 日本欧美一区二区三区| 欧美激情第3页| 国产成人av电影在线播放| 不卡的在线视频| 国产白丝精品91爽爽久久| 在线免费播放av| 国产精品毛片久久久久久| 欧美被狂躁喷白浆精品| 日韩一区有码在线| 久久亚洲精品大全| 色香蕉久久蜜桃| 99超碰在线观看| 欧美一区二区三区免费大片 | 久久久99精品免费观看不卡| 亚洲精品无码一区二区| 国产酒店精品激情| 欲求不满的岳中文字幕| 中文字幕在线观看一区二区| 免费观看a级片| 亚洲综合自拍偷拍| www五月天com| 在线亚洲精品福利网址导航| 国产青青草视频| 在线不卡欧美精品一区二区三区| 中文字幕观看视频| 欧美专区在线观看一区| 精品国产亚洲av麻豆| 日韩三区在线观看| 国产sm主人调教女m视频| 亚洲精品www| 色中色在线视频| 亚洲人在线视频| 特级毛片在线| 国产精品一区二区女厕厕| 风间由美一区二区av101| 国模一区二区三区私拍视频| 欧美美女啪啪| 老汉色影院首页| 影音先锋日韩资源| 99精品人妻少妇一区二区| 国产日韩1区| 免费不卡av网站| 国产精品视频免费看| 影音先锋在线国产| 欧美亚男人的天堂| 天堂成人在线视频| 亚洲视频在线观看视频| xxxx另类黑人| 51国偷自产一区二区三区的来源| 欧美美女一区| 女性隐私黄www网站视频| 成人18视频在线播放| 国产1区2区3区4区| 欧美日韩国产综合新一区 | 亚洲免费电影在线观看| 国产精品视频二区三区| 久久久亚洲精选| aiai久久| 亚洲福利av在线| 欧美视频二区| 99re在线视频免费观看| 成人av综合一区| 妺妺窝人体色WWW精品| 欧美日韩美女在线| 一女二男一黄一片| 欧美电影免费观看完整版| 欧美一区二区三区| 97精品一区二区三区| 91亚洲精品视频在线观看| 亚洲一区 在线播放| 国产一区视频在线看| 日本xxx在线播放| 中文字幕日韩一区| 国产免费一区二区三区免费视频| 日韩成人免费视频| 国产激情视频在线看| 国产欧美 在线欧美| 风间由美一区二区av101| 亚洲巨乳在线观看| 精品一区二区三区视频| 中文字幕电影av| 欧美成人精精品一区二区频| 亚洲图区一区| 动漫精品视频| 999久久久国产精品| 99精品视频在线看| 国产电影一区在线| 国产一级免费av| 欧美精品日韩一区| 久久久pmvav| 国产精品激情自拍| 国产精品久久久久久久免费观看| 久久精品免费一区二区| 国产午夜精品一区二区三区四区| 精品一区二区无码| 久久久精品国产一区二区| 国产精品亚洲d| 日本一道在线观看| 91在线码无精品| 精品一区免费观看| 日韩三级免费观看| 菠萝菠萝蜜在线观看| 国产精品自拍偷拍| 欧美精品激情| 亚洲国产无码精品| 欧美美女网站色| 91美女精品| 国产一区二区免费电影| 久久久久久亚洲精品杨幂换脸| 中文文字幕文字幕高清| 欧美亚洲高清一区二区三区不卡| 色哟哟在线观看| 国产欧美日韩91| 国产欧美丝祙| 99久久国产精| 欧美日韩精品一区二区三区蜜桃 | 亚洲AV成人精品| 色久综合一二码| 青青操视频在线| 成人欧美一区二区三区在线| 久久精品国产www456c0m| 黑人无套内谢中国美女| 伊人开心综合网| 亚洲第一大网站| 国产精品老女人精品视频| 亚洲视频日本| 90岁老太婆乱淫| 在线成人免费视频|