mysql優化

1.硬件優化

    a.cpu 一臺機器8-16顆8-16G 2-4顆
    b.內存 96G-128G 3-4個實例  32-64G 跑2個實例
    c.disk數量越多越好,性能:ssd (高併發)> sas(普通業務線上) >sata
     raid10>raid5>raid1
    d.網卡,多塊網卡bond,以及buffer,tcp優化

2.參數優化

 優化的幅度很小,大部分 架構以及SQL語句優化
 監控 生產參數時一般情況下參數
show global status\G
工具 mysqlreport

3.sql優化

            a.索引的優化
                        1)抓出慢SQL,配置my.cnf
                                 long_query_time = 1
                                 log-slow-queries = /data/3306/slow.log
                                 按天輪詢slow-log.log

                        2)慢查詢日誌分析工具--mysqlsla(推薦)

            b.大的複雜的SQL語句拆分成多個小的SQL語句
            c.數據庫是存儲數據的地方,但不是計算數據的地方
            d.搜索功能,一般不用MYSQL數據庫

4.架構優化

1.業務拆分,搜索功能,like ‘%全職%’,一般不要用數據庫
2.數據庫前端使用nosql持久化存儲
3.數據庫集羣與讀寫分離,一主多從,通過程序進行讀寫分離
4.單表超過2000萬,拆庫拆表
5.動態數據靜態化。

流程、制度、安全優化

如何一次人爲數據庫記錄的更新,都要走一個流程
a.人的流程 開發--->核心開發--->運維或DBA

網站打開慢

1)show full processlist:
2)慢查詢語句
             long_query_time = 1
           log-slow-queries = /data/3306/slow.log
a、數據庫負載高,有慢查詢,做聯合索引案例,查看錶結構,有沒有建索引
b、帶寬滿了,磁盤滿了,連接數消耗完了
c、數據庫中像 Like’%×××%’ 這樣的語句特別多,導致數據庫負載高,這樣的語句對於數據庫沒有太大的優化餘地

登錄數據庫查看 show full processlist:
mysql -uroot -p’111’ -e “show full processlist” | grep -vi sleep 數據庫中像 Like’%×××%’ 這樣的語句特別多,導致數據庫負載高,這樣的語句對於數據庫沒有太大的優化餘地
 優化方法
 1)業務上實現先登錄再搜索,減少搜索次數
 2) 分析web日誌的ip,如果有大量頻繁的搜索,一般是爬蟲在爬你的網站(Awstats是一個免費非常簡潔而且強大有個性的統計工具)
 3) 配置多個從庫,程序上實現讀寫分離
 4) 在數據庫前端加上緩存服務器

tips
mysqldump大於50g就用xtarbackup
mysqlbinlog -d aaa mysql-bin.0020 > aaa.sql (生成的sql都是aaa庫的)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章