1. 程式人生 > >mysql優化的幾點建議

mysql優化的幾點建議

1、硬體配置優化
(1)CPU選擇:多核的CPU,主頻高的CPU
(2)記憶體:更大的記憶體
(3)磁碟選擇:更快的轉速、RAID、陣列卡
(4)網路環境
2、mysql設計優化
(1)儲存引擎的選擇
①Myisam:資料庫併發不大,讀多寫少,而且都能很好的用到索引,sql語句比較簡單
②Innodb:併發訪問大,寫操作比較多,有外來鍵,事務等需求
(2)命名規則
①多數開發語言命名規則:MyAdress
②多數開源思想命名規則:my_address
③避免隨便命名
(3)欄位型別選擇
①根據繡球選擇合適的欄位型別,在滿足需求的情況下欄位型別儘可能小
②只分配滿足需求的最小字元數
varchar和char的選擇
1、如果列資料的大小一致或者相差不大使用char
2、如果列資料項的差異相當大使用varchar
3、對於MyISAM表,儘量使用Char
4、對於Innodb表,因為它的資料行內部儲存格式對固定長度的資料行和可變長度的不加區分,所以使用char不見得會比使用varchar好
5、表中只要存在一個varchar型別的欄位,那麼所有的char欄位都會自動程式設計varchar型別,因此建議定長和變長的資料分開
(4)主鍵選擇
①能唯一的表示行
②顯式的定義一個數值型別自增欄位的主鍵
③主鍵應該是單列的
④主鍵欄位型別儘可能小
⑤儘量保證不對主鍵欄位進行更新修改
⑥主鍵不包含動態變化的資料
⑦主鍵由計算機自動生成
3、新增索引的原則
(1)選擇唯一性索引
(2)為經常需要排序、分組和聯合操作的欄位建立索引
(3)為常作為查詢條件的欄位建立索引
(4)限制索引的資料,索引不是越多越好
(5)儘量使用資料量少的索引,對於大欄位可以考慮字首索引
(6)刪除不再使用或者使用很少的索引
(7)結合核心SQL優先考慮覆蓋索引
(8)禁用字串做主鍵
4、Mysql軟體優化
(1)開啟mysql複製,實現讀寫分離、負載均衡,將讀的負載分攤到多個從伺服器上
(2)使用推薦的GA版本,提升效能
(3)利用分割槽新功能進行大資料的資料拆分
5、Mysql語句級優化
(1)不要在資料庫中做運算
(2)避免負向查詢和%字首模糊查詢
(3)不在索引列做運算或者使用函式
(4)不要再生產環境中使用select * from,只查詢使用的列
(5)查詢儘可能使用limit減少返回的行數
(6)避免隱式型別轉換
(7)聯表查詢的時候,把小結果集放在前面
6、索引使用原則
(1)全值匹配
(2)最左字首
(3)不再索引列上做任何操作
(4)儲存引擎不能使用索引中返回條件右邊的列
(5)儘量使用覆蓋索引,減少select *
(6)mysql在使用不等於的時候無法使用索引
(7)is null ,is not null無法使用索引
(8)like以萬用字元%開頭無法使用索引
(9)字串不加單引號索引失效
(10)少用or