表設計
1) 禁止使用外來鍵
2) 多表中的相同列,必須保證列定義一致
3) 國內表預設使用innodb,表字符集預設使用gbk,國際預設使用utf8的表
4) 表必須包含gmt_create和gmt_modified欄位,即表必須包含記錄建立時間和修改時間的字段
5) 單錶一到兩年內資料量超過500w或資料容量超過10g考慮分表,且需要提前考慮歷史資料遷移或應用自行刪除歷史資料
6) 單條記錄大小禁止超過8k(列長度(中文)*2(gbk)/3(utf8)+列長度(英文)*1)
7) 日誌類資料不建議儲存在mysql上,優先考慮hbase或ob,如需要儲存請找dba評估使用壓縮表儲存
字段設計
1) 表被索引列必須定義為not null,並設定default值
2) 禁止使用float、double型別,建議使用decimal或者int替代
3) 禁止使用blob、text型別保留大文字、檔案、,建議使用其他方式儲存(tfs/sfs),mysql只儲存指標資訊
4) 禁止使用varchar型別作為主鍵語句設計
語句設計
1) 資料更新建議使用二級索引先查詢出主鍵,再根據主鍵進行資料更新
2) 禁止使用非同型別的列進行等值查詢!
其他1) 禁止使用:儲存過程、觸發器、函式、檢視、事件等mysql高階功能
2) 禁止使用跨庫查詢
3) 禁止使用子查詢,建議將子查詢轉換成關聯查詢
4) 禁止核心業務流程sql包含:計算操作、多表關聯、表遍歷case when等複雜查詢,建議拆分成單錶簡單查詢
5) varchar長度設計需要根據業務實際需要進行長度控制,禁止預留過長空間。例如status使用varchar(128)進行儲存
mysql調優書籍 mysql調優從書寫sql開始
理論知識 mysql 的執行機制 mysql 的sql關鍵字執行順序 1 mysql 的優化方案有哪些?1 mysql 資料庫常見的優化手段分為三個層面 sql 和索引優化 資料庫結構優化 系統硬體優化等 前兩個可以通過日常的書寫sql來實現,養成好的習慣可以事半功倍。2 sql 和索引優化習慣準則...
mysql卡的調優思路 MySQL效能調優思路
1.mysql效能調優思路 如果一台伺服器出現長時間負載過高 週期性負載過大,或偶爾卡住如何來處理?是週期性的變化還是偶爾問題?是伺服器整體效能的問題,還是某單條語句的問題?具體到單條語句,這條語句是在等待上花的時間,還是查詢上花的時間?1.1.監測並觀察伺服器的狀態.觀察伺服器狀態,一般用如下2個...
mysql調優經驗
訪問量越來越大,mysql自然成為瓶頸,因此最近我一直在研究 mysql 的優化,第一步自然想到的是 mysql 系統引數的優化,作為乙個訪問量很大的 日20萬人次以上 的資料庫系統,不可能指望 mysql 預設的系統引數能夠讓 mysql執行得非常順暢。通過在網路上查詢資料和自己的嘗試,我認為以下...