關於mysql資料庫統計的問題的簡單介紹

本文目錄一覽:

MYSQL資料庫的一個統計需求,可修改表結構

本期我們用 MySQL 提供的 DBUG 工具來研究 MySQL 的 SQL 處理流程。

起手先造個實例

這裡得稍微改一下實例的啟動文件 start,將 CUSTOM_MYSQLD 改為 mysqld-debug:

重啟一下實例,加上 debug 參數:

我們來做一兩個實驗,說明 DBUG 包的作用:

先設置一個簡單的調試規則,我們設置了兩個調試選項:

d:開啟各個調試點的輸出

O,/tmp/mysqld.trace:將調試結果輸出到指定文件

請點擊輸入圖片描述

然後我們創建了一張表,來看一下調試的輸出結果:

請點擊輸入圖片描述

可以看到 create table 的過程中,MySQL 的一些細節操作,比如分配內存 alloc_root 等

這樣看還不夠直觀,我們增加一些信息:

請點擊輸入圖片描述

來看看效果:

請點擊輸入圖片描述

可以看到輸出變成了調用樹的形式,現在就可以分辨出 alloc_root 分配的內存,是為了解析 SQL 時用的(mysql_parse)

我們再增加一些有用的信息:

請點擊輸入圖片描述

可以看到結果中增加了文件名和行號:

請點擊輸入圖片描述

現在我們可以在輸出中找一下統計表相關的信息:

請點擊輸入圖片描述

可以看到 MySQL 在這裡非常機智,直接執行了一個內置的存儲過程來更新統計表。

沿著 que_eval_sql,可以找到其他類似的統計表,比如下面這些:

請點擊輸入圖片描述

請點擊輸入圖片描述

本次實驗中,我們藉助了 MySQL 的 DBUG 包,來讓 MySQL 將處理過程暴露出來。MySQL 中類似的技術還有不少,比如 performance_schema,OPTIMIZER_TRACE 等等。

這些技術將 MySQL 的不同方向的信息暴露出來,方便大家理解其中機制。

mysql資料庫查詢統計的問題

給一個數據示例和結果示例吧,你這樣真的很不直觀,不是很清楚你究竟需要什麼,只能猜測了。

你看看下面的語句的結果是不是你需要的:

select A.createdate

,(SELECT COUNT(*) FROM t_custlogin B WHERE B.createdate BETWEEN A.createdate AND A.createdate+1小時)

from t_custlogin A where A.createdate between begindate and enddate

高分懸賞 mysql多表查詢,並統計的問題

本期我們用 MySQL 提供的 DBUG 工具來研究 MySQL 的 SQL 處理流程。

起手先造個實例

這裡得稍微改一下實例的啟動文件 start,將 CUSTOM_MYSQLD 改為 mysqld-debug:

重啟一下實例,加上 debug 參數:

我們來做一兩個實驗,說明 DBUG 包的作用:

先設置一個簡單的調試規則,我們設置了兩個調試選項:

d:開啟各個調試點的輸出

O,/tmp/mysqld.trace:將調試結果輸出到指定文件

請點擊輸入圖片描述

然後我們創建了一張表,來看一下調試的輸出結果:

請點擊輸入圖片描述

可以看到 create table 的過程中,MySQL 的一些細節操作,比如分配內存 alloc_root 等

這樣看還不夠直觀,我們增加一些信息:

請點擊輸入圖片描述

來看看效果:

請點擊輸入圖片描述

可以看到輸出變成了調用樹的形式,現在就可以分辨出 alloc_root 分配的內存,是為了解析 SQL 時用的(mysql_parse)

我們再增加一些有用的信息:

請點擊輸入圖片描述

可以看到結果中增加了文件名和行號:

請點擊輸入圖片描述

現在我們可以在輸出中找一下統計表相關的信息:

請點擊輸入圖片描述

可以看到 MySQL 在這裡非常機智,直接執行了一個內置的存儲過程來更新統計表。

沿著 que_eval_sql,可以找到其他類似的統計表,比如下面這些:

請點擊輸入圖片描述

請點擊輸入圖片描述

本次實驗中,我們藉助了 MySQL 的 DBUG 包,來讓 MySQL 將處理過程暴露出來。MySQL 中類似的技術還有不少,比如 performance_schema,OPTIMIZER_TRACE 等等。

這些技術將 MySQL 的不同方向的信息暴露出來,方便大家理解其中機制。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/194870.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-02 14:41
下一篇 2024-12-02 14:41

相關推薦

  • Python官網中文版:解決你的編程問題

    Python是一種高級編程語言,它可以用於Web開發、科學計算、人工智慧等領域。Python官網中文版提供了全面的資源和教程,可以幫助你入門學習和進一步提高編程技能。 一、Pyth…

    編程 2025-04-29
  • 如何修改mysql的埠號

    本文將介紹如何修改mysql的埠號,方便開發者根據實際需求配置對應埠號。 一、為什麼需要修改mysql埠號 默認情況下,mysql使用的埠號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • 如何解決WPS保存提示會導致宏不可用的問題

    如果您使用過WPS,可能會碰到在保存的時候提示「文件中含有宏,保存將導致宏不可用」的問題。這個問題是因為WPS在默認情況下不允許保存帶有宏的文件,為了解決這個問題,本篇文章將從多個…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • openeuler安裝資料庫方案

    本文將介紹在openeuler操作系統中安裝資料庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟體源 sudo…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • Java Thread.start() 執行幾次的相關問題

    Java多線程編程作為Java開發中的重要內容,自然會有很多相關問題。在本篇文章中,我們將以Java Thread.start() 執行幾次為中心,為您介紹這方面的問題及其解決方案…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL資料庫 在使用Python操作MySQL之前,我們需要先連接MySQL資料庫。在Python中,我…

    編程 2025-04-29

發表回復

登錄後才能評論