日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL日志分类及性能分析你应该知道的知识

發布時間:2023/12/10 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL日志分类及性能分析你应该知道的知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

MySQL日志記錄了MySQL數據庫日常操作和錯誤信息,MySQL總共有四種類型的日志,通過分析這些日志可以查詢到MySQL的運行情況、用戶操作、錯誤信息等,可以為MySQL的管理和優化提供必要信息。

?1、日志類型

? ? MySQL總共有四種類型的日志,如下:

  • 錯誤日志:記錄Mysql服務的啟動、運行或停止MySQL服務時出現的問題,默認開啟。
  • 查詢日志:記錄建立連接的客戶端連接和執行的語句。
  • 二進制日志:記錄所有更改數據的語句,可以用于數據復制。
  • 慢查詢日志:記錄所有執行時間超過設定時間(long_query_time)的查詢

????四種日志,僅錯誤日志默認開啟,其他需要手動配置開啟,啟動日志會降低服務器性能、而且會占用大量磁盤空間。

什么是刷新日志?

刷新日志可以強制MySQL關閉舊的日志文件,重新打開新的日志文件 即切換到新的日志文件,例如:錯誤日志當手工刪除后無法重新建立新的日志文件,則需要進行刷新日志操作才會重新創建日志文件。

如何操作?
可在服務器端執行:
mysqladmin -u root -p flush-logs
或在客戶端執行
flush logs

?

2、二進制日志

? ? 1、原理介紹

? ? 二進制日志主要記錄MySQL數據庫的變化,主要運用場景為 MySQL replication ,例如主從復制,主主復制,環形復制(不常用),從機通過IO線程讀取主機的二進制日志 生成自己的中繼日志,然后自己的SQL線程通過中繼日志進行復制數據功能,簡單點說就是把SQL再執行一遍,主要原理詳細如下圖:

? ? 2、開啟二進制日志

? ? 在my.cnf文件 [MySQLd]組下進行如下配置

log-bin[=path/filename]

? ? 例如:

????log-bin

????log-bin=mysql-bin

????log-bin=/home/zhpt/logs/mysql-bin

? ? 以上三種方式都可開啟二進制日志

其他配置:

expire_logs_days=10 #自動清除過期日志的時間 max_binlog_size=100M #設置單個二進制日志文件的大小,默認為1G,不能設置超過1G或小于4096B

? ? 3、查看二進制日志及其設置

show variables like 'log_%'

????? ? 結果如下:

? ?也可使用

show binary logs

查看二進制日志文件的個數及文件名,如下圖:

3、錯誤日志

? ? MySQL錯誤日志記錄了MySQL服務在運行中發生的任何嚴重錯誤信息,此錯誤類型默認開啟。

? ? 1、查看日志文件配置

show variables like 'log_error%'

? ? 結果如下所示:

????2、修改日志文件路徑

????????在my.cnf文件 [MySQLd]組下進行如下配置

log-error=/home/zhpt/logs/MySQL_Ruoli.err

? ? ?錯誤日志直接以文件的形式存儲于磁盤上,可隨時手工刪除,刪除后需要執行刷新日志才可生成新的錯誤日志。

4、通用查詢日志

????在my.cnf文件 [MySQLd]組下進行如下配置 開啟 通用查詢日志

log[=path/filename]

?通用查詢日志記錄了用戶的所有操作,可使用編輯工具直接查看,開啟通用查詢日志后,會降低數據庫性能增大磁盤占用,不建議在生產環境中使用。

5、慢查詢日志

? ? 慢查詢日志是MySQL提供的用來記錄執行時間過長的查詢語句,為數據庫性能優化提供重要依據。

? ? 1、查看慢查詢日志開啟狀態及存儲位置:

mysql> show variables like 'slow_query%'; +---------------------------+----------------------------------+ | Variable_name | Value | +---------------------------+----------------------------------+ | slow_query_log | ON | | slow_query_log_file | /mysql/data/localhost-slow.log | +---------------------------+----------------------------------+

? ? 如上所示,此臺服務器已經開啟了慢查詢日志功能,慢查詢日志文件路徑也在其data目錄下。

? ? 2、查看慢查詢日志超時時間

mysql> show variables like 'long_query_time'; +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 5.000000 | +-----------------+-----------+

? ?3、開啟慢查詢日志

前面提到過,慢查詢日志并不是默認開啟的,開啟慢查詢可以通過如下方式:

  • 通過配置文件設置,此種修改方式為永久生效。

? ? ? ? ?在my.cnf文件 [MySQLd]組下進行如下配置,開啟慢查詢日志,如下:

slow_query_log = ON slow_query_log_file =/usr/local/mysql/data/slow.log long_query_time=2 #設置超時時間為2秒,默認為10秒
  • 通過設置全局變量設置,此種方式重啟后失效。

? ? ? ? ? 將 slow_query_log 全局變量設置為“ON”狀態

mysql> set global slow_query_log='ON';

? ? ? ? ??設置慢查詢日志存放的位置

mysql> set global slow_query_log_file='/usr/local/mysql/data/slow.log';

? ? ? ? ?查詢超過2秒就記錄

mysql> set global long_query_time=2;

? ? ? ? ?開啟記錄沒有使用索引的查詢語句

mysql> set global log-queries-not-using-indexes?= on

? ? ?4、慢查詢日志分析

? ? ? ??

? ? ? ? 上圖是一條慢查詢日志的內容,我們進行分析時主要看的就是執行信息,包括執行時間(Query_time)、發送行數(Rows_sent)、掃描行數(Rows_examined),通過降低掃描行數可以明顯降低執行時間。

? ? ? ? ? ? 如果掃描行數明顯大于發送行數說明此條SQL的索引命中率很低,可以優先進行優化。

? ? ? ? ? ? 關于降低降低掃描行數來提升查詢效率最直接的例子就是MySQL的分頁查詢。

? ? ? ? ? ?具體可以另一篇文章:最快速的辦法解決MySQL數據量增大之后翻頁慢問題

? ? ? ??

?

轉載于:https://my.oschina.net/ruoli/blog/1625695

總結

以上是生活随笔為你收集整理的MySQL日志分类及性能分析你应该知道的知识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。