mysql數據庫日誌詳解(mysql中,關於各類日誌)

本文目錄一覽:

如何查看mysql數據庫操作記錄日誌?

有時候我們會不小心對一個大表進行了 update,比如說寫錯了 where 條件……

此時,如果 kill 掉 update 線程,那回滾 undo log 需要不少時間。如果放置不管,也不知道 update 會持續多久。

那我們能知道 update 的進度么?

實驗

我們先創建一個測試數據庫:

快速創建一些數據:

連續執行同樣的 SQL 數次,就可以快速構造千萬級別的數據:

查看一下總的行數:

我們來釋放一個大的 update:

然後另起一個 session,觀察 performance_schema 中的信息:

可以看到,performance_schema 會列出當前 SQL 從引擎獲取的行數。

等 SQL 結束後,我們看一下 update 從引擎總共獲取了多少行:

可以看到該 update 從引擎總共獲取的行數是表大小的兩倍,那我們可以估算:update 的進度 = (rows_examined) / (2 * 錶行數)

?小貼士

information_schema.tables 中,提供了對錶行數的估算,比起使用 select count(1) 的成本低很多,幾乎可以忽略不計。

那麼是不是所有的 update,從引擎中獲取的行數都會是表大小的兩倍呢?這個還是要分情況討論的,上面的 SQL 更新了主鍵,如果只更新內容而不更新主鍵呢?我們來試驗一下:

等待 update 結束,查看 row_examined,發現其剛好是表大小:

那我們怎麼準確的這個倍數呢?

一種方法是靠經驗:update 語句的 where 中會掃描多少行,是否修改主鍵,是否修改唯一鍵,以這些條件來估算係數。

另一種方法就是在同樣結構的較小的表上試驗一下,獲取倍數。

這樣,我們就能準確估算一個大型 update 的進度了。

如何查看mysql數據庫操作記錄日誌

是否啟用了日誌

1

mysqlshow variables like ‘log_bin’;

怎樣知道當前的日誌

1

mysql show master status;

看二進制日誌文件用mysqlbinlog

shellmysqlbinlog mail-bin.000001(要寫絕對問題路徑d://)

或者

shellmysqlbinlog mail-bin.000001 | tail

Windows 下用類似的命令。

mysql有以下幾種日誌:

錯誤日誌: -log-err

查詢日誌: -log

慢查詢日誌: -log-slow-queries

更新日誌: -log-update

二進制日誌:-log-bin在mysql的安裝目錄下,打開my.ini,在後面加上上面的參數,保存後重啟mysql服務就行了。

MySQL的通用查詢日誌

查詢日誌記錄 MySQL 中所有的 query,通過“—log[=fina_name]”來打開該功能。由

於記錄了所有的 query,包括所有的 select,體積比較大,開啟後對性能也有較大的影響, 所以請大家慎用該功能。 一般只用於跟蹤某些特殊的sql 性能問題才會短暫打開該功能。默認的查詢日誌文件名為 hostname.log。

慢查詢日誌

顧名思義,慢查詢日誌中記錄的是執行時間較長的 query,也就是我們常說的 slow

query,通過設 —log-slow-queries[=file_name]來打開該功能並設置記錄位置和文件名, 默認文件名為 hostname-slow.log,默認目錄也是數據目錄。

慢查詢日誌採用的’是簡單的文本格式, 可以通過各種文本編輯器查看其中的內容。中其 記錄了語句執行的時刻,執行所消耗的時間,執行用戶,連接主機等相關信息。MySQL 還提 供了專門用來分析滿查詢日誌的工具程序mysqlslowdump, 用來幫助數據庫管理人員解決可 能存在的性能問題。

mysql 日誌

在mysql數據庫中,錯誤日誌功能是默認開啟的。並且,錯誤日誌無法被禁止。默認情況下,錯誤日誌存儲在mysql數據庫的數據文件中。錯誤日誌文件通常的名稱為hostname.err。其中,hostname表示服務器主機名。

錯誤日誌信息可以自己進行配置的,錯誤日誌所記錄的信息是可以通過log-error和log-warnings來定義的,其中log-err是定義是否啟用錯誤日誌的功能和錯誤日誌的存儲位置,log-warnings是定義是否將警告信息也定義至錯誤日誌中。默認情況下錯誤日誌大概記錄以下幾個方面的信息:服務器啟動和關閉過程中的信息(未必是錯誤信息,如mysql如何啟動InnoDB的表空間文件的、如何初始化自己的存儲引擎的等等)、服務器運行過程中的錯誤信息、事件調度器運行一個事件時產生的信息、在從服務器上啟動服務器進程時產生的信息。

原創文章,作者:AO0U7,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/129803.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
AO0U7的頭像AO0U7
上一篇 2024-10-03 23:27
下一篇 2024-10-03 23:27

相關推薦

  • 如何修改mysql的端口號

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

    編程 2025-04-29
  • Python 常用數據庫有哪些?

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

    編程 2025-04-29
  • openeuler安裝數據庫方案

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

    編程 2025-04-29
  • Cron執行日誌用法介紹

    本文將從多個方面對cron執行日誌進行詳細闡述,包括cron執行日誌的定義、cron執行日誌的產生原因、cron執行日誌的格式以及如何解讀cron執行日誌。 一、定義 Cron是一…

    編程 2025-04-29
  • Hibernate日誌打印sql參數

    本文將從多個方面介紹如何在Hibernate中打印SQL參數。Hibernate作為一種ORM框架,可以通過打印SQL參數方便開發者調試和優化Hibernate應用。 一、通過配置…

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

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

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • 使用Snare服務收集日誌:完整教程

    本教程將介紹如何使用Snare服務收集Windows服務器上的日誌,並將其發送到遠程服務器進行集中管理。 一、安裝和配置Snare 1、下載Snare安裝程序並安裝。 https:…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的數據庫存儲引擎

    本文將介紹兩款高性能的數據庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28

發表回復

登錄後才能評論