# MySQL使用約束及建議
##關于性能的爭論
最佳實踐通常是為了獲取最佳性能,但有可能一個支付環境,每秒只需要3000個事務就夠了,更看重一致性。所以對于性能,關建是要明確一下定位,然后再跟據自已的情況來判到底使用那些招式組合。
讀寫分離: 對于非特殊要求的業務可以考慮部分SQL或是全量讀SQL進行讀寫分離操作,從而增加DB的處理能力。
關于分庫分表: 分庫分表屬于已經在DB的設計上無路可走,已經達到了前所未有的業務壓力下才去走的一個技能。 通過常情況可以考慮優先進行硬件層面優化,SQL簡化兩個方向的工作,最后再來考慮分庫分表,減少業務的復雜度。
##建議
1. 引擎可以選擇: Innodb ,TokuDB
2. 計算機在處理整數比較浮點數快N倍,慎用浮點數
3. 盡量不要在DB里做運算,大的計算可以考慮中間件完成
4. 盡量不使用MySQL UDF
5. 簡單的使用MySQL
6. 目前不推薦在重要環境使用:外鍵, 分區表,存儲過程等高級特性
7. 數據庫拆分中適合冗余
8. 單庫容量: SAS盤Raid 10 控制在500G左右, PCI-E卡,可以控制在卡的大小80%左右。 日志或是歷史庫除外