MySQL日志分類及性能分析你應該知道的知識

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

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再執行一遍,主要原理詳細如下圖:

28091547_ge3d.gif

? ? 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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255389.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255389.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255389.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

利用三個點(trsf)來實現各種規則圖形的實現

在Val3,是使用trsf(x,y,z,rx,ry,rz)來實現三維空間點的位置與方向。 其中第一點和第二點位置很重要,第三點是用來確定方向。根據這三個點先確定一個用戶坐標系。 在這個坐標系中,實現圓,三角形,矩形,腰圓,正…

android基礎組件----Button的使用

按鈕由文本或圖標(或文本和一個圖標)組成,當用戶觸摸到它時,會發生一些動作。今天我們開始Button的學習。少年的愛情永遠不夠用,一杯酒足以了卻一件心事。 Button的簡要說明 根據你是否想要一個帶有文本的按鈕&#xf…

@Repository、@Service、@Controller 和 @Component

Repository 、Service 、 Controller 、Component 這四個Spring注解 ,用于把加了注解的 類 加入到Spring 容器中管理,節省了xml 的繁重的配置,盡管如此xml 同樣可以實現(一般建議先搞懂xml)。 Repository Repository注解便屬于最先…

【pyqt5學習】——QTextEdit控件學習:獲取文本、添加文本

目錄 1、QTextEdit控件介紹 2、QTextEdit控件添加文本、添加HTML格式 3、QTextEdit控件獲取文本、獲取HTML格式文本 4、案例 1)完整代碼 2)效果 1、QTextEdit控件介紹 QTextEdit控件是一個支持多行輸入的輸入框,支持HTML進行格式的設置 2…

空間變化

空間變化 第一種:圓 第二種: 矩形 第三種:正五邊形 第四種:正六邊形 第五種:腰圓 算法: 在規則圖形(不包括圓心-直徑法)中,等于或者超過三個點。一般的,利用p1,p2,p3來建立一個用戶…

【pyqt5學習】——QAbstractButton學習(普通按鈕QPushButton、工具按鈕QToolButton、單選按鈕QRadioButton、復選框按鈕QCheckBox)

目錄 1、按鈕介紹 2、普通按鈕QPushButton學習 1)特殊模式——開關按鈕(toggle) ①將按鈕設置為可選擇的 ②將按鈕按下 判斷按鈕是否被按下 isChecked() 2)給按鈕設置前置圖標setIcon() ?編輯 3)按鈕信號 4)完…

java 企業 網站源碼 模版 屏幕自適應 有前后臺 springmvc SSM 生成靜態化

前臺: 支持四套模版, 可以在后臺切換點擊:獲取地址QQ 313596790官網 http://www.fhadmin.org/系統介紹:1.網站后臺采用主流的 SSM 框架 jsp JSTL,網站后臺采用freemaker靜態化模版引擎生成html2.因為是生成的html&…

挖財后端架構簡介

挖財后端技術用的主要是比較大眾的東西,Web容器用Tomcat,框架主要是Spring MVC,也有少量的Play,中間服務層是Dubbo,微容器用Spring Boot,服務注冊這一塊是用ZooKeeper,核心業務開發方式還是圍繞…

【pyqt5學習】——QcomboBox學習

目錄 1、添加條目: 1)逐一添加 2)批量添加 3)獲取當前選中的索引 4)獲取當前選中文本 5)根據索引獲取文本 6)統計條目總數 7)信號——當前選中的索引發生改變currentIndexChanged() 2、…

vSphere Client 編輯虛擬機屬性的問題

vSphere Client 編輯虛擬機屬性的問題 編輯虛擬機屬性的時候, 出現: vpxclient.vmconfig.cpuid 初始值設置異常之類的,重置了, 并將注冊表中的所有vmvare 相關鍵值刪除了, 還是一樣的。。 后面參照https://kb.vmware.c…

Val編程-系統架構

利用Val可以編寫相對大型軟件。 界面書寫,運動軌跡規劃,外部通訊,進程交互,文本讀寫.... GlobalData可以利用一個庫來作為一個公用庫,實現各個庫的數據交互。 PublicFunc書寫基本的通用函數來作為基本函數,…

poj 1256 Anagram—next_permutation的神奇應用

題意:給你一條字符串,讓你輸出字符串中字符的全排列,輸出的順序要按它給的奇葩的字典序。 題解:要輸出全排列,暴力dfs可以過,但要注意題目的字典序以及相同字符的情況。如果用next_permutation()處理可以簡…

【pyqt5學習】—— 滑動條Qslider、計數器QSpinBox學習

目錄 1、滑動條QSlider 1)常用屬性 2)實例——利用滑動條來實現字體大小的修改 ?編輯 2、計數器QSpinBox 1)屬性方法 2)實例 1、滑動條QSlider 1)常用屬性 self.slider QSlider(Qt.Horizontal)# 設置最小值self.slider.setMinimum(2)…

shell常用命令之curl: -w,–write-out參數詳解

顧名思義,write-out的作用就是輸出點什么。curl的-w參數用于在一次完整且成功的操作后輸出指定格式的內容到標準輸出。 輸出格式由普通字符串和任意數量的變量組成,輸出變量需要按照%{variable_name}的格式,如果需要輸出%,double一…

Val編程-速度因子

機械手臂在一個三個基本指令(movel,movej,movec)指令中有下面基本參數進行配置。 1. Frame toolField; Tcp的值2. Frame frameField;用戶坐標系的值3. MoveType absRelField;絕對運動與相對運動4. Config configField;姿態5. BlendType blendTypeField;倒…

Node.js學習之路24——Express框架的app對象

1.express() 基于Node.js平臺,快速、開放、極簡的web開發框架。創建一個Express應用.express()是一個由express模塊導出的入口top-level函數.const express require(express); let app express(); 1.1 靜態資源管理 express.static(root, [options]) express.stat…

【pyqt5學習】——對話框QDialog學習(QMessageBox、QColorDialog、QFIleDialog、QFontDialog、QInputDialog)

目錄 1、對話框QDialog類別 2、通用對話框 ?編輯 3、消息對話框QMessageBox() 1)消息對話框QMessageBox類型 2)案例 ?編輯 4、輸入對話框QInputDialog 1) 類型 2)案例 5、字體格式對話框QFontDialog 6、顏色對話框QColorDialog 1&…

使用 Mesos 管理虛擬機

摘要 為了滿足渲染、基因測序等計算密集型服務的需求,UCloud 推出了“計算工廠”產品,讓用戶可以快速創建大量的計算資源(虛擬機)。該產品的背后,是一套基于 Mesos 的計算資源管理系統。本文簡要介紹該系統的結構、Mes…

Swift數據類型_整型和浮點型

//swift中的整型和浮點型/***//類型推斷整數是Int 浮點數是Double ,日常使用需要注意不能越界,存儲時間毫秒數 英雄經驗數等等之類內容容易越界整型大多數情況下,你不需要在代碼中指定哪種整型。Swift提供了一種額外的整型,Int類型Java中的long型&#x…

Val編程-套接字

套接字的介紹:http://zh.wikipedia.org/wiki/Berkeley%E5%A5%97%E6%8E%A5%E5%AD%97 主要分為客戶端和服務器。客戶端一般是需要主動去鏈接,需要配置服務器的IP和端口。服務器是被動響應,需要打開相應的端口。端口一般不推薦使用系統端口和常用…