針對上一節做一些針對公司業務的測試。
我們來做一些壓力測試。
伺服器配置:
作業系統: centos 5.6-64
cpu: 8核
記憶體: 8g
硬碟:sas
檔案系統:linux
mysql:5.6.
網絡卡: 100m
網路環境: 良好
資料庫表:
c_account_customer,這裡用來根據id查詢、更新某些字段
create table `c_account_customer` (
`id` int(10) unsigned not null auto_increment comment '表主鍵',
`customer_id` int(10) unsigned not null comment '客戶號',
`item_id` int(10) unsigned not null comment '科目號',
`ref_id` int(10) unsigned not null default '0' comment '業務識別號',
`debit_balance` decimal(14,2) default null comment '借方餘額',
`credit_balance` decimal(14,2) default null comment '貸方餘額',
`last_time` timestamp not null default current_timestamp on update current_timestamp comment '最後更新時間',
primary key (`id`),
unique key `customer_id` (`customer_id`,`item_id`,`ref_id`)
) engine=innodb auto_increment=2 default charset=utf8;
c_entry_company用來插入借、貸科目資訊
create table `c_entry_company` (
`id` int(10) unsigned not null auto_increment comment '表主鍵',
`entity_id` int(10) unsigned not null comment '機構號',
`item_id` int(10) unsigned not null comment '科目號',
`ref_id` int(11) not null default '0' comment '業務識別號',
`direction` tinyint(3) unsigned not null comment '記賬方向',
`amount` decimal(10,0) not null comment '記賬金額',
`operation` int(11) default null comment '操作型別號',
`operation_id` int(11) default null comment '操作流水號',
`note` varchar(200) default null comment '業務備註',
`create_time` timestamp not null default current_timestamp on update current_timestamp comment '資料建立時間',
primary key (`id`)
) engine=innodb default charset=utf8;
testvalue表,用來記錄事務中查詢到的字段值,進行結果分析:
create table `testvalue` (
`id` int(11) not null auto_increment,
`val` decimal(14,2) default null,
primary key (`id`)
) engine=innodb default charset=utf8;
針對上述三個資料表的事務操作:
create definer=`root`@`localhost` procedure `test`(out debitb decimal(14,2))
begin
start transaction ;
select @db:=debit_balance from c_account_customer where id=1 for update;
set debitb=@db;
insert into abacus.testvalue (val) values (@db);
insert into abacus.c_entry_customer (customer_id,item_id,ref_id,direction,amount,operation,operation_id,note) values (1,1,1,1,1,1,1,1);
insert into abacus.c_entry_customer (customer_id,item_id,ref_id,direction,amount,operation,operation_id,note) values (1,2,1,1,1,1,1,1);
update abacus.c_account_customer set debit_balance=@db+1 where id=1;
commit;
endc#測試**
public static void testcomplicating()
}console.writeline("結束:" + datetime.now+";迴圈次數:"+num);
}public static void complicating()
}public static void execution(object i)
;mysqlhelper.runprocedure("test", parameters, "test");
=>logs.jobstatus.info("更新前值:"+debitb.value+";當前執行緒id:" + thread.currentthread.managedthreadid + ";迴圈:" + (int)i));
第一組測試結果
mysql 伺服器最大連線數: 1024
.net 客戶端連線池最大連線數:500
不模擬耗時操作
測試前先插入一條資料:insert into abacus.c_account_customer (customer_id,item_id,ref_id,debit_balance,credit_balance)values(1,1,1,10000,10000);
第1次: 100個併發 ,完成耗時3秒,無資料丟失,無資料錯誤。
第2次: 500個併發 ,完成耗時10秒,無資料丟失,無資料錯誤。
第3次: 5個併發,while迴圈中持續1分鐘,完成耗時1分鐘,事務次數171540,無資料丟失,無資料錯誤。
第4次: 10併發,while迴圈中持續10分鐘,完成耗時10分鐘,事務1885640次數 ,無丟資料( c_entry_company中3771280條資料),無資料錯誤(debit_balance=1895640.00 =1885640+10000)。
第5次: 10併發,while迴圈中持續30分鐘,完成耗時30分鐘,迴圈次數(694861),事務6948610次數 ,無丟資料( c_entry_company中13897220條資料),無資料錯誤(debit_balance=6958610.00 =6948610+10000)。
圖例:上圖中 ,
圖1,2 為第4次測試時mysql伺服器截圖。
圖3為第4次測試時mysql伺服器每秒執行事務次數。
圖4為第5次測試時mysql伺服器每分鐘執行事務次數。
注:歡迎提出更優、合理的方案。
併發測試集合點測試併發
併發測試集合點 定時器下的synchronizing timer number of simulated users to group by 集合多少人後再執行請求 timeout in milliseconds 指定人數 多少秒沒集合到算超時 設定延遲時間以毫秒為單位 注意 如果設定timeout...
mysql的高併發測試驗證
mysql的高併發測試,針對高併發進行測試 此測試是在本地的apache測試 d wamp apache bin ab.exe c 200 n 200 此 是自己的測試 裡面的 如下 mysql.php檔案的內容如下 error reporting 0 echo mysql connect 127....
Mysql 5 5 53 事務與併發測試
1.在事務中使用查詢遇上併發的情況 1 執行緒1事務開啟,執行緒2查詢資料 原始資料 tea name bbb 執行緒1 start transaction 執行緒1 select from t a tea where tea id 1 執行緒2 select from t a tea where ...