1. 程式人生 > >innodb_flush_log_at_trx_commit不同引數值下的效能測試

innodb_flush_log_at_trx_commit不同引數值下的效能測試


一.基本資訊

10.0.20-MariaDB-log
sync_binlog=0
tx_isolation=READ-COMMITTED
binlog_format=ROW
innodb_io_capacity=1200
innodb_buffer_pool_size=21G
os:redhat 6.3 64位
vmware虛擬機器
cpu:8個
記憶體:64G

測試innodb_flush_log_at_trx_commit引數分別在2、0、1下對一個表插入50W行資料所花時間。


二.場景一:innodb_flush_log_at_trx_commit=2下的效能
1.建立測試表和測試procedure
use test;
create table test_load (
a INT,
b CHAR(80)
) ENGINE=INNODB;

DELIMITER //
CREATE PROCEDURE p_load(count INT UNSIGNED)
BEGIN
DECLARE s INT UNSIGNED DEFAULT 1;
DECLARE c CHAR(80) DEFAULT REPEAT('a',80);
WHILE s <= count DO
INSERT INTO test_load SELECT NULL,c;
COMMIT;
SET s = s+1;
END WHILE;
END;


2.測試引數:innodb_flush_log_at_trx_commit=2
(product)[email protected]

[(none)]> show variables like 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 2     |
+--------------------------------+-------+
1 row in set (0.01 sec)

(product)[email protected] [(none)]> use test;
Database changed
(product)[email protected] [test]> CALL p_load(500000);
Query OK, 0 rows affected (1 min 0.35 sec)
上面執行時間為1分0.35秒.

每輪測試完成後,需要作如下處理:

1.drop table test_load和drop PROCEDURE p_load
2.重啟mysqld例項,並且用下面的方法刪除系統cache,釋放swap(如果用到了swap的話),甚至可以重啟整個OS。
3.sync  -- 將髒資料重新整理到磁碟
4.echo 3 > /proc/sys/vm/drop_caches  -- 清除OS Cache
5.swapoff -a && swapon -a

三.場景二:innodb_flush_log_at_trx_commit=0下的效能
1.建立測試表和測試procedure
use test;
create table test_load (
a INT,
b CHAR(80)
) ENGINE=INNODB;

DELIMITER //
CREATE PROCEDURE p_load(count INT UNSIGNED)
BEGIN
DECLARE s INT UNSIGNED DEFAULT 1;
DECLARE c CHAR(80) DEFAULT REPEAT('a',80);
WHILE s <= count DO
INSERT INTO test_load SELECT NULL,c;
COMMIT;
SET s = s+1;
END WHILE;
END;
//


2.測試引數:innodb_flush_log_at_trx_commit=0

(product)[email protected] [test]> show variables like 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 0     |
+--------------------------------+-------+
1 row in set (0.00 sec)

(product)[email protected] [test]>  CALL p_load(500000);
Query OK, 0 rows affected (25.08 sec)
上面執行時間為25.08秒.

每輪測試完成後,需要作如下處理:

1.drop table test_load和drop PROCEDURE p_load
2.重啟mysqld例項,並且用下面的方法刪除系統cache,釋放swap(如果用到了swap的話),甚至可以重啟整個OS。
3.sync  -- 將髒資料重新整理到磁碟
4.echo 3 > /proc/sys/vm/drop_caches  -- 清除OS Cache
5.swapoff -a && swapon -a

四.場景三:innodb_flush_log_at_trx_commit=1下的效能
1.建立測試表和測試procedure
use test;
create table test_load (
a INT,
b CHAR(80)
) ENGINE=INNODB;

DELIMITER //
CREATE PROCEDURE p_load(count INT UNSIGNED)
BEGIN
DECLARE s INT UNSIGNED DEFAULT 1;
DECLARE c CHAR(80) DEFAULT REPEAT('a',80);
WHILE s <= count DO
INSERT INTO test_load SELECT NULL,c;
COMMIT;
SET s = s+1;
END WHILE;
END;
//


2.測試引數:innodb_flush_log_at_trx_commit=1

(product)[email protected] [test]> show variables like 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 1     |
+--------------------------------+-------+
1 row in set (0.00 sec)

(product)[email protected] [test]> CALL p_load(500000);
Query OK, 0 rows affected (17 min 21.91 sec)
上面執行時間為17分21.91秒.

每輪測試完成後,需要作如下處理:

1.drop table test_load和drop PROCEDURE p_load
2.重啟mysqld例項,並且用下面的方法刪除系統cache,釋放swap(如果用到了swap的話),甚至可以重啟整個OS。
3.sync  -- 將髒資料重新整理到磁碟
4.echo 3 > /proc/sys/vm/drop_caches  -- 清除OS Cache
5.swapoff -a && swapon -a

再總結一下:
  1.相同條件下:innodb_flush_log_at_trx_commit=0,插入50W行資料所花時間25.08秒;
  2.相同條件下:innodb_flush_log_at_trx_commit=1,插入50W行資料所花時間17分21.91秒;
  3.相同條件下:innodb_flush_log_at_trx_commit=2,插入50W行資料所花時間1分0.35秒。
上面引數值為1時,所花時間太長了,與虛擬機器磁碟IO效能較差有關,若是換成SSD或PCIE,差別沒那麼大。
參考各引數值具體含義:
0:每秒將log buffer的內容寫事務日誌並且重新整理到磁碟;
1:每個事務提交後,將log_buffer的內容寫事務日誌並重新整理資料到磁碟;
2:每個事務提交,將log_buffer內容寫事務日誌,但不進行資料刷盤。

相關推薦

innodb_flush_log_at_trx_commit不同數值效能測試

一.基本資訊 10.0.20-MariaDB-log sync_binlog=0 tx_isolation=READ-COMMITTED binlog_format=ROW innodb_io_capacity=1200 innodb_buffer_pool_size=21

MySQL自增列鎖模式 innodb_autoinc_lock_mode不同引數效能測試

對於innodb_autoinc_lock_mode 各種引數的值的含義,網上也有各種詳解,看完覺得意猶未盡,這裡不做闡述,只動手測試,看看效能上,到底有沒有理論上所說的差別。對於自增列的鎖定,據說是innodb_autoinc_lock_mode = 2模式下有較高的效能,MySQL 8.0下innod

Linux效能測試

轉載文章:http://blog.51cto.com/wushank/1585927 linux下的CPU、記憶體、IO、網路的壓力測試 一、對CPU進行簡單測試: 1、通過bc命令計算特別函式 例:計算圓周率 echo "scale=5000; 4*a(1)

效能測試場景設定---不同場景對應的jmeter指令碼【不定時補充】

本文總結一下常用的效能測試場景有哪些?不同場景對應的jmeter指令碼如何配置?  一、使用者登入一次後迴圈執行其它交易      1、實現方式:僅一次控制器           這種

Windows 7環境網站效能測試小工具 Apache Bench 和 Webbench使用和下載

1、簡要說明: Apache Bench 是Apache的網站效能測試小程式,Windows平臺下的程式名簡稱ab.exe,要想獲得這個80k的可執行程式,使用者需要下載整個Apache Httpd軟體包!還需要將其安裝到電腦上,確實比較麻煩。 Webbench也是一款網站效能測試小程式,可以獲得網站

ie8相容性問題(七) js數值中文情況無法傳到controller

