程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 提升MYSQL性能可用思路和方案的技術分析

提升MYSQL性能可用思路和方案的技術分析

編輯:關於MYSQL數據庫
一、選擇合適的數據庫存貯引擎 MYSQL支持的引擎很多,例如MyISAM,MEMORY,InnoDB等等類型,每個類型試用的場景是不一樣的,恰當的選擇存儲引擎可以節省你不少時間,詳細的介紹你可以參考”第15章:存儲引擎和表類型“。二、優化SQL語句不要以為SQL語句關系不大,按照以往的經驗,往往幾個畸形的SQL就可以拖垮一個DB,決定不是危言聳聽,在從系統優化和DB優化及其擴展之前,請仔細檢查系統中用到的SQL,先解決SQL可能帶來的問題,而經驗是,做好這步,就可以解決很多初期的性能問題。三、建立索引這和前面的SQL優化有一定的聯系,仔細查看你的SQL語言,盡可能的優化他,然後建立必須的索引,千萬不要忽視了索引的威力,我們曾經有過測試,2W條的基本數據,生成頁面,沒有索引前,推算其全部生成需要的時間是81個小時,而加上索引後,只需要12分鐘,多大的性能提升,各位可以自己那計算器粗略的算算。四、建立分區&表空間很多人以為只有Oracle才有表空間,分區這些東西,不想到MYSQL中也有類似的東西吧,盡管這個東西是mysql5才引入的,盡管其還不是很成熟,但是毫無疑問,這是一個好的信號,在我們使用MYSQL的時候就有了更多的方案來提升性能了。分區一般分為水平分區和垂直分區,MYSQL目前只支持水平分區,有RANGE,LIST,HASH,KEY等等分區方式,詳細說明以後再說,你可以參考”第18章:分區“,"通過分區(Partition)提升MySQL性能"等文章。表空間的相關話題,可以參考”第17章:MySQL簇“,不在贅述。五、調整MYSQL和系統參數這個方案是伴隨著整個性能提升過程的,你的不時的調整參數以得到更好的性能,這個比較復雜,沒有啥成文的規定,都是靠經驗或者實踐得到的。六、集群或者proxy 到這裡為止,單機的MySQL基本上可以優化調整的都涉及到了,如果這個時候還是頂不住壓力,該考慮水平擴展或者垂直擴展了,垂直擴展比較容易,只要針對單機的性能得到瓶頸的所在,增加CPU或者內存或者換比較強勁的設備就可以很快得到立竿見影的效果。但是垂直擴展能力有限,不可能得到無限級的擴展,風險也比較大,除了垂直擴展,大家選擇較多的是水平擴展,也就是通過增加服務器,無限的得到性能的擴展,當然這個裡面內容是很多的,如何做到數據庫的備份,同步等都是需要考慮和解決的問題,而且還要考慮這麼多機器間的數據重復成都等問題;除此之外,還有可能將數據庫緩存到memcached或者使用mysql proxy等實現連接池之類的方案,都是需要考慮和抉擇的。以上每個分類都是個大的話題,這麼一篇文章只是說明了優化的思路和基本流程,其中涉及到很多東西,例如診斷和分析等都是很有技術含量的,我們下次會一個專題一個專題的仔細分析,力求將MySQL的性能達到盡可能的榜。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved