首先我們來說一說資料庫架構:
對于大多數資料庫架構,大家都是主從結構的,Master —–>Slave
影響資料庫性能:
1.sql查詢速度
2. 伺服器硬體
3.網卡流量
4.磁盤IO
這些因素造成的影響:
1.超高的QPS和TPS
QPS:每秒鐘處理的查詢量
10ms 處理 1個sql
1s 處理 100個sql
QPS <=100
也就是我們的慢查詢
2.大量的并發和超高的CPU使用率:
風險:
大量的并發:
資料庫連接配接數被占滿(MAX_CONNTECTION:100)
超高的CPU使用率:
因CPU資源耗盡出現當機
3.磁盤IO性能突然下降:
風險:磁盤IO性能突然下降(使用更快的磁盤裝置)
其它大量消耗磁盤性能的計劃任務(調整計劃任務,做好磁盤
維護)
4:網卡流量:
分險:網卡IO被沾滿(1000Mb/8≈100MB)
如何避免無法連接配接資料庫的情況:
1.減少從伺服器的數量,因為從伺服器要在主伺服器複制日志,消耗網絡流量
2.進行分級緩存
3.避免使用“select *”進行查詢
4.分離業務網絡和服務網絡
大表帶來的問題:
什麼樣的表可以稱為大表:
▶ 記錄行數巨大,單表超過千萬行
▶ 表資料檔案巨大,表資料檔案超過10G
大表的影響:
慢查詢:很難再一定時間内過濾出所需要的資料
建立索引需要很長時間
Mysql<5.5建立索引會引起鎖表
Mysql>=5.5 雖然不會鎖表但會引起主從延遲
修改表結構需要長時間鎖表
影響正常的資料操作
如何處理資料庫中的大表
▶分庫分表:把一張大表分成多個小表(要消耗大量的人力物力)
難點:
分表主鍵的選擇
分表後跨分區資料的查詢和統計
▶大表的曆史資料歸檔減少對前端業務的影響
難點:
歸檔時間點的選擇(歸檔資料:很少使用的資料)
如:訂單清單 可以歸檔一年前的資料,也可以選擇一個月前的資料
日志:歸檔前一周的資料
如何進行歸檔操作
大事務帶來的問題:
定義:運作時間比較長,操作的資料比較多的事物
風險:
鎖定太多的資料,造成大量的阻塞和鎖逾時
復原時間所需時間比較長
執行時間長,容易造成主從延遲
如何處理大事物:
♢避免一次處理太多的資料
♢移出不必要在事務中的select操作
未完,待續……