欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析MySQL的基數(shù)統(tǒng)計(jì)

 更新時(shí)間:2020年11月27日 08:37:11   作者:賜我白日夢  
這篇文章主要介紹了MySQL的基數(shù)統(tǒng)計(jì)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)MySQL數(shù)據(jù)庫的使用,感興趣的朋友可以了解下

一、基數(shù)是啥?
Cardinality指的就是MySQL表中某一列的不同值的數(shù)量。

如果這一類是唯一索引,那基數(shù) = 行數(shù)。

如果這一列是sex,枚舉類型只有男女,那它是基數(shù)就是2

Cardinality越高,列就越有成為索引的價(jià)值。MySQL執(zhí)行計(jì)劃也會(huì)基于Cardinality選擇索引。

通過下面的方式可以看到表中各列的基數(shù)。

比如這個(gè)經(jīng)典的例子:
有一列為sex,那對(duì)于sex列中存儲(chǔ)的值來說 非男即女,它的基數(shù)最大就是2。
那也就完全沒有必要為sex建立索引。因?yàn)?,為了提升你基于sex的查詢速度,MySQL會(huì)為你選擇的這個(gè)新索引創(chuàng)建一棵全新的B+Tree。但你sex只有兩種值,對(duì)于MySQL來說,即使它為你指定的列建立了B+Tree索引,真正執(zhí)行查詢時(shí),最多進(jìn)行一次二分查詢,剩下的操作只能是遍歷,所以為sex創(chuàng)建索引意義不大。

二、InnoDB更新基數(shù)的時(shí)機(jī)?
參數(shù):innodb_stats_auto_recalc控制MySQL是否主動(dòng)重新計(jì)算這些持久性的信息。默認(rèn)為1表示true,0表示false。
默認(rèn)情況下當(dāng)表中的行變化超過10%時(shí),重新計(jì)算基數(shù)信息。

三、基數(shù)是估算出來

基數(shù)并不會(huì)實(shí)時(shí)更新!而且它是通過采樣估算出來的值!

至于基數(shù)的公式是怎樣的,可能并不重要。

重要的是你得知道,他是通過隨機(jī)采樣數(shù)據(jù)頁的方式統(tǒng)計(jì)出來的一個(gè)估算值。

而且隨機(jī)采樣的頁數(shù)可以通過參數(shù)innodb_stats_persistent_sample_pages 設(shè)置,默認(rèn)值是20。

這就意味著 基數(shù)值并不準(zhǔn)確,甚至你每次計(jì)算的結(jié)果相擦還是蠻大的。

四、持久化基數(shù)

可以通過參數(shù)innodb_stats_persistent 控制是否持久化基數(shù),默認(rèn)為off。

當(dāng)然你可以為一個(gè)單獨(dú)的表設(shè)置 STATS_PERSISTENT=1 那么它的 innodb_stats_persistent將自動(dòng)被啟用。

開啟它的好處是:重啟MySQL不會(huì)再重復(fù)計(jì)算這個(gè)值,加快重啟速度。

五、如何主動(dòng)更新基數(shù)?

執(zhí)行下面的SQL時(shí)都會(huì)觸發(fā)InnoDB更新基數(shù)(即使你并沒有意識(shí)到它會(huì)更新基數(shù))。

所以盡量選擇一個(gè)業(yè)務(wù)低峰期

analyze table tableName;

如果因?yàn)椴蓸拥臄?shù)量太少了,計(jì)算的基數(shù)錯(cuò)的離譜。那很可能會(huì)導(dǎo)致MySQL的優(yōu)化器選錯(cuò)索引。這是你可以將這個(gè)值適當(dāng)調(diào)大。但是增加 太多可能會(huì)導(dǎo)致 ANALYZE TABLE運(yùn)行緩慢。

反之, ANALYZE TABLE運(yùn)行太慢。你可以適度調(diào)整參數(shù)innodb_stats_persistent_sample_pages 的值。但是這又可能導(dǎo)致基數(shù)計(jì)算的不準(zhǔn)確。

