mysql優化

mysql數據庫優化



1.硬件優化

  a.64位cpu 一臺機器8-16顆cpu,(其他)2-4顆

  b.內存  96-128g 3-4個實例(百度),(其他)32-64,2個實例

  c.硬盤,數量越多越好,性能:ssd(高併發)>sas(普通線  上)>sata(線下)

  raid  4塊盤:RAID0>RAID10>RAID5>RAID1

  d.網卡 多塊網卡bond,以及buffer,tcp優化


2.軟件優化

  操作系統:64位

  軟件:mysql 編譯優化



3.參數優化(my.cnf)

  my.cnf優化的幅度很小,大部分是架構和sql語句的調優

  innodb_buffer_pool_size=2048m物理內存的30%-50%

  sort_buffer_size=2m 線程buffer,不能給太大

  tmp_table_size=256m 臨時表

  long_query_time=2 slow_log,超過兩秒的

  skip-name-resolve 不加會遇到權限問題

  思想:

  監控:show global status\G查看命中率

  調優工具:mysqlreport


4.sql語句的優化

  a.索引優化

     抓出慢sql,配置my.cnf(大於2s的,沒走索引的記錄下來)

     long-slow-query=/data/3306/slow-log.log

     慢查詢日誌分析工具:mysqldumpslow,mysqlsla,myprofi

     按天輪詢:slow-log.log

  b.每天晚上0點定時分析慢查詢,發到核心開發,DBA的郵箱

  c.大的複雜的sql語句拆分成多個小的sql語句

    子查詢,JOIN鏈表查詢,某個表4000萬條記錄

  d.數據庫是存儲數據的地方,但不是計算的地方,拿到前端應用解決

  e.搜索功能,LIKE'%老男孩%'一般不要用mysql數據庫


5.架構優化

  1.業務拆分

  2.數據庫前端加cache,例如:memcache(用戶登錄,商品查詢等等)

  3.某些業務應用使用nosql持久化存儲,例如:memcachedb,redis(粉絲,關注,好友關係等等)

  4.動態的數據靜態化。整個文件靜態化,頁面片段靜態化

  5.數據庫集羣與讀寫分離。一主多從。通過程序或者dbproxy進行集羣讀寫分離

  6.單表超過2000萬。拆庫拆表

6.流程,制度,安全優化


  任何一次人爲數據庫記錄的更新,都要走一個流程:

   a.人的流程:開發-->核心開發-->運維或DBA(確認)

   b.測試流程:內網測試-->IDC測試-->線上執行

   c.客戶端管理,phpmyadmin


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章