專案中遇到這樣一個問題,要實現一個下載功能,引數有兩個,一個id,一個標題。其中標題是中文。 js寫法: var params = {   "id": "0001",   "title": "需求響應速率概述" } window.open("downloadFilesCon

多個頁面跳轉到一個頁面,每次跳轉顯示不一樣的內容,相同功能形式不同的jsp頁面整合成一個 根據傳遞的數值來決定跳轉的jsp頁面該顯示什麼樣的內容,避免new多個jsp頁面,節省資源

在jsp開發過程中,會遇到這樣的情況; 一個頁面跳轉到另一個頁面,需要兩個jsp頁面; 如果有5、6種不同的一個頁面跳轉到另一個不同的jsp頁面的時候,基本的功能都差不多,類似的情況,如果建立很多的jsp,會導致資源浪費,還有就是建立多個jsp頁面到後來自己都有點暈; 那麼只需要在傳遞的

【 模擬 】基於TOA的定位演算法效能分析(不同接收站數量的比較)

研究接收機數量對SNR = 30 dB的非線性和線性方法的MSPE效能的影響。 從最小數量的感測器開始,即L = 3,它們的位置是(0,0),(10,0)和(10,10)。 然後將具有座標(0,10),(0,5),(5,0),(10,5)和(5,10)的接收器連續新增到L = 8。未知源位於 (

【資料庫效能測試實戰】測試不同分頁儲存過程在10w,100w以及1000w資料量下面的表現

前言 資料庫的效能與每一行程式碼息息相關,所以,每次寫程式碼可以考慮一下在不同級別的資料量下面測試一下效能。 本文參考了: Postgresql生成大量測試資料 以及 準備測試用資料 此次測試我們將分別用10w,100w以及1000w級別的表來測試,下面先建立

漫遊測試效能測試(4.4.Linux記憶體\磁碟\CPU問題的判斷方法)

以vmstat這個工具查詢出來的結果的欄位為解釋的依據。其它監控工具,只需要瞭解每個欄位的說明,其原理類似。 [email protected]:~# vmstat 2  procs -----------memory---------- ---swap-- --

效能測試十五:liunx搭建(tomcatr+專案+jmete命令列)

單機 準備工作: 1、壓力機安裝並配置好JDK,輸入java和javac驗證環境變數 2、上傳jmeter到liunx下: 準備好jmeter的壓縮包 在第三方工具中對linux檔案上傳下載(需先裝好rz/sz工具),以liunx系統本身出發:sz下載/傳送(send)  &nbs

Kubernetesweb服務的效能測試三部曲之三:橫向擴容

本章是《Kubernetes下web服務的效能測試三部曲》系列的終篇,之前我們用AB和JMeter兩種工具壓測了k8s環境下的Tomcat,並通過調整記憶體和CPU來驗證縱向擴容的效果,本章我們來驗證橫向擴容對吞吐量的影響; 本文地址:http://blog.

效能測試十六:liunxjmete配置環境變數

修改環境變數後就不用每次手動輸入路徑,省時省事,減少命令長度和出錯率 按Ctrl+L可進行翻頁,翻頁到最後一行,此處有java的環境變數 新增jmeter的目錄和bin目錄 此時,雖修改成功,但是並未生效,需要source一下 在任何目錄下輸入jmeter有GUI那個提示即說明配置成功

效能測試十七:liunxjmeter結果報表、html報表

   控制檯日誌,只能看出整體的資料,若只是測單介面,這個最好用,但若有多個介面時,無法分別展示,所以需要換另外一種報表   四種方式來獲取Jmeter的結果報表 一、在GUI模式下跑Jmeter的指令碼,用tps外掛實時展示圖表 二、在命令列模式下跑Jmeter的指令

DevOps架構如何進行微服務效能測試

一. 微服務架構下的效能測試挑戰 微服務與DevOps 微服務是實現DevOps的重要架構 微服務3S原則 DevOps核心點   微服務架構下的業務特點 億級使用者的平臺 單服務業務隨時擴容 服務之間存在相互呼叫關係 版本更新快,上線週期短

LoadRunner:Controller及結果分析 一、效能測試概述 1、關於效能測試目標: ①TPS ②一定併發使用者數功能點的響應時間 ③一定響應時間內功能點的併發使用者數 效能測試不是

一、效能測試概述 1、關於效能測試目標: ①TPS ②一定併發使用者數下功能點的響應時間 ③一定響應時間內功能點的併發使用者數 效能測試不是達到既定目標即可,還要測試軟體功能能夠達到的極限值。 2、關於效能測試的場景: 在指令碼錄製除錯完成後,需要進行場景的設定,進而對指令碼進行壓測,分析壓測的結果。 效能

Python sklearn包——mnist資料集不同分類器的效能實驗

Preface:使用scikit-learn各種分類演算法對資料進行處理。 2.2、Scikit-learn的測試 scikit-learn已經包含在Anaconda中。也可以在官方下載原始碼包進行安裝。本文程式碼裡封裝瞭如下機器學習演算法,我們修改資料載入函式,即可

JMeter效能測試入門-不同型別執行緒組的使用

在上一篇部落格中,我們簡單介紹了JMeter在介面自動化方面的應用,本文主要介紹JMeter效能測試。 在做效能測試之前,我們來了解一下JMeter多個不同執行緒組的應用。首先,JMeter提供了三個基本的執行緒組,分別為: Thread Group setUp Thr

Linux效能測試工具 – sysbench

sysbench是一款開源的多執行緒效能測試工具,可以執行CPU/記憶體/執行緒/IO/資料庫等方面的效能測試。資料庫目前支援MySQL/Oracle/PostgreSQL。本文只是簡單演示一下幾種測試的用法,後續準備利用sysbench來對MySQL進行一系列的測試。具體

不同階段的效能測試

一、開發階段的效能測試實施       效能測試不是特別重要的專案,這一階段的效能測試較多關注於軟體功能而引起的缺陷。因此主要進行使用者併發效能測試,即核心模組併發使用者測試與組合模組併發使用者測試。此外,可能還會進行一些預期效能指標的效能測試。通過開發階段的效能測試可以發