【MySQL】初識數據庫性能那點事

關於數據庫性能

面試時多多少少會講到數據庫上的事情,“你對數據庫的掌握如何?”,什麼時候最考驗數據庫的性能,答應主要方面上講就是大數據量的讀寫時,而電商類的大促活動就是考驗各自的數據庫性能的時候啦。

對於web服務器而言,數據量大時,我們可以簡單的通過橫向擴展來減少單個服務器的負擔,但是對於數據庫服務器來說就沒有那麼簡單了,他們不可能做到輕易的橫向擴展,這樣也違背了數據庫的完整性與一致性的原則,那麼我們的數據庫架構該如何搭建呢?

對於大促類活動而言,不管是產品多好、策劃多成功,如果沒有穩定的數據庫及服務器環境,則這所謂的一切都將是一場空呀。

數據庫架構案例

【MySQL】初識數據庫性能那點事

如圖所示,主從服務器之間沒有任何主從複製組件,即當主服務器出現了故障,很難進行主服務器的切換,這需要DBA在從服務器中選擇數據最新的從服務器將其提升為主服務器並同步其他從服務器,這個過程的時間成本也是非常沉重的。

且過多的從服務器,當業務量大時對主服務器的網卡也是一定的挑戰。

我們可以通過對集群的監控信息來了解是什麼影響了數據庫性能。

答應是肯定的,一般情況下主要是QPS與TPS、併發量(同一時間處理的請求的數量,避免和同時連接數混淆)、磁盤IO、讀操作過於高

這裡建議:最好不要在主庫上數據備份,起碼在大型活動前要取消這類計劃。

影響數據庫的因素

<code>sql查詢速度
服務器硬件
網卡流量
磁盤IO/<code>
  • 超高的QPS和TPS

風險:效率底下的SQL(QPS:每秒鐘處理的查詢量)

  • 大量的併發和超高的CPU使用率

風險:大量的併發(數據庫連接數被佔滿(max_connections默認100))
風險:超高的CPU使用率(因CPU資源耗盡而出現宕機)

  • 磁盤IO

風險:磁盤IO性能突然下降(使用更快的磁盤設備)
風險:其他大量消耗磁盤性能的計劃任務(調整計劃任務)

  • 網卡流量

風險:網卡IO被佔滿(1000Mb/8=100MB)


如何避免無法連接數據庫的情況:1、減少從服務器的數量2、進行分級緩存3、避免使用“select * ”進行查詢4、分離業務網絡和服務器網絡


分享到:


相關文章: