'MySQL數據庫服務器越來越慢,如何分析並解決?'

MySQL 數據庫 SQL 中央處理器 雲計算 DBA 硬件 老王談運維 2019-08-21
"

引言:

作為一名DBA你是否遇到這種情況?當你埋頭認真工作之時,發現自己操作的數據庫變得越來越慢,甚至是卡頓。如何處理?是什麼原因導致你的MySQL運行速度變慢呢?

"

引言:

作為一名DBA你是否遇到這種情況?當你埋頭認真工作之時,發現自己操作的數據庫變得越來越慢,甚至是卡頓。如何處理?是什麼原因導致你的MySQL運行速度變慢呢?

MySQL數據庫服務器越來越慢,如何分析並解決?

下面小編將帶大家從多方面進行分析是什麼導致MySQL數據庫變慢~

一、 外部的硬件因素

"

引言:

作為一名DBA你是否遇到這種情況?當你埋頭認真工作之時,發現自己操作的數據庫變得越來越慢,甚至是卡頓。如何處理?是什麼原因導致你的MySQL運行速度變慢呢?

MySQL數據庫服務器越來越慢,如何分析並解決?

下面小編將帶大家從多方面進行分析是什麼導致MySQL數據庫變慢~

一、 外部的硬件因素

MySQL數據庫服務器越來越慢,如何分析並解決?

能夠直接影響MySQL服務器性能的系統指標有:CPU、內存、磁盤等的使用情況。

使用 vmstart 查看服務器資源使用情況:

"

引言:

作為一名DBA你是否遇到這種情況?當你埋頭認真工作之時,發現自己操作的數據庫變得越來越慢,甚至是卡頓。如何處理?是什麼原因導致你的MySQL運行速度變慢呢?

MySQL數據庫服務器越來越慢,如何分析並解決?

下面小編將帶大家從多方面進行分析是什麼導致MySQL數據庫變慢~

一、 外部的硬件因素

MySQL數據庫服務器越來越慢,如何分析並解決?

能夠直接影響MySQL服務器性能的系統指標有:CPU、內存、磁盤等的使用情況。

使用 vmstart 查看服務器資源使用情況:

MySQL數據庫服務器越來越慢,如何分析並解決?

根據上面的反饋結果,可以看得出磁盤的數據寫入比較大、CPU負載較高,這時需要對正在運行的程序進行優化,減小資源負載。

二、 使用不恰當的SQL語句

例如:

1)在第一條SQL語句中,where 查詢語句中出現了 null,這時數據庫的引擎不會使用索引,而是對全表進行一次掃描,這樣的查詢將導致數據庫變慢。

"

引言:

作為一名DBA你是否遇到這種情況?當你埋頭認真工作之時,發現自己操作的數據庫變得越來越慢,甚至是卡頓。如何處理?是什麼原因導致你的MySQL運行速度變慢呢?

MySQL數據庫服務器越來越慢,如何分析並解決?

下面小編將帶大家從多方面進行分析是什麼導致MySQL數據庫變慢~

一、 外部的硬件因素

MySQL數據庫服務器越來越慢,如何分析並解決?

能夠直接影響MySQL服務器性能的系統指標有:CPU、內存、磁盤等的使用情況。

使用 vmstart 查看服務器資源使用情況:

MySQL數據庫服務器越來越慢,如何分析並解決?

根據上面的反饋結果,可以看得出磁盤的數據寫入比較大、CPU負載較高,這時需要對正在運行的程序進行優化,減小資源負載。

二、 使用不恰當的SQL語句

例如:

1)在第一條SQL語句中,where 查詢語句中出現了 null,這時數據庫的引擎不會使用索引,而是對全表進行一次掃描,這樣的查詢將導致數據庫變慢。

MySQL數據庫服務器越來越慢,如何分析並解決?

解決方法:使用0來代替null,即第二條SQL語句,可以加快數據庫查詢速度。

2)在查詢的數據表當中如果使用 update、delete、insert 過於頻繁,我們可以嘗試使用optimize table 來存放,索引,存儲文件。

3)Select for update 如果條件的字段沒有使用索引的話,就會導致對全表進行查詢,而不是對特定的行進行查詢,需要注意。

下面第一條SQL語句的效率要比第二條SQL語句高的多。因為第一條SQL語句使用的索引查詢;第二條SQL語句是將表中所有的數據都檢索一遍,相當於全表查詢,比較慢和消耗資源。

