天天看點

mysql資料庫分析優化<ONE>

首先我們來說一說資料庫架構:

對于大多數資料庫架構,大家都是主從結構的,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操作

未完,待續……