【調優】從吞吐量角度提升資料庫整體效能
不嚴謹的說:對資料庫的使用就是I/O操作!
因此,如果有效的提升了資料庫系統對磁碟的I/O,那麼可以說整體效能就會得到有效地提升。
本文嘗試給出一些最常被使用到的提升系統吞吐量的策略,希望起到拋磚引玉的效果。
1.儘量保證在記憶體中完成資料庫操作
眾所周知,記憶體的讀寫效率遠遠高於磁碟的讀寫效率。因此,如果能夠保證儘量多的操作都在記憶體中完成,就是提高了系統的整體效能。
如果硬體條件允許的話,應該儘量為資料庫伺服器配置儘量多的記憶體。不過這不是根本的方法,根本的方法應該在應用程式設計上充分考慮。
2.利用磁碟快取進一步提升吞吐量
即便是記憶體夠大,應用程式設計的足夠最佳化,在中大型應用系統中一樣避免不了直接讀寫磁碟的情況。在此基礎上我們可以考慮使用儲存裝置本身提供的快取功能。這樣,出現實體記憶體和快取都無能為力的情況就大大地減少了。
提升資料庫系統的吞吐量是一個系統工程,不應僅侷限在資料庫層面上想問題。
3.分散磁碟I/O
在使用磁碟時,我們應該選用多塊磁碟代替一塊超大容量的磁碟。這樣可以有效的提升磁碟並行讀寫效能,因此可以提升系統的整體吞吐量。
4.使用比較大的資料庫Block Size
這是一條需要權衡的經驗。如果選擇了很大的資料庫塊大小,會降低對單個塊上資料的讀寫效率,存在較大的爭用。與此同時,對某些資料遷移方法上也存在一些限制。除此之外,應該說增加資料庫塊大小都有利於提高資料庫效能。例如,較大的資料塊可以保證記憶體中存放更多常用的資料;防止索引的level過高等。
在能夠控制弊端的前提下,建議使用較大的資料庫塊來進一步提升系統的吞吐量。
5.控制臨時表空間的使用
如果系統中存在大量的排序操作,如大量的order by字句、group by字句、索引維護及資料分析。這些都會用到大量的排序空間。當PGA中無法完成排序時就會使用到臨時表空間。結果無疑是效能和吞吐量上的降低。因此,我們應該在應用設計上充分考慮到這些影響效能的因素,將排序操作控制在儘量少的範圍內。
6.提升系統CPU效能
提升CPU的處理效能在某種程度上就是提升系統的吞吐量,因為單位時間內處理的有效資料增加了。
這裡需要注意的是,我們不應該盲目的增加CPU個數,我們應該力圖提升每顆CPU的處理能力。因為過多的CPU會給作業系統帶來管理上的額外消耗。
7.小結
以上六條是提高系統吞吐量較常用的方法。最最根本的還是應該根據業務特點給出最優的應用設計,在充分考慮到所有影響吞吐量的因素的基礎上才能給出最好的設計方案。
歡迎大家就該問題給出實際經驗上補充。
Good luck.
secooler
11.01.01
-- The End --
因此,如果有效的提升了資料庫系統對磁碟的I/O,那麼可以說整體效能就會得到有效地提升。
本文嘗試給出一些最常被使用到的提升系統吞吐量的策略,希望起到拋磚引玉的效果。
1.儘量保證在記憶體中完成資料庫操作
眾所周知,記憶體的讀寫效率遠遠高於磁碟的讀寫效率。因此,如果能夠保證儘量多的操作都在記憶體中完成,就是提高了系統的整體效能。
如果硬體條件允許的話,應該儘量為資料庫伺服器配置儘量多的記憶體。不過這不是根本的方法,根本的方法應該在應用程式設計上充分考慮。
2.利用磁碟快取進一步提升吞吐量
即便是記憶體夠大,應用程式設計的足夠最佳化,在中大型應用系統中一樣避免不了直接讀寫磁碟的情況。在此基礎上我們可以考慮使用儲存裝置本身提供的快取功能。這樣,出現實體記憶體和快取都無能為力的情況就大大地減少了。
提升資料庫系統的吞吐量是一個系統工程,不應僅侷限在資料庫層面上想問題。
3.分散磁碟I/O
在使用磁碟時,我們應該選用多塊磁碟代替一塊超大容量的磁碟。這樣可以有效的提升磁碟並行讀寫效能,因此可以提升系統的整體吞吐量。
4.使用比較大的資料庫Block Size
這是一條需要權衡的經驗。如果選擇了很大的資料庫塊大小,會降低對單個塊上資料的讀寫效率,存在較大的爭用。與此同時,對某些資料遷移方法上也存在一些限制。除此之外,應該說增加資料庫塊大小都有利於提高資料庫效能。例如,較大的資料塊可以保證記憶體中存放更多常用的資料;防止索引的level過高等。
在能夠控制弊端的前提下,建議使用較大的資料庫塊來進一步提升系統的吞吐量。
5.控制臨時表空間的使用
如果系統中存在大量的排序操作,如大量的order by字句、group by字句、索引維護及資料分析。這些都會用到大量的排序空間。當PGA中無法完成排序時就會使用到臨時表空間。結果無疑是效能和吞吐量上的降低。因此,我們應該在應用設計上充分考慮到這些影響效能的因素,將排序操作控制在儘量少的範圍內。
6.提升系統CPU效能
提升CPU的處理效能在某種程度上就是提升系統的吞吐量,因為單位時間內處理的有效資料增加了。
這裡需要注意的是,我們不應該盲目的增加CPU個數,我們應該力圖提升每顆CPU的處理能力。因為過多的CPU會給作業系統帶來管理上的額外消耗。
7.小結
以上六條是提高系統吞吐量較常用的方法。最最根本的還是應該根據業務特點給出最優的應用設計,在充分考慮到所有影響吞吐量的因素的基礎上才能給出最好的設計方案。
歡迎大家就該問題給出實際經驗上補充。
Good luck.
secooler
11.01.01
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-683187/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle資料庫的效能調整Oracle資料庫
- 提升陪玩平臺原始碼的整體效能,MySQL資料庫如何優化?原始碼MySql資料庫優化
- oracle資料庫的效能調整(轉)Oracle資料庫
- HBase資料庫效能調優OW資料庫
- 掌握Oracle資料庫效能調優方法Oracle資料庫
- 資料庫效能調優設計方案資料庫
- 從運維角度淺談 MySQL 資料庫優化運維MySql資料庫優化
- Oracle - 資料庫的記憶體調整Oracle資料庫記憶體
- Oracle資料庫效能調整 - 建議器 ADVICEOracle資料庫
- Oracle資料庫 Exp/Imp工具效能調優Oracle資料庫
- 如何從資料、模型和訓練角度提升閱讀理解系統效能?模型
- 【效能調整】海量資料的效能設計
- SQLServer效能優化之 nolock,大幅提升資料庫查詢效能SQLServer優化資料庫
- 調整資料庫引數資料庫
- 資料庫效能調優之始: analyze統計資訊資料庫
- 建立高效能的資料庫——效能調整手冊和參考資料庫
- 資料庫調優資料庫
- oracle效能優化-共享池調整Oracle優化
- Oracle 資料庫引數調整Oracle資料庫
- 資料庫引擎調整顧問資料庫
- Oracle資料庫SQL語句效能調整的基本原則 (3)Oracle資料庫SQL
- Oracle資料庫SQL語句效能調整的基本原則 (2)Oracle資料庫SQL
- Oracle資料庫SQL語句效能調整的基本原則 (1)Oracle資料庫SQL
- Golang pprof 效能調優實戰,效能提升 3 倍!Golang
- 使用 ASDK 效能調優 - 提升 iOS 介面的渲染效能iOS
- 資料庫效能提升終極指南資料庫
- Spark 效能調優--資源調優Spark
- 資料庫例項效能調優利器:Performance Insights資料庫ORM
- 資料庫的效能調優:如何正確的使用索引?資料庫索引
- 一文帶你搞懂GaussDB資料庫效能調優資料庫
- oracle效能優化(二)-調整查詢Oracle優化
- nginx引數調優能提升多少效能Nginx
- 資料庫效能優化資料庫優化
- 調整CALLCENTER系統的資料庫資料庫
- Oracle效能調整之--DML語句效能調整Oracle
- 從資料庫角度談業務連續性資料庫
- 效能調優學習之硬體調優
- Oracle資料庫9i在AIX環境下的效能調整Oracle資料庫AI