效能調優 CPU方面,記憶體方面

2022-03-11 20:39:56 字數 2253 閱讀 2527

innodb儲存引擎一般都應用於oltp的資料庫應用,這種應用的特點如下所示:

使用者操作的併發量大。

事務處理的時間一般比較短。

查詢的語句較為簡單,一般都走索引。

複雜的查詢較少。

可以看出,oltp的資料庫應用本身對cpu的要求並不高,因為複雜的查詢可能需要執行比較、排序、連線等非常耗cpu的操作,這些操作在oltp的資料庫應用中很少發生。因此,可以說olap是cpu密集型的操作,而oltp是io密集型的操作。建議在採購裝置時,應將更多的注意力放在提高io的配置上。

此外,為了獲得更多記憶體的支援,cpu必須支援64位的應用,否則無法支援64位作業系統的安裝。因此,為新的應用選擇64位的cpu是必要的前提。現在4核的cpu已經非常普遍,而今年intel和amd又都推出了6核的cpu,將來隨著作業系統的公升級,我們還可能看到128核的cpu,這都需要資料庫更好地對其進行支援。

從innodb儲存引擎的設計架構上來看,其主要的後台操作都是在乙個單獨的master thread中完成的,因此並不能很好地支援多核的應用。當然,開源社群已經通過多種方法來改變這種局面,新的innodb plugin版本在各種測試下已經顯示對多核cpu的處理效能有了極大的提高。因此,如果你的cpu支援多核,innodb plugin是更好的選擇。另外,如果你的cpu是多核的,你可以通過修改引數innodb_read_io_threads和innodb_write_io_threads來增大io的執行緒,這樣也能更充分利用cpu的多核效能。

在當前的mysql版本中,一條sql查詢語句只能在乙個cpu行工作,並不支援多cpu的處理。oltp的資料庫應用操作一般都很簡單,因此對oltp應用的影響並不是很大。但是,多個cpu或多核cpu對處理大併發量的請求還有非常有幫助的。

記憶體的大小最能直接反應資料庫的效能。innodb儲存引擎既快取資料,又快取索引,並將其快取於乙個很大的緩衝池中,我們將這個緩衝池稱為innodb buffer pool,它的大小直接影響了資料庫的效能。

percona公司的cto vadim對此做了一次測試,以此反應記憶體的重要性,結果如圖所示。

在上述的測試中,資料和索引總大小為18gb,然後將緩衝池的大小分別設為2gb、4gb、6gb、8gb、10gb、12gb、14gb、16gb、18gb、20gb、22gb,再進行sysbench的測試。可以發現,隨著緩衝池的增大,測試結果tps(transaction per second)會線性增長。當緩衝池增大到20gb和22gb,資料庫的效能有了極大的提高,因為這時緩衝池的大小已經大於資料檔案本身的大小,所有對資料檔案的操作都可以在記憶體中進行,因此這時的效能應該是最優的,再調大緩衝池並不能再提高資料庫的效能。所以,應該在開發應用前預估「活躍」資料庫的大小可能會是多少,並以此確定資料庫伺服器記憶體的大小。當然,要使用更多的記憶體,還必須使用64位的作業系統。

如何判斷當前資料庫的記憶體是否已經達到瓶頸了呢?可以通過檢視當前伺服器的狀態,比較物理磁碟的讀取和記憶體讀取的比例來判斷緩衝池的命中率,通常innodb儲存引擎的緩衝池的命中率不應該小於99%,如:

上述引數的具體含義如下所示:

innodb_buffer_pool_reads:表示從物理磁碟讀取頁的次數。

innodb_buffer_pool_read_ahead:預讀的次數。

innodb_buffer_pool_read_ahead_evicted:預讀的頁,但是沒有被讀取就從緩衝池中被替換的頁的數量,一般用來判斷預讀的效率。

innodb_buffer_pool_read_requests:從緩衝池中讀取頁的次數。

innodb_data_read:總共讀入的位元組數。

innodb_data_reads:發起讀取請求的次數,每次讀取可能需要讀取多個頁。

以下公式可以計算各種對緩衝池的操作:

從上面的例子看,緩衝池命中率=66946 /(66946+0+713)=99.92%,可見當前記憶體的壓力並不是很大。

即使緩衝池的大小已經大於資料庫檔案的大小,這也不意味著沒有磁碟操作。資料庫的緩衝池只是乙個用來存放熱點的區域,後台的master執行緒還負責將髒頁非同步地寫入磁碟,每次事務提交時還需要立即寫入重做日誌檔案。

評測工具(硬體方面 效能調優)收集

說句題外話 人之所以偉大,就是思維,人之所以能夠建立高樓大廈,是因為他會使用工具。開篇寫這麼多,在處理效能調優和排錯方面,需要的是經驗的積累。這些積累在某一方面體現在對更好的工具的使用上。評測工具,調優工具,是有個順序的。評測工具 1.spotlight 非常直觀的效能監控工具。主要監測硬碟大小 記...

研發人員研究效能調優方面入手

cpu 使用率 cpu負載 記憶體使用率 磁碟i o 網路流量 磁碟空間 系統程序 服務的效能監控 資料庫查詢吞吐率,包括change db select insert update delete 資料庫持久連線利用率 資料庫查詢快取空間使用率 資料庫查詢快取命中率 資料庫快取查詢數 資料庫索引快取...

從五個方面考慮Oracle的效能調優問題

oracle調優是乙個複雜的主題。關於調優可以寫整整一本書,不過,為了改善oracle資料庫的效能,有一些基本的概念是每個oracle dba都應該遵從的。在這篇簡介中,我們將簡要地介紹以下的oracle主題 外部調整 我們應該記住oracle並不是單獨執行的。因此我們將檢視一下通過調整oracle...