中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MYSQL 8 Histogram statistics 直方圖是什么樣的

發布時間:2021-10-25 10:26:27 來源:億速云 閱讀:201 作者:柒染 欄目:大數據

這篇文章將為大家詳細講解有關MYSQL 8 Histogram statistics 直方圖是什么樣的,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

周六日,松懈了,罪過罪過, MYSQL 從8.0開始就開始正式走到開掛數據庫得行列,估計8.0鋪開后,大部分原先的MYSQL的經驗的進行一次洗牌,今天就從MYSQL 的直方圖開始。

MYSQL 從8.03 開始引入的直方圖的功能,那什么是直方圖,直方圖對數據庫的查詢有什么幫助下面我們的學習一下。

首先數據庫引入直方圖的是大部分數據庫早已經做的事情,2年前 TIDB 的一次講座聽了一下,當時TIDB 就引入了直方圖。而MYSQL 到8.03 才引入直方圖這個......

一個查詢其實查詢的就是每個列的值,并顯示他,根據對應的條件,而條件也是從每列中獲得的。那這里提出三個問題

1  每列中值到底有多少種

2  每列的每種值得數量有多少,那個多,那個少

3  一個表有多少行

通過上面三個問題,其實我們就可以算出一個百分比,一個列中的某個值在這列總行數的占比。下圖僅僅是舉例,這里僅僅是舉例,直方圖是有橫縱坐標的,舉例,橫坐標是值域,會標注每個直方圖中的每個區域的值域,而縱坐標是每個值域在整個表或列中的數量。

MYSQL 8 Histogram statistics 直方圖是什么樣的

我們先不說更深的理論,我們先嘗試著建立一個直方圖,然后繼續

MYSQL 8 Histogram statistics 直方圖是什么樣的

上面的圖中

ANALYZE TABLE employees UPDATE HISTOGRAM ON first_name  WITH 32 BUCKETS;

通過上面的語句我們就創建了一個直方圖,關于為什么 BUCKETS 是32 ,這是一個經驗值,是官方推薦第一次建立直方圖給定的值,當然這個值越大精度會越高,但調整到一定更高的數量后精度的提高就不會那么明顯了,其實桶的數量和上圖的橫坐標有關,相當于每個值得范圍會精細。

當然我們也可以給多個字段來建立直方圖。

MYSQL 8 Histogram statistics 直方圖是什么樣的

這里請注意,如果您多次為同一個字段建立直方圖,那么最新建立的會覆蓋之前的直方圖。直方圖的桶的數量是 1-1024,。

這里還要提醒一下,建立直方圖的中可能由于輸入的錯誤,輸入了錯誤的字段名,而直方圖會為錯誤的列名建立直方圖,這點大家要知道。

MYSQL 8 Histogram statistics 直方圖是什么樣的

當然你可以刪除你建立錯誤的直方圖

MYSQL 8 Histogram statistics 直方圖是什么樣的

而關于直方圖的使用中有一個變量關于這個信息是否能放入到內存的限制,通過這個限制來對內存中是否能放入直方圖進行了限制。

MYSQL 8 Histogram statistics 直方圖是什么樣的

聚德

下圖

 SELECT table_name,histogram->>'$."sampling-rate"'   FROM   information_schema.column_statistics   WHERE  table_name = "employees"  AND column_name = "first_name"; 

通過查詢,可以看到我們創建了桶,到底有多少樣例的數據被放入到了桶,16%

MYSQL 8 Histogram statistics 直方圖是什么樣的

說到這里,估計已經有人納悶了,這個直方圖到底有什么用,為什么不用索引,有索引更新索引的統計信息不就可以了。

我們看下面

1 我不建立索引 

2  我查詢數據 第一次不建立直方圖

3  我建立直方圖,不建立索引查詢

3  我建立索引查詢

先刪除已經建立的直方圖

ANALYZE TABLE employees drop HISTOGRAM ON last_name;

ANALYZE TABLE employees drop HISTOGRAM ON first_name;

查詢數據

MYSQL 8 Histogram statistics 直方圖是什么樣的

我們可以看到filtered 是 20%

我們建立直方圖

MYSQL 8 Histogram statistics 直方圖是什么樣的

可以明確看到 filtered 過濾 11% 在沒有索引的情況下,這是有利于查詢的,或提高查詢的性能的。

MYSQL 8 Histogram statistics 直方圖是什么樣的

那么問題來了,如果我建立索引呢,其實你不用問,實際的答案一般是走索引快。

下面是走索引的查詢時間

MYSQL 8 Histogram statistics 直方圖是什么樣的

在我刪除索引后,整體的查詢消耗 0.14秒

MYSQL 8 Histogram statistics 直方圖是什么樣的 在下圖我再次去掉了直方圖,并且在沒有索引和直方圖的情況下,化了0.15秒

MYSQL 8 Histogram statistics 直方圖是什么樣的

直方圖作為一個MYSQL的新生事物,應該支持,但實在話目前屬于雞肋的技術

1  大部分老牌的數據庫都有的功能

2  目前需要手動來建立更新

3   單純使用直方圖,對數據的查詢的幫助有限

當然如果你不喜歡這個功能

Set optimizer_switch=’condition_fanout_filter=off’;

可以將其關閉

如果你想知道,到底你建立了多少直方圖

select * from information_schema.column_statistics\G

可以去查看 column_statistics 來獲得數據

直方圖目前可以作為索引查詢的補充手段,并且以后的功能應該會變得更強,值得期待,MYSQL 從8.0 開始已經不再是互聯網類的數據庫,正在往全方位,企業級的數據邁進,當然面對 ORACLE  PG , MSSQL 這三位來說,在企業應用,前方的路還的努力!

關于MYSQL 8 Histogram statistics 直方圖是什么樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

怀集县| 巴塘县| 于都县| 景洪市| 门头沟区| 怀柔区| 页游| 香格里拉县| 中超| 绍兴市| 和静县| 三亚市| 温泉县| 义乌市| 正安县| 卓资县| 英德市| 息烽县| 迁西县| 栾川县| 大关县| 庄浪县| 新疆| 柏乡县| 大悟县| 兴安县| 浦城县| 淄博市| 桦南县| 土默特左旗| 合肥市| 嘉善县| 页游| 攀枝花市| 陆丰市| 武川县| 赤水市| 驻马店市| 公主岭市| 合作市| 洪湖市|