"

引言:

作為一名DBA你是否遇到這種情況?當你埋頭認真工作之時,發現自己操作的數據庫變得越來越慢,甚至是卡頓。如何處理?是什麼原因導致你的MySQL運行速度變慢呢?

MySQL數據庫服務器越來越慢,如何分析並解決?

下面小編將帶大家從多方面進行分析是什麼導致MySQL數據庫變慢~

一、 外部的硬件因素

MySQL數據庫服務器越來越慢,如何分析並解決?

能夠直接影響MySQL服務器性能的系統指標有:CPU、內存、磁盤等的使用情況。

使用 vmstart 查看服務器資源使用情況:

MySQL數據庫服務器越來越慢,如何分析並解決?

根據上面的反饋結果,可以看得出磁盤的數據寫入比較大、CPU負載較高,這時需要對正在運行的程序進行優化,減小資源負載。

二、 使用不恰當的SQL語句

例如:

1)在第一條SQL語句中,where 查詢語句中出現了 null,這時數據庫的引擎不會使用索引,而是對全表進行一次掃描,這樣的查詢將導致數據庫變慢。

MySQL數據庫服務器越來越慢,如何分析並解決?

解決方法:使用0來代替null,即第二條SQL語句,可以加快數據庫查詢速度。

2)在查詢的數據表當中如果使用 update、delete、insert 過於頻繁,我們可以嘗試使用optimize table 來存放,索引,存儲文件。

3)Select for update 如果條件的字段沒有使用索引的話,就會導致對全表進行查詢,而不是對特定的行進行查詢,需要注意。

下面第一條SQL語句的效率要比第二條SQL語句高的多。因為第一條SQL語句使用的索引查詢;第二條SQL語句是將表中所有的數據都檢索一遍,相當於全表查詢,比較慢和消耗資源。

MySQL數據庫服務器越來越慢,如何分析並解決?

三、 MySQL參數設置有問題

3.1 max_connect_errors

我們知道「max_connect_errors 」正常情況下的默認值是10,它是用來表示受信賬號錯誤的連接次數, 當這個次數達到了10之後,MySQL服務器就會被自動阻塞住了。 例如下圖這樣的錯誤:

"

引言:

作為一名DBA你是否遇到這種情況?當你埋頭認真工作之時,發現自己操作的數據庫變得越來越慢,甚至是卡頓。如何處理?是什麼原因導致你的MySQL運行速度變慢呢?

MySQL數據庫服務器越來越慢,如何分析並解決?

下面小編將帶大家從多方面進行分析是什麼導致MySQL數據庫變慢~

一、 外部的硬件因素

MySQL數據庫服務器越來越慢,如何分析並解決?

能夠直接影響MySQL服務器性能的系統指標有:CPU、內存、磁盤等的使用情況。

使用 vmstart 查看服務器資源使用情況:

MySQL數據庫服務器越來越慢,如何分析並解決?

根據上面的反饋結果,可以看得出磁盤的數據寫入比較大、CPU負載較高,這時需要對正在運行的程序進行優化,減小資源負載。

二、 使用不恰當的SQL語句

例如:

1)在第一條SQL語句中,where 查詢語句中出現了 null,這時數據庫的引擎不會使用索引,而是對全表進行一次掃描,這樣的查詢將導致數據庫變慢。

MySQL數據庫服務器越來越慢,如何分析並解決?

解決方法:使用0來代替null,即第二條SQL語句,可以加快數據庫查詢速度。

2)在查詢的數據表當中如果使用 update、delete、insert 過於頻繁,我們可以嘗試使用optimize table 來存放,索引,存儲文件。

3)Select for update 如果條件的字段沒有使用索引的話,就會導致對全表進行查詢,而不是對特定的行進行查詢,需要注意。

下面第一條SQL語句的效率要比第二條SQL語句高的多。因為第一條SQL語句使用的索引查詢;第二條SQL語句是將表中所有的數據都檢索一遍,相當於全表查詢,比較慢和消耗資源。

MySQL數據庫服務器越來越慢,如何分析並解決?

三、 MySQL參數設置有問題

3.1 max_connect_errors

我們知道「max_connect_errors 」正常情況下的默認值是10,它是用來表示受信賬號錯誤的連接次數, 當這個次數達到了10之後,MySQL服務器就會被自動阻塞住了。 例如下圖這樣的錯誤:

