MySQL 配置統計數據

来源:https://www.cnblogs.com/wudanyang/archive/2020/04/19/mysql-tong-ji-shu-ju-shi-ru-he-shou-ji-de.html
-Advertisement-
Play Games

什麼是統計數據統計數據怎麼存儲兩種存儲方式:存儲形式:存儲的信息如何更新統計數據NULL 值如何統計參考文檔什麼是統計數據MySQL 為了制定執行計劃收集表的相關信息,如索引行數,索引基數(不同值的數量),占用頁面數等等。這些信息被稱為統計數據。同一條 sql 語句,在不同的數據量級下,不同的索引結... ...


什麼是統計數據

MySQL 為了制定執行計劃收集表的相關信息,如索引行數,索引基數(不同值的數量),占用頁面數等等。這些信息被稱為統計數據

同一條 sql 語句,在不同的數據量級下,不同的索引結構下,執行計劃都是千差萬別的。
而 MySQL 選定執行計劃的標準就是這些統計數據。

統計數據怎麼存儲

兩種存儲方式:

1. 基於磁碟的永久性存儲
2. 基於記憶體的非永久性存儲

預設情況下,MySQL 配置為持久化到磁碟,咱們這次也只討論持久化到磁碟的形式,因為基於記憶體的形式統計的數據與其相同。
在全局變數中有兩個值來標誌是否是用磁碟來存儲
rVXOEj

innodb_stats_persistent:是否使用磁碟
Innodb_stats_persistent_sample_pages:統計數據的抽樣頁面數

存儲形式:

cLC0rO

可以看到有兩個表存儲數據統計信息:innodb_table_stats & innodb_index_stats

存儲的信息

首先來看 innodb_table_stats 中存儲結構
SOEozp

欄位含義:

欄位 含義
database_name 資料庫
table_name 表名
last_update 上次更新時間
n_rows 表中行數
clustered_index_size 聚簇索引占用的頁面數
sum_of_other_index_sizes 除了聚簇索引之外的其他索引站用的頁面數

再來看一下 innodb_index_stats 中的信息

欄位 含義
database_name 資料庫
table_name 表名
index_name 索引名稱
last_update 上次更新時間
stat_name 可以看到最後一列的 stat_description 中有解釋這一列是什麼意思
n_leaf_pages: 葉子頁面的數量
size: 總頁面數。
值得註意的是, n_diff_pfx01n_diff_pfx02, 這兩個是聯合索引中首碼索引的不同部分。
stat_value 統計出的數值
sample_size 為了統計上一個數值用了多少個頁面
stat_description 對統計數據的簡介

如何更新統計數據

這些統計數據並非是一成不變的,否則資料庫的執行計劃會變得特別不准確。
有兩種方式來啟用統計數據更新:
• 開啟 innodb_stats_auto_recalc (在頁面變動超過 10%【定義值】 時,觸發統計數據的計算,非同步過程,不會阻塞)
• 手動調用 ANALYZE TABLE 語句來更新統計信息 (同步過程,會阻塞請求)

NULL 值如何統計

現在一切都很正常,除了 NULL (萬惡之源)
因為 NULL 有多重語義,對於基數來說,有三種解釋:
1. 列中所有的 NULL 都是同一個值,記為 1
2. 忽略 NULL,記為 0
3. 每個 NULL 都算作一個不同的值,記為 N

基於這個事實,mysql 為用戶提供了一個可配置的系統變數: innodb_stats_method
1. nulls_equal:對應上文 1
2. nulls_unequal:對應上文 2
3. nulls_ignored:對應上文 3

建議:最好不要在索引列中存放 NULL 值

參考文檔

《MySQL 是怎樣運行的:從根兒上理解 MySQL》
《MySQL 手冊》


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 基本的操作方法:本文假設你的apahce安裝目錄為/usr/local/apache2,這些方法適合任何情況apahce啟動命令:推薦/usr/local/apache2/bin/apachectl start apaceh啟動apache停止命令/usr/local/apache2/bin/apa ...
  • 命令格式 [root@localhost ~]# scp [參數] [原路徑] [目標路徑] 命令功能 scp是 secure copy的縮寫, scp是linux系統下基於ssh登陸進行安全的遠程文件拷貝命令。linux的scp命令可以在linux伺服器之間複製文件和目錄。 命令參數 -1 強制s ...
  • Parallels Desktop是一款運行在 Mac 電腦上的極為優秀的虛擬機軟體。用戶可以在 Mac OS X 下非常方便運行 Windows、Linux 等操作系統及應用。用戶不必繁瑣重覆地重啟電腦即可在 Win 與 Mac 之間切換甚至同時使用它們。 Parallels Desktop15的 ...
  • 好幾年前寫了一篇《SSIS利用Microsoft Connector for Oracle by Attunity組件進行ETL!》,IT技術真是日新月異,這種方式對於新的SQL SERVER 資料庫版本已不適用了,比如SQL SERVER 2016 的SSIS不需要安裝任何插件就可以抽取Share ...
  • 引用地址:https://blog.csdn.net/weixin_34143774/article/details/89561946 請以原文為主,引用註明出處。問題:今天公司進行軟體測評,在測評期間,測評人員問起PostgreSQL登錄失敗導致用戶鎖定的次數,密碼輸錯幾次賬戶會被鎖定?網上查了一... ...
  • 前言 文章首發於微信公眾號【碼猿技術專欄】:天天用Redis,持久化方案有哪些你知道嗎? Redis目前已經成為主流的記憶體資料庫了,但是大部分人僅僅是停留在會用的階段,你真的瞭解Redis內部的工作原理嗎? 今天這篇文章將為大家介紹Redis持久化的兩種方案,文章將會從以下五個方面介紹: 什麼是RD ...
  • 近日Kafka發佈了最新版本 2.5.0,增加了很多新功能: 下載地址:https://kafka.apache.org/downloads 2.5.0 對TLS 1.3的支持(預設為1.2) 引入用於 Kafka Streams 的 Co groups 用於 Kafka Consumer 的增量 ...
  • 一、什麼是觸發器 資料庫觸發器是一個與表相關聯的,存儲的PL/SQL 語句。每當一個特定的數據操作語句(insert update delete)在指定的表上發出時,Oracle自動執行觸發器中定義的語句序列。 觸發器的應用場景如下: 複雜的安全性檢查 數據的確認 資料庫審計 數據的備份和審計 二、 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...