【MySQL】關於資料庫效能的那些事
阿新 • • 發佈:2018-12-10
關於資料庫效能的故事
面試時多多少少會講到資料庫上的事情,“你對資料庫的掌握如何?”,什麼時候最考驗資料庫的效能,答應主要方面上講就是大資料量的讀寫時,而電商類的大促活動就是考驗各自的資料庫效能的時候啦。
對於web伺服器而言,資料量大時,我們可以簡單的通過橫向擴充套件來減少單個伺服器的負擔,但是對於資料庫伺服器來說就沒有那麼簡單了,他們不可能做到輕易的橫向擴充套件,這樣也違背了資料庫的完整性與一致性的原則,那麼我們的資料庫架構該如何搭建呢?
對於大促類活動而言,不管是產品多好、策劃多成功,如果沒有穩定的資料庫及伺服器環境,則這所謂的一切都將是一場空呀。
資料庫架構案例
如圖所示,主從伺服器之間沒有任何主從複製元件,即當主伺服器出現了故障,很難進行主伺服器的切換,這需要DBA在從伺服器中選擇資料最新的從伺服器將其提升為主伺服器並同步其他從伺服器,這個過程的時間成本也是非常沉重的。
且過多的從伺服器,當業務量大時對主伺服器的網絡卡也是一定的挑戰。
我們可以通過對叢集的監控資訊來了解是什麼影響了資料庫效能。
答應其實是肯定的,一般情況下主要是QPS與TPS、併發量(同一時間處理的請求的數量,避免和同時連線數混淆)、磁碟IO、讀操作過於高
這裡有個建議:最好不要在主庫上資料備份,起碼在大型活動前要取消這類計劃、
影響資料庫的因素
sql查詢速度
伺服器硬體
網絡卡流量
磁碟IO
- 超高的QPS和TPS
風險:效率底下的SQL(QPS:每秒鐘處理的查詢量)
- 大量的併發和超高的CPU使用率
風險:大量的併發(資料庫連線數被佔滿(max_connections預設100))風險:超高的CPU使用率(因CPU資源耗盡而出現宕機)
- 磁碟IO
風險:磁碟IO效能突然下降(使用更快的磁碟裝置)風險:其他大量消耗磁碟效能的計劃任務(調整計劃任務)
- 網絡卡流量
風險:網絡卡IO被佔滿(1000Mb/8=100MB)
如何避免無法連線資料庫的情況:1、減少從伺服器的數量2、進行分級快取3、避免使用“select * ”進行查詢4、分離業務網路和伺服器網路
如果本文對你有所幫助,歡迎關注本人技術公眾號,謝謝。