MySQL數據庫服務器越來越慢,如何分析並解決?

解決方法:

當出現這樣的錯誤時,我們需要 flush hosts 來解除錯誤。其中,max_connect_errors 表示連接中斷重複請求連接的次數。

對於內網而言,建議將 max_connect_errors 的數量設置大於10000,這樣就不會輕易阻塞,並且你還得定期進行 flush hosts.

3.2 connect_timeout

「connect_timeout」表示的是MySQL等待應答連接報文的最大秒數,當超過這個時間後,表示 MySQL 連接失敗了。 這個值默認值是5S,所以當系統在處於高併發狀態下,很容易超時,因此建議將 connect_timeout 設置為10-15秒為宜。

3.3. master-connect-retry

「master-connect-retry」表示的是在重新建立主從連接時,出現連接失敗後,間隔多久可以重試上述過程。 建議將此值設置大一些。

"

引言:

作為一名DBA你是否遇到這種情況?當你埋頭認真工作之時,發現自己操作的數據庫變得越來越慢,甚至是卡頓。如何處理?是什麼原因導致你的MySQL運行速度變慢呢?

MySQL數據庫服務器越來越慢,如何分析並解決?

下面小編將帶大家從多方面進行分析是什麼導致MySQL數據庫變慢~

一、 外部的硬件因素

MySQL數據庫服務器越來越慢,如何分析並解決?

能夠直接影響MySQL服務器性能的系統指標有:CPU、內存、磁盤等的使用情況。

使用 vmstart 查看服務器資源使用情況:

MySQL數據庫服務器越來越慢,如何分析並解決?

根據上面的反饋結果,可以看得出磁盤的數據寫入比較大、CPU負載較高,這時需要對正在運行的程序進行優化,減小資源負載。

二、 使用不恰當的SQL語句

例如:

1)在第一條SQL語句中,where 查詢語句中出現了 null,這時數據庫的引擎不會使用索引,而是對全表進行一次掃描,這樣的查詢將導致數據庫變慢。

MySQL數據庫服務器越來越慢,如何分析並解決?

解決方法:使用0來代替null,即第二條SQL語句,可以加快數據庫查詢速度。

2)在查詢的數據表當中如果使用 update、delete、insert 過於頻繁,我們可以嘗試使用optimize table 來存放,索引,存儲文件。

3)Select for update 如果條件的字段沒有使用索引的話,就會導致對全表進行查詢,而不是對特定的行進行查詢,需要注意。

下面第一條SQL語句的效率要比第二條SQL語句高的多。因為第一條SQL語句使用的索引查詢;第二條SQL語句是將表中所有的數據都檢索一遍,相當於全表查詢,比較慢和消耗資源。

MySQL數據庫服務器越來越慢,如何分析並解決?

三、 MySQL參數設置有問題

3.1 max_connect_errors

我們知道「max_connect_errors 」正常情況下的默認值是10,它是用來表示受信賬號錯誤的連接次數, 當這個次數達到了10之後,MySQL服務器就會被自動阻塞住了。 例如下圖這樣的錯誤:

MySQL數據庫服務器越來越慢,如何分析並解決?

解決方法:

當出現這樣的錯誤時,我們需要 flush hosts 來解除錯誤。其中,max_connect_errors 表示連接中斷重複請求連接的次數。

對於內網而言,建議將 max_connect_errors 的數量設置大於10000,這樣就不會輕易阻塞,並且你還得定期進行 flush hosts.

3.2 connect_timeout

「connect_timeout」表示的是MySQL等待應答連接報文的最大秒數,當超過這個時間後,表示 MySQL 連接失敗了。 這個值默認值是5S,所以當系統在處於高併發狀態下,很容易超時,因此建議將 connect_timeout 設置為10-15秒為宜。

3.3. master-connect-retry

「master-connect-retry」表示的是在重新建立主從連接時,出現連接失敗後,間隔多久可以重試上述過程。 建議將此值設置大一些。

MySQL數據庫服務器越來越慢,如何分析並解決?

總結:

當你的數據庫服務器變得很慢,不要驚慌,不妨試一試上述的方法,上文只是例舉一些有用的方法,如果有更好的方法補充,歡迎評論區留言。

在技術快速發展的當今社會,雲計算已經成為企業IT部署的首選,特別是對於雲資源使用的事實監控變得尤為重要。雲服務器出現CPU負載過高、磁盤IO讀寫壓力過大、內存壓力較大的情況,我們怎麼樣才能在第一時間內獲知呢?

"

引言:

作為一名DBA你是否遇到這種情況?當你埋頭認真工作之時,發現自己操作的數據庫變得越來越慢,甚至是卡頓。如何處理?是什麼原因導致你的MySQL運行速度變慢呢?

MySQL數據庫服務器越來越慢,如何分析並解決?

下面小編將帶大家從多方面進行分析是什麼導致MySQL數據庫變慢~

一、 外部的硬件因素

MySQL數據庫服務器越來越慢,如何分析並解決?

能夠直接影響MySQL服務器性能的系統指標有:CPU、內存、磁盤等的使用情況。

使用 vmstart 查看服務器資源使用情況:

MySQL數據庫服務器越來越慢,如何分析並解決?

根據上面的反饋結果,可以看得出磁盤的數據寫入比較大、CPU負載較高,這時需要對正在運行的程序進行優化,減小資源負載。

二、 使用不恰當的SQL語句

例如:

1)在第一條SQL語句中,where 查詢語句中出現了 null,這時數據庫的引擎不會使用索引,而是對全表進行一次掃描,這樣的查詢將導致數據庫變慢。

MySQL數據庫服務器越來越慢,如何分析並解決?

解決方法:使用0來代替null,即第二條SQL語句,可以加快數據庫查詢速度。

2)在查詢的數據表當中如果使用 update、delete、insert 過於頻繁,我們可以嘗試使用optimize table 來存放,索引,存儲文件。

3)Select for update 如果條件的字段沒有使用索引的話,就會導致對全表進行查詢,而不是對特定的行進行查詢,需要注意。

下面第一條SQL語句的效率要比第二條SQL語句高的多。因為第一條SQL語句使用的索引查詢;第二條SQL語句是將表中所有的數據都檢索一遍,相當於全表查詢,比較慢和消耗資源。

MySQL數據庫服務器越來越慢,如何分析並解決?

三、 MySQL參數設置有問題

3.1 max_connect_errors

我們知道「max_connect_errors 」正常情況下的默認值是10,它是用來表示受信賬號錯誤的連接次數, 當這個次數達到了10之後,MySQL服務器就會被自動阻塞住了。 例如下圖這樣的錯誤:

MySQL數據庫服務器越來越慢,如何分析並解決?

解決方法:

當出現這樣的錯誤時,我們需要 flush hosts 來解除錯誤。其中,max_connect_errors 表示連接中斷重複請求連接的次數。

對於內網而言,建議將 max_connect_errors 的數量設置大於10000,這樣就不會輕易阻塞,並且你還得定期進行 flush hosts.

3.2 connect_timeout

「connect_timeout」表示的是MySQL等待應答連接報文的最大秒數,當超過這個時間後,表示 MySQL 連接失敗了。 這個值默認值是5S,所以當系統在處於高併發狀態下,很容易超時,因此建議將 connect_timeout 設置為10-15秒為宜。

3.3. master-connect-retry

「master-connect-retry」表示的是在重新建立主從連接時,出現連接失敗後,間隔多久可以重試上述過程。 建議將此值設置大一些。

MySQL數據庫服務器越來越慢,如何分析並解決?

總結:

當你的數據庫服務器變得很慢,不要驚慌,不妨試一試上述的方法,上文只是例舉一些有用的方法,如果有更好的方法補充,歡迎評論區留言。

在技術快速發展的當今社會,雲計算已經成為企業IT部署的首選,特別是對於雲資源使用的事實監控變得尤為重要。雲服務器出現CPU負載過高、磁盤IO讀寫壓力過大、內存壓力較大的情況,我們怎麼樣才能在第一時間內獲知呢?

MySQL數據庫服務器越來越慢,如何分析並解決?

在這裡我們給大家安利一個運維神器 ---王教授,通過對雲資源的實時的監控,幫我們發現雲服務器、數據庫等資源的異常問題,並且將存在的異常信息第一時間通知到團隊個人,大大提升團隊運維效率!

"

引言:

作為一名DBA你是否遇到這種情況?當你埋頭認真工作之時,發現自己操作的數據庫變得越來越慢,甚至是卡頓。如何處理?是什麼原因導致你的MySQL運行速度變慢呢?

MySQL數據庫服務器越來越慢,如何分析並解決?

下面小編將帶大家從多方面進行分析是什麼導致MySQL數據庫變慢~

一、 外部的硬件因素

MySQL數據庫服務器越來越慢,如何分析並解決?

能夠直接影響MySQL服務器性能的系統指標有:CPU、內存、磁盤等的使用情況。

使用 vmstart 查看服務器資源使用情況:

MySQL數據庫服務器越來越慢,如何分析並解決?

根據上面的反饋結果,可以看得出磁盤的數據寫入比較大、CPU負載較高,這時需要對正在運行的程序進行優化,減小資源負載。

二、 使用不恰當的SQL語句

例如:

1)在第一條SQL語句中,where 查詢語句中出現了 null,這時數據庫的引擎不會使用索引,而是對全表進行一次掃描,這樣的查詢將導致數據庫變慢。

MySQL數據庫服務器越來越慢,如何分析並解決?

解決方法:使用0來代替null,即第二條SQL語句,可以加快數據庫查詢速度。

2)在查詢的數據表當中如果使用 update、delete、insert 過於頻繁,我們可以嘗試使用optimize table 來存放,索引,存儲文件。

3)Select for update 如果條件的字段沒有使用索引的話,就會導致對全表進行查詢,而不是對特定的行進行查詢,需要注意。

下面第一條SQL語句的效率要比第二條SQL語句高的多。因為第一條SQL語句使用的索引查詢;第二條SQL語句是將表中所有的數據都檢索一遍,相當於全表查詢,比較慢和消耗資源。

MySQL數據庫服務器越來越慢,如何分析並解決?

三、 MySQL參數設置有問題

3.1 max_connect_errors

我們知道「max_connect_errors 」正常情況下的默認值是10,它是用來表示受信賬號錯誤的連接次數, 當這個次數達到了10之後,MySQL服務器就會被自動阻塞住了。 例如下圖這樣的錯誤:

MySQL數據庫服務器越來越慢,如何分析並解決?

解決方法:

當出現這樣的錯誤時,我們需要 flush hosts 來解除錯誤。其中,max_connect_errors 表示連接中斷重複請求連接的次數。

對於內網而言,建議將 max_connect_errors 的數量設置大於10000,這樣就不會輕易阻塞,並且你還得定期進行 flush hosts.

3.2 connect_timeout

「connect_timeout」表示的是MySQL等待應答連接報文的最大秒數,當超過這個時間後,表示 MySQL 連接失敗了。 這個值默認值是5S,所以當系統在處於高併發狀態下,很容易超時,因此建議將 connect_timeout 設置為10-15秒為宜。

3.3. master-connect-retry

「master-connect-retry」表示的是在重新建立主從連接時,出現連接失敗後,間隔多久可以重試上述過程。 建議將此值設置大一些。

MySQL數據庫服務器越來越慢,如何分析並解決?

總結:

當你的數據庫服務器變得很慢,不要驚慌,不妨試一試上述的方法,上文只是例舉一些有用的方法,如果有更好的方法補充,歡迎評論區留言。

在技術快速發展的當今社會,雲計算已經成為企業IT部署的首選,特別是對於雲資源使用的事實監控變得尤為重要。雲服務器出現CPU負載過高、磁盤IO讀寫壓力過大、內存壓力較大的情況,我們怎麼樣才能在第一時間內獲知呢?

MySQL數據庫服務器越來越慢,如何分析並解決?

在這裡我們給大家安利一個運維神器 ---王教授,通過對雲資源的實時的監控,幫我們發現雲服務器、數據庫等資源的異常問題,並且將存在的異常信息第一時間通知到團隊個人,大大提升團隊運維效率!

MySQL數據庫服務器越來越慢,如何分析並解決?

CPU高負載提醒

對於使用雲的用戶,只需要綁定賬號的AcessKey,即可連接使用。

帶你變身運維達人,有需要的同學歡迎點擊文章末尾王教授二維碼瞭解詳情~


網站崩潰找不到原因?平臺搭建無從下手?熱門技術不想落伍?想要變強找不到資料?

加入[IT拯救聯盟],讓大牛和同伴拯救你,帶你裝x帶你飛。定期乾貨分享、大牛專業解答、實用IT工具優選.....

私信小編“聯盟”,即可加入我們~

"

相關推薦

推薦中...