線上數據庫增長字段致使服務請求超時總結

今天的一個需求上線須要在數據庫的某個表中增長一個字段。這個數據庫是服務中一個業務量比較少的數據庫,與主要業務的數據庫是隔離的。執行增長操做後生效比較慢,沒有關注,過了一段時間收到服務超時量報警。sql

分析緣由:數據庫

修改的數據庫表數據量比較大,修改數據庫字段時會鎖住表。工具

線上業務雖然不多的業務請求會想表中插入數據,當表鎖住後會形成數據庫鏈接掛起,當大量鏈接數據庫的線程被掛起以後,服務線程池中的有效線程就會大量減小,此時會形成大量請求超時。學習

這時用工具鏈接數據庫時會報錯:1040 too many connections
這個錯誤的緣由就是,數據庫的鏈接量過多沒法鏈接。緣由就是服務中插入數據的數據庫鏈接都被掛住引發總的數據庫鏈接數達到配置的最大量,拒絕更多的鏈接請求。線程

解決:io

重啓數據庫服務。配置

重啓以後超時請求消失。線程池

總結:請求

Mysql在5.6版本以前,直接修改表結構的過程當中會鎖表,具體的操做步驟以下:
(1)首先建立新的臨時表,表結構經過命令ALTAR TABLE新定義的結構
(2)而後把原表中數據導入到臨時表
(3)刪除原表
(4)最後把臨時表重命名爲原來的表名總結

具體操做能夠再深刻學習。

相關文章
相關標籤/搜索