您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何提升MySQL可擴展性,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
1.調整查詢操作
對查詢進行優化能夠讓你付出最少的精力就得到最多的成果。將查詢功能完善的發揮出來,達到業務需求,不會被過多的流量和過重的載荷壓倒。這就是為什么我們經常看見客戶碰到的麻煩越來越多,隨著他們網站的訪問量越來越大,可擴展性的挑戰也變得越來越嚴重,這就是問題的所在。對網站角落里那些不常用的頁面做查詢優化是并不必要的,那些頁面并不會收到真實世界的流量。根據反映對網絡應用做一定的調整是很普遍的做法,而且效果很好。
查詢優化需要啟用緩慢查詢日志并且不斷觀察。使用mk-query-digest這個Maatkit套件中的強大工具來分析日志,而且要確定設置了log_queries_not_using_indexes標簽。一旦你發現某個查詢嚴重占用資源,那就要優化它。使用EXPLAIN解釋機制,使用profiler,觀察索引的使用情況,創建失蹤的索引,理解它是怎么進行添加和排序的。
2.使用Master-Master復制
Master-Master的active-passive復制模式,或者稱為循環復制,不僅能帶來高可用性,也能夠帶來高度的可擴展性。這是因為你能夠即刻給你的應用分配到一塊只讀的從屬盤。許多網絡應用都按照80/20的規律來分割,80%的活動用來進行讀取或SELECT,剩下的分配給INSERT和UPDATE。配置你的應用或者進行重新架構,把讀取需要的流量發送到從盤,這樣做是可行的,這種類型的橫向可擴展能力可以進一步延伸,在必要時能夠附加更多塊只讀從盤。
怎樣快速提升MySQL可擴展性
3.使用存儲
這聽起來是很基礎的東西,也很直接,但是經常會被忽視,你至少應該確認設置了這些:
innodb_buffer_pool_sizekey_buffer_size(MyISAM索引緩存)query_cache_size–使用大型SMP時需要小心thread_cache&table_cacheinnodb_log_file_size&innodb_log_buffer_sizesort_buffer_size,join_buffer_size,read_buffer_size,read_rnd_buffer_sizetmp_table_size&max_heap_table_size
4.磁盤讀取的RAID
你的數據庫下面是什么不知道嗎,請找出來。你是在用RAID5嗎這對于性能來說可是一個巨大的阻礙。RAID5的插入和更新操作速度很慢,而且如果你丟失了一塊硬盤,RAID5在重建時幾乎無能為力。RAID5實在是太慢了,那么應該用什么代替它呢用RAID10做鏡像和分段,這就可以充分利用你的服務器或機箱里的所有硬盤了。即使你的內存能夠容納下整個數據庫,依然需要對硬盤進行許多讀取操作。為什么呢因為比如排序操作需要重新安排行列,群組和聯接等等也一樣,還有添加交易日志等等這些都是磁盤I/O操作。
5.調整Key參數
另外,有些附加的參數也可以用來提高性能:
innodb_flush_log_at_trx_commit=2
它可以極大的提升insert和update的速度,只是在清除innodb日志緩沖區時有點偷懶。你可以對它多做些研究,但大多數情況下是非常值得推薦的。
innodb_file_per_table
innodb開發就像Oracle,存儲方面使用的是tablespace模式。顯然內核開發者們做的并不完善,因為使用單獨tablespace的默認設置就會出現性能瓶頸。這個參數設置可以幫助innodb為每個表創建tablespace和數據文件,就像MyISAM所做的一樣。
看完上述內容,你們對如何提升MySQL可擴展性有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。