MySQL程序開發注意事項

WilFre 8年前發布 | 41K 次閱讀 MySQL SQL

隨著云服務的迅速發展,很多公司逐步開始將業務上云,對于開發人員來說,將需要做很大的改變,需要從原來的Oracle、DB2等數據庫轉型到MySQL數據庫上來。

那么MySQL程序開發的時候有哪些注意事項呢?

1、 資源限制

資源方面,MySQL每個查詢只能用到1個CORE,并且不同版本對CPU資源有不同的限制(如:5.6版本最多使用48個CORE)。

2、 磁盤 IO

對于磁盤IO方面,我們應根據數據文件的類型來分配磁盤的使用,對于IO類型有順序IO和隨機IO兩種,順序IO類似binLog、redolog、undolog之類,對于數據庫表文件的訪問基本上都屬于隨機IO類型,所以我們應該把數據文件應該放在IO性能更好的磁盤,還有,在我們設計的時候,盡量多考慮數據庫聚簇索引的內部排序特性,使其訪問時順序IO和隨機IO的相結合。

3、  結果緩存

MySQL提供的結果緩存功能,與Oracle、DB2數據庫的緩存相比,性能懸殊較大,對于OLTP系統,數據變更較大的,建議關閉。

4、  性能問題

MySQL隨著連接數上升會出現性能會下降,所以不是連接數越多越好,適可而止,不過我們可以通過一些官方的收費組件TP來優化此問題。

5、 存儲引擎選擇

目前MySQL支持的存儲引擎有MyASAM、InnoDB、MEMORY、MRG_MyASM等等,需要根據實際業務情況來選擇存儲引擎,具體比較如下表:

6、 子查詢

有關子查詢方面,MySQL支持子查詢,但性能較差,對于低版本的MySQL,建議不用子查詢。

7、 數據存儲

數據存儲方面,建議考慮分庫分表,也對單表進行分區,MySQL的分區功能沒有像Oracle那樣完善,局限性比較多,具體如下表:

分區的特性:

  •  可以存儲更多的數據
  •  提高查詢效率
  •  便于進行歷史數據的管理
  •  獲得更高的吞吐量
  • 并不是所有存儲引擎支持分區,如:MERGE
  • 在同一張表上,不能對分區使用混合存儲引擎:

大表一定要拆分,否則會出現性能問題,具體是采用分區還是分表和分庫,可以根據實際情況來處理。

8、 少用復雜SQL語句

復雜的SQL語句盡量少用,復雜的SQL一般會出現性能問題。

9、檢查每一句SQL執行計劃

對于每一個SQL語句,都要檢查SQL的執行計劃,方法如下:

type的說明如下表:

10、謹慎考慮SQL語句

還有一個需要注意,MySQL的一個SQL只使用一個索引,這與其它數據庫類似,在建立索引的時候需要充分考慮,盡量建索引在重復性低的字段上,能建唯一索引或主鍵的一律建唯一索引或主鍵。

 

來自: http://rdcqii.hundsun.com/portal/article/431.html

 

 本文由用戶 WilFre 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!