如果沒有辦法平衡兩者的關(guān)系??梢钥紤]減少表中索引列的數(shù)量或限制分區(qū)的數(shù)量以降低 ANALYZE TABLE復(fù)雜性。表的主鍵中的列數(shù)也很重要,因?yàn)橹麈I列被附加到每個(gè)非唯一索引中。

參考:

https://dev.mysql.com/doc/refman/5.7/en/innodb-persistent-stats.html

https://dev.mysql.com/doc/refman/5.7/en/innodb-analyze-table-complexity.html

以上就是淺析MySQL的基數(shù)統(tǒng)計(jì)的詳細(xì)內(nèi)容,更多關(guān)于MySQL 基數(shù)統(tǒng)計(jì)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解決mysql的賦權(quán)操作之GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION問題

    解決mysql的賦權(quán)操作之GRANT ALL PRIVILEGES ON *.*

    這篇文章主要介紹了解決mysql的賦權(quán)操作之GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION問題,本文給大家分享兩種情況分析分享解決方案,感興趣的朋友一起看看吧
    2022-11-11
  • Windows10下mysql 8.0.12 解壓版安裝圖文教程

    Windows10下mysql 8.0.12 解壓版安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了Windows10下mysql 8.0.12 解壓版安裝圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • MySQL中distinct和count(*)的使用方法比較

    MySQL中distinct和count(*)的使用方法比較

    這篇文章主要針對(duì)MySQL中distinct和count(*)的使用方法比較,對(duì)兩者之間的使用方法、效率進(jìn)行了詳細(xì)分析,感興趣的小伙伴們可以參考一下
    2015-11-11
  • MySQL千萬不要這樣寫update語句

    MySQL千萬不要這樣寫update語句

    MySQL中update語句用于更新表中的現(xiàn)有數(shù)據(jù),亦可用UPDATE語句來更改表中單個(gè)行,一組行或所有行的列值,這篇文章主要給大家介紹了關(guān)于MySQL千萬不要這樣寫update語句的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • mysql 5.7.19 winx64免安裝版配置教程

    mysql 5.7.19 winx64免安裝版配置教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.19 winx64免安裝版配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • mysql復(fù)制data文件遷移的實(shí)現(xiàn)步驟

    mysql復(fù)制data文件遷移的實(shí)現(xiàn)步驟

    有時(shí)候,我們需要遷移整個(gè)數(shù)據(jù)庫,包括數(shù)據(jù)文件,本文將介紹如何通過復(fù)制MySQL的data文件來完成數(shù)據(jù)庫遷移,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • Windows系統(tǒng)中配置開啟MySQL數(shù)據(jù)庫日志的完整步驟

    Windows系統(tǒng)中配置開啟MySQL數(shù)據(jù)庫日志的完整步驟

    這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)中配置開啟MySQL數(shù)據(jù)庫日志的完整步驟,大家要開啟MySQL數(shù)據(jù)庫的日志功能,可以按照本文介紹的步驟進(jìn)行操作,需要的朋友可以參考下
    2023-09-09
  • mysql-8.0.15-winx64 解壓版安裝教程及退出的三種方式

    mysql-8.0.15-winx64 解壓版安裝教程及退出的三種方式

    本文通過圖文并茂的形式給大家介紹了mysql-8.0.15-winx64 解壓版安裝,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • MySQL命令行刪除表中的一個(gè)字段

    MySQL命令行刪除表中的一個(gè)字段

    本文介紹在MySQL數(shù)據(jù)庫中,如何根據(jù)字段名來刪除表中的一個(gè)字段,需要的朋友可以參考下
    2016-04-04
  • MySQL之解決字符串?dāng)?shù)字的排序失效問題

    MySQL之解決字符串?dāng)?shù)字的排序失效問題

    這篇文章主要介紹了MySQL之解決字符串?dāng)?shù)字的排序失效問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評(píng)論