Mycat批量插入效能測試
本文采用mycat的values批量插入方式進行測試,連寫的資料量達到8000左右事務提交可以達到每秒75000左右資料量,也證實了Mycat的效率是小於或等於Mysql的效能。在實際生產中,因為訪問量和併發問題使得效率下降,這也是資料庫底層IO無法避免的困境,所以實際生產中多采用主備-讀寫分離的方式進行分片處理,可以多設定幾個Mycat的主備節點。本文采用的是一主一備,單個Mycat節點的讀寫分離之Mysql InnoDB的測試。
理想測試
何為理想測試,只是理想狀態的下的測試資料,可能不是很準確。
Mycat資料分片
schema.xml
<table name="userinfo" primaryKey="id" type="global" dataNode="dn1,dn2" /> <table name="processtask" primaryKey="id" type="global" dataNode="dn1,dn2" />
dbBatch.sql
DROP TABLE IF EXISTS `userinfo`; CREATE TABLE `userinfo` ( `id` int(20) NOT NULL, `name` varchar(50) DEFAULT NULL, `phone` varchar(30) DEFAULT NULL, `address` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS `processtask`; CREATE TABLE `processtask` ( `id` int(12) NOT NULL AUTO_INCREMENT, `pmethod` varchar(50) DEFAULT NULL, `plimit` int(20) DEFAULT NULL, `ptime` int(20) DEFAULT NULL, `systime` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Java測試類
BatchInsert
package demo.test; import java.sql.DriverManager; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; import org.junit.Before; import org.junit.Test; import com.mysql.jdbc.Connection; import com.mysql.jdbc.PreparedStatement; /** * 批量插入JDBC操作類 * * @author pengjunlin * */ public class BatchInsert { private String driver = "com.mysql.jdbc.Driver"; private String url = "jdbc:mysql://192.168.178.128:8066/TESTDB"; private String batch_url = "jdbc:mysql://192.168.178.128:8066/TESTDB?useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true";//要5.1.13以上版本的驅動包 private String user = "root"; private String password = "123456"; private int limit=10; private String method="batchInsertWithTransaction"; public String getMethod() { return method; } public void setMethod(String method) { this.method = method; } public int getLimit() { return limit; } public void setLimit(int limit) { this.limit = limit; } @Before public void deleteAll(){ Connection conn = null; try { Class.forName(driver); conn = (Connection) DriverManager.getConnection(url, user, password); String sql = "DELETE FROM userinfo ;"; conn.prepareStatement(sql).execute(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } finally { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } /** * 記錄執行的時間 * * @MethodName: insertResult * @Description: * @param methodName * @param limit * @param timeStr * @throws */ public void insertResult(String methodName,String limit,String timeStr) { Connection conn = null; PreparedStatement pstm = null; try { Class.forName(driver); conn = (Connection) DriverManager.getConnection(url, user, password); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String sql = "/*#mycat:db_type=master*/INSERT INTO processtask (pmethod,plimit,ptime,systime) VALUES('"+methodName+"','"+limit+"','"+timeStr+"','"+sdf.format(new Date())+"')"; System.out.println(sql); pstm = (PreparedStatement) conn.prepareStatement(sql); pstm.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } finally { if (pstm != null) { try { pstm.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } @Test public void batchInsertWithTransaction() { Connection conn = null; PreparedStatement pstm = null; try { Class.forName(driver); conn = (Connection) DriverManager.getConnection(batch_url, user, password); StringBuffer sql = new StringBuffer("/*#mycat:db_type=master*/INSERT INTO userinfo(id,name,phone,address) VALUES"); conn.setAutoCommit(false);// 即手動提交 Random rand = new Random(); int a, b, c, d; int index=1; for (int i = 1; i <= limit; i++) { a = rand.nextInt(10); b = rand.nextInt(10); c = rand.nextInt(10); d = rand.nextInt(10); if(index==limit){ sql.append("("+i+",'boonya',"+"'188" + a + "88" + b + c + "66" + d+"','"+"xxxxxxxxxx_" + "188" + a + "88" + b + c + "66" + d+"');"); }else{ sql.append("("+i+",'boonya',"+"'188" + a + "88" + b + c + "66" + d+"','"+"xxxxxxxxxx_" + "188" + a + "88" + b + c + "66" + d+"'),"); } index++; } System.out.println(sql.toString()); pstm = (PreparedStatement) conn.prepareStatement(sql.toString()); Long startTime = System.currentTimeMillis(); pstm.execute(); conn.commit();// 手動提交 Long endTime = System.currentTimeMillis(); String timeStr=(endTime - startTime)+""; System.out.println("OK,用時:" + timeStr); insertResult("batchInsertWithTransaction", limit+"", timeStr); } catch (Exception e) { e.printStackTrace(); } finally { if (pstm != null) { try { pstm.close(); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } } } } }
BatchInsertThread
package demo.test;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
/**
* 批量插入執行緒類
*
* @author pengjunlin
*
*/
public class BatchInsertThread implements Runnable{
BatchInsert batchInsert;
static int loop=10;
public BatchInsertThread(BatchInsert batchInsert){
this.batchInsert=batchInsert;
}
public static void main(String[] args) {
Executor executor=Executors.newSingleThreadExecutor();
int limit=15630;
for (int i = 0; i <= 50000; i++) {
limit+=10;
BatchInsert bi=new BatchInsert();
bi.setLimit(limit);
executor.execute(new BatchInsertThread(bi));
}
}
public void run() {
synchronized (batchInsert) {
try {
for (int i = 0; i < loop; i++) {
System.out.println("第--"+i+"---次---------------------開始");
batchInsert.deleteAll();
batchInsert.batchInsertWithTransaction();
System.out.println("第--"+i+"---次---------------------結束");
}
} catch (Exception e) {
e.printStackTrace();
}finally{
}
}
}
}
BatchInsertDataParsor
package demo.test;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.junit.Test;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.ResultSetMetaData;
/**
* 測試資料分析類
*
* @author pengjunlin
*
*/
public class BatchInsertDataParsor {
private String driver = "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://192.168.178.128:8066/TESTDB?useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true";//要5.1.13以上版本的驅動包
private String user = "root";
private String password = "123456";
@Test
public void queryData(){
Connection conn = null;
ResultSet rs=null;
try {
Class.forName(driver);
conn = (Connection) DriverManager.getConnection(url, user, password);
String sql = "/*#mycat:db_type=slave*/SELECT id,pmethod,plimit,ptime,systime FROM processtask ;";
long startTime=System.currentTimeMillis();
rs=conn.prepareStatement(sql).executeQuery(sql);
if(rs==null){
throw new RuntimeException("ResultSet is null。。。。");
}
long endTime=System.currentTimeMillis();
long cost=endTime-startTime;
System.out.println("Totoal rows:"+rs.getRow()+" cost:"+cost+"ms");
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
try {
if(rs!=null&&!rs.isClosed()){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
@Test
public void parseTimeTest(){
Connection conn = null;
ResultSet rs=null;
try {
Class.forName(driver);
conn = (Connection) DriverManager.getConnection(url, user, password);
String sql = "/*#mycat:db_type=slave*/SELECT avg(ptime) avg,max(ptime) max,min(ptime) min FROM processtask;";
rs=conn.prepareStatement(sql).executeQuery(sql);
if(rs==null){
throw new RuntimeException("ResultSet is null。。。。");
}
ResultSetMetaData md = (ResultSetMetaData) rs.getMetaData();//獲取鍵名
int columnCount = md.getColumnCount();//獲取行的數量
while (rs.next()) {
for (int i = 1; i <= columnCount; i++) {
System.out.println(md.getColumnName(i)+": "+rs.getString(i));//獲取鍵名及值
}
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
try {
if(rs!=null&&!rs.isClosed()){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
@Test
public void parseLimitAndTimeTest(){
Connection conn = null;
ResultSet rs=null;
try {
Class.forName(driver);
conn = (Connection) DriverManager.getConnection(url, user, password);
String sql = "/*#mycat:db_type=slave*/SELECT plimit,avg(ptime) avg FROM processtask group by plimit;";
rs=conn.prepareStatement(sql).executeQuery(sql);
if(rs==null){
throw new RuntimeException("ResultSet is null。。。。");
}
ResultSetMetaData md = (ResultSetMetaData) rs.getMetaData();//獲取鍵名
int columnCount = md.getColumnCount();//獲取欄位的數量
while (rs.next()) {
float limit=0,avg=0;
for (int i = 1; i <= columnCount; i++) {
float result=rs.getFloat(i);
//System.out.println(md.getColumnName(i)+": "+result+"");//獲取鍵名及值
if(i==1){
limit=result;
}else{
avg=result;
}
}
System.out.println("limit="+limit+"\t\t估算1s大概的批量插入量:"+(1000*limit)/avg);
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
try {
if(rs!=null&&!rs.isClosed()){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
測試資料
樣本(limit)-每組10個例項樣本 | 批量插入平均耗時(avg)ms | 估算一秒內批量插入可插入的數量 |
SELECT plimit as '樣本(limit)-每組10個例項樣本',avg(ptime) as '批量插入平均耗時(avg)ms' ,(1000*plimit/avg(ptime)) as '估算一秒內批量插入可插入的數量' FROM processtask group by plimit; | ||
10 | 11.6 | 862.069 |
7680 | 97.8 | 78527.6074 |
7790 | 100.6 | 77435.3877 |
9730 | 126 | 77222.2222 |
8050 | 105.6 | 76231.0606 |
10420 | 137 | 76058.3942 |
7280 | 95.8 | 75991.6493 |
9740 | 128.7 | 75679.8757 |
7700 | 101.8 | 75638.5069 |
9520 | 125.9 | 75615.5679 |
10430 | 139.1 | 74982.0273 |
9410 | 126.1 | 74623.3148 |
8180 | 109.7 | 74567.0009 |
5750 | 77.5 | 74193.5484 |
6590 | 89.4 | 73713.6465 |
10600 | 143.8 | 73713.491 |
9130 | 123.9 | 73688.4584 |
5790 | 78.8 | 73477.1574 |
8620 | 117.5 | 73361.7021 |
6640 | 90.7 | 73208.3793 |
6720 | 91.8 | 73202.6144 |
9810 | 134.1 | 73154.3624 |
7820 | 106.9 | 73152.479 |
6160 | 84.5 | 72899.4083 |
8850 | 121.9 | 72600.4922 |
9140 | 125.9 | 72597.2994 |
7110 | 98.2 | 72403.2587 |
9470 | 130.8 | 72400.6116 |
9960 | 138 | 72173.913 |
9440 | 130.9 | 72116.1192 |
12620 | 175 | 72114.2857 |
15630 | 217 | 72027.6498 |
6230 | 86.5 | 72023.1214 |
10630 | 147.6 | 72018.9702 |
8980 | 124.8 | 71955.1282 |
10360 | 144.1 | 71894.5177 |
10050 | 139.9 | 71837.0264 |
10560 | 147 | 71836.7347 |
6960 | 96.9 | 71826.6254 |
6490 | 90.4 | 71792.0354 |
9540 | 133 | 71729.3233 |
6660 | 93.1 | 71535.9828 |
8110 | 113.4 | 71516.7549 |
8400 | 117.5 | 71489.3617 |
9710 | 135.9 | 71449.5953 |
12500 | 175 | 71428.5714 |
4730 | 66.3 | 71342.3831 |
6830 | 95.8 | 71294.3633 |
8060 | 113.4 | 71075.8377 |
7450 | 104.9 | 71020.0191 |
7440 | 104.8 | 70992.3664 |
7520 | 106.1 | 70876.5316 |
4670 | 65.9 | 70864.9469 |
7570 | 106.9 | 70813.8447 |
7650 | 108.1 | 70767.8076 |
10260 | 145.2 | 70661.157 |
12200 | 172.7 | 70642.7331 |
7490 | 106.1 | 70593.7795 |
10580 | 150 | 70533.3333 |
6920 | 98.2 | 70468.4318 |
8680 | 123.3 | 70397.4047 |
7360 | 104.6 | 70363.2887 |
5940 | 84.6 | 70212.766 |
9290 | 132.5 | 70113.2075 |
9970 | 142.2 | 70112.5176 |
7760 | 110.7 | 70099.3677 |
11180 | 159.5 | 70094.0439 |
9530 | 136 | 70073.5294 |
9770 | 139.6 | 69985.6734 |
4360 | 62.3 | 69983.9486 |
7380 | 105.6 | 69886.3636 |
6750 | 96.6 | 69875.7764 |
9160 | 131.3 | 69763.8995 |
4980 | 71.4 | 69747.8992 |
10120 | 145.1 | 69745.0034 |
14870 | 213.3 | 69714.0178 |
8370 | 120.1 | 69691.9234 |
6250 | 89.8 | 69599.1091 |
6680 | 96 | 69583.3333 |
9500 | 136.6 | 69546.1201 |
4520 | 65 | 69538.4615 |
10080 | 145.2 | 69421.4876 |
9050 | 130.4 | 69401.8405 |
5550 | 80 | 69375 |
10270 | 148.2 | 69298.2456 |
13320 | 192.5 | 69194.8052 |
10220 | 147.9 | 69100.7437 |
10500 | 152 | 69078.9474 |
7420 | 107.5 | 69023.2558 |
7530 | 109.1 | 69019.2484 |
15000 | 217.4 | 68997.2401 |
9080 | 131.6 | 68996.9605 |
15420 | 223.5 | 68993.2886 |
10140 | 147.2 | 68885.8696 |
10700 | 155.4 | 68854.5689 |
9240 | 134.2 | 68852.459 |
11900 | 173.2 | 68706.6975 |
8140 | 118.5 | 68691.9831 |
7090 | 103.3 | 68635.0436 |
14620 | 213.1 | 68606.2881 |
7260 | 105.9 | 68555.2408 |
15610 | 227.7 | 68555.1164 |
12520 | 182.7 | 68527.6409 |
10110 | 147.6 | 68495.935 |
10010 | 146.2 | 68467.8523 |
6010 | 87.8 | 68451.0251 |
10540 | 154 | 68441.5584 |
12300 | 179.8 | 68409.3437 |
4930 | 72.1 | 68377.2538 |
10410 | 152.3 | 68351.937 |
10900 | 159.7 | 68252.9743 |
4550 | 66.7 | 68215.8921 |
10720 | 157.5 | 68063.4921 |
5580 | 82 | 68048.7805 |
7750 | 113.9 | 68042.1422 |
6840 | 100.6 | 67992.0477 |
12330 | 181.4 | 67971.3341 |
6930 | 102 | 67941.1765 |
7500 | 110.5 | 67873.3032 |
6570 | 96.8 | 67871.9008 |
8760 | 129.2 | 67801.8576 |
8630 | 127.3 | 67792.6159 |
6900 | 101.8 | 67779.9607 |
7400 | 109.2 | 67765.5678 |
7240 | 107 | 67663.5514 |
13370 | 197.6 | 67661.9433 |
11690 | 172.8 | 67650.463 |
15460 | 228.8 | 67569.9301 |
13120 | 194.2 | 67559.2173 |
5970 | 88.4 | 67533.9367 |
12680 | 187.9 | 67482.7036 |
7980 | 118.3 | 67455.6213 |
9720 | 144.1 | 67453.1575 |
4390 | 65.1 | 67434.7158 |
9620 | 142.8 | 67366.9468 |
5780 | 85.8 | 67365.9674 |
9760 | 144.9 | 67356.7978 |
5770 | 85.7 | 67327.888 |
7780 | 115.6 | 67301.0381 |
8820 | 131.1 | 67276.8879 |
9750 | 145 | 67241.3793 |
14920 | 222.1 | 67176.9473 |
7340 | 109.4 | 67093.2358 |
9490 | 141.5 | 67067.1378 |
8950 | 133.5 | 67041.1985 |
4940 | 73.7 | 67028.4939 |
14810 | 221.3 | 66922.7293 |
7540 | 112.7 | 66903.2831 |
8900 | 133.1 | 66867.0173 |
9640 | 144.2 | 66851.595 |
3620 | 54.2 | 66789.6679 |
6130 | 91.8 | 66775.5991 |
6550 | 98.1 | 66768.6035 |
4370 | 65.5 | 66717.5573 |
11280 | 169.2 | 66666.6667 |
7690 | 115.4 | 66637.7816 |
4070 | 61.1 | 66612.1113 |
7740 | 116.2 | 66609.2943 |
13260 | 199.1 | 66599.6986 |
7020 | 105.5 | 66540.2844 |
4970 | 74.8 | 66443.8503 |
10590 | 159.4 | 66436.6374 |
10170 | 153.2 | 66383.812 |
9910 | 149.3 | 66376.4233 |
4300 | 64.8 | 66358.0247 |
13270 | 200 | 66350 |
11680 | 176.1 | 66325.9512 |
11410 | 172.2 | 66260.1626 |
10520 | 158.8 | 66246.8514 |
12660 | 191.3 | 66178.7768 |
11600 | 175.4 | 66134.5496 |
9670 | 146.3 | 66097.0608 |
9860 | 149.2 | 66085.7909 |
6910 | 104.6 | 66061.1855 |
9800 | 148.4 | 66037.7358 |
9170 | 139 | 65971.223 |
4510 | 68.4 | 65935.6725 |
14430 | 218.9 | 65920.5116 |
9660 | 146.6 | 65893.588 |
4580 | 69.6 | 65804.5977 |
10200 | 155.1 | 65764.0232 |
10100 | 153.6 | 65755.2083 |
8410 | 127.9 | 65754.4957 |
13300 | 202.3 | 65743.9446 |
6190 | 94.2 | 65711.2527 |
12280 | 187 | 65668.4492 |
8430 | 128.7 | 65501.1655 |
12320 | 188.3 | 65427.5093 |
3530 | 54 | 65370.3704 |
8030 | 122.9 | 65337.6729 |
8480 | 129.8 | 65331.2789 |
9210 | 141 | 65319.1489 |
3950 | 60.5 | 65289.2562 |
15100 | 231.3 | 65283.182 |
5760 | 88.3 | 65232.1631 |
9510 | 145.8 | 65226.3374 |
6940 | 106.4 | 65225.5639 |
8290 | 127.2 | 65172.956 |
7310 | 112.2 | 65151.5152 |
6280 | 96.4 | 65145.2282 |
13680 | 210.1 | 65111.8515 |
12180 | 187.4 | 64994.6638 |
12490 | 192.2 | 64984.3913 |
12060 | 185.7 | 64943.4572 |
12100 | 186.5 | 64879.3566 |
5670 | 87.4 | 64874.1419 |
3870 | 59.7 | 64824.1206 |
15290 | 235.9 | 64815.5998 |
15560 | 240.3 | 64752.3928 |
14860 | 229.5 | 64749.4553 |
8200 | 126.7 | 64719.8106 |
14880 | 230 | 64695.6522 |
11370 | 175.8 | 64675.7679 |
14280 | 220.9 | 64644.6356 |
3820 | 59.1 | 64636.2098 |
6740 | 104.3 | 64621.2848 |
11460 | 177.4 | 64599.7745 |
15210 | 235.5 | 64585.9873 |
12370 | 191.7 | 64527.9082 |
5530 | 85.7 | 64527.4212 |
8230 | 127.6 | 64498.4326 |
11330 | 175.7 | 64484.9175 |
14010 | 217.5 | 64413.7931 |
3920 | 60.9 | 64367.8161 |
10960 | 170.3 | 64357.017 |
12050 | 187.3 | 64335.291 |
5660 | 88 | 64318.1818 |
10470 | 162.8 | 64312.0393 |
14070 | 218.8 | 64305.3016 |
4480 | 69.7 | 64275.4663 |
6170 | 96 | 64270.8333 |
14780 | 230 | 64260.8696 |
9230 | 143.7 | 64231.0369 |
6730 | 104.8 | 64217.5573 |
14680 | 228.6 | 64216.9729 |
12240 | 190.7 | 64184.5831 |
9920 | 154.6 | 64165.5886 |
7230 | 112.7 | 64152.6176 |
15050 | 234.8 | 64097.1039 |
6140 | 95.8 | 64091.858 |
10180 | 158.9 | 64065.45 |
8220 | 128.5 | 63968.8716 |
15440 | 241.4 | 63960.232 |
14690 | 229.8 | 63925.1523 |
10480 | 164 | 63902.439 |
12550 | 196.4 | 63900.2037 |
12410 | 194.3 | 63870.3037 |
4750 | 74.4 | 63844.086 |
10980 | 172 | 63837.2093 |
7580 | 118.8 | 63804.7138 |
13430 | 210.5 | 63800.4751 |
13480 | 211.3 | 63795.5513 |
5610 | 88 | 63750 |
13360 | 209.6 | 63740.458 |
9790 | 153.6 | 63736.9792 |
8700 | 136.5 | 63736.2637 |
11960 | 187.7 | 63718.7001 |
12160 | 191.1 | 63631.6065 |
14520 | 228.2 | 63628.3961 |
6770 | 106.4 | 63627.8195 |
11260 | 177.1 | 63579.8984 |
11010 | 173.3 | 63531.4484 |
13570 | 213.6 | 63529.9625 |
13110 | 206.5 | 63486.6828 |
14550 | 229.4 | 63426.3296 |
6150 | 97 | 63402.0619 |
10390 | 163.9 | 63392.3124 |
7720 | 121.9 | 63330.5989 |
5590 | 88.3 | 63306.9083 |
6880 | 108.7 | 63293.4683 |
10760 | 170.1 | 63256.9077 |
11800 | 186.6 | 63236.8703 |
9420 | 149 | 63221.4765 |
13940 | 220.5 | 63219.9546 |
10650 | 168.5 | 63204.7478 |
14830 | 234.9 | 63133.2482 |
7860 | 124.5 | 63132.5301 |
13950 | 221.3 | 63036.6019 |
9310 | 147.8 | 62990.5277 |
4340 | 68.9 | 62989.8403 |
8010 | 127.2 | 62971.6981 |
11380 | 180.8 | 62942.4779 |
13730 | 218.3 | 62895.0985 |
12360 | 196.8 | 62804.878 |
10160 | 162 | 62716.0494 |
11430 | 182.3 | 62698.8481 |
10090 | 161.1 | 62631.9056 |
14730 | 235.2 | 62627.551 |
3780 | 60.4 | 62582.7815 |
11070 | 176.9 | 62577.7275 |
8670 | 138.6 | 62554.1126 |
14960 | 239.3 | 62515.6707 |
10310 | 165 | 62484.8485 |
14890 | 238.4 | 62458.0537 |
14560 | 233.6 | 62328.7671 |
13530 | 217.1 | 62321.5108 |
15550 | 249.6 | 62299.6795 |
6020 | 96.8 | 62190.0826 |
13880 | 223.3 | 62158.5311 |
13030 | 209.8 | 62106.7684 |
15250 | 245.6 | 62092.8339 |
12600 | 203 | 62068.9655 |
4780 | 77.1 | 61997.406 |
9030 | 145.7 | 61976.6644 |
12950 | 209 | 61961.7225 |
11980 | 193.4 | 61944.1572 |
4850 | 78.3 | 61941.2516 |
12770 | 206.3 | 61900.1454 |
6620 | 107.1 | 61811.3912 |
9840 | 159.2 | 61809.0452 |
12790 | 207.1 | 61757.605 |
11390 | 184.6 | 61700.9751 |
3590 | 58.2 | 61683.8488 |
7270 | 117.9 | 61662.4258 |
9900 | 160.6 | 61643.8356 |
10070 | 163.6 | 61552.5672 |
10450 | 170 | 61470.5882 |
5130 | 83.5 | 61437.1257 |
4280 | 69.7 | 61406.0258 |
12630 | 205.8 | 61370.2624 |
5460 | 89 | 61348.3146 |
14450 | 235.6 | 61332.7674 |
13140 | 214.3 | 61315.9123 |
11140 | 181.7 | 61309.8514 |
9000 | 146.9 | 61266.1675 |
13550 | 221.3 | 61229.1008 |
15150 | 247.5 | 61212.1212 |
12890 | 210.6 | 61206.0779 |
11570 | 189.1 | 61184.5584 |
11630 | 190.1 | 61178.3272 |
3790 | 62 | 61129.0323 |
13580 | 222.2 | 61116.1116 |
15010 | 245.8 | 61065.9072 |
6890 | 112.9 | 61027.4579 |
15260 | 250.1 | 61015.5938 |
8450 | 138.5 | 61010.8303 |
8150 | 133.6 | 61002.994 |
14120 | 231.6 | 60967.1848 |
5600 | 92 | 60869.5652 |
4320 | 71 | 60845.0704 |
12020 | 197.7 | 60799.1907 |
11530 | 189.7 | 60780.1792 |
11610 | 191.1 | 60753.5322 |
14050 | 231.4 | 60717.3725 |
7880 | 129.8 | 60708.7827 |
10750 | 177.1 | 60700.1694 |
14610 | 240.7 | 60697.9643 |
7150 | 117.8 | 60696.0951 |
5930 | 97.7 | 60696.0082 |
12040 | 198.6 | 60624.3706 |
10400 | 171.7 | 60570.763 |
14260 | 235.5 | 60552.017 |
11920 | 196.9 | 60538.3443 |
12260 | 202.6 | 60513.3268 |
5190 | 85.8 | 60489.5105 |
12170 | 201.6 | 60367.0635 |
8960 | 148.5 | 60336.7003 |
12850 | 213 | 60328.6385 |
12700 | 210.6 | 60303.8936 |
12080 | 200.5 | 60249.3766 |
10570 | 175.5 | 60227.9202 |
15130 | 251.3 | 60206.924 |
15490 | 257.4 | 60178.7102 |
11030 | 183.3 | 60174.5772 |
6240 | 103.7 |
相關推薦Mycat批量插入效能測試本文采用mycat的values批量插入方式進行測試,連寫的資料量達到8000左右事務提交可以達到每秒75000左右資料量,也證實了Mycat的效率是小於或等於Mysql的效能。在實際生產中,因為訪問量和併發問題使得效率下降,這也是資料庫底層IO無法避免的困境,所以實際生產中 Mybatis+mysql批量插入效能分析測試前言 今天在網上看到一篇文章(後文中的文章指的就是它) https://www.jianshu.com/p/cce617be9f9e 發現了一種有關於mybatis批量插入的新方法,而且看了文章發現我原來的方法好像有點問題,但是由於文章中使用的環境是sqlserver而我經常使用的是mysql所以還是需要親 locust手機號批量註冊效能測試from locust import TaskSet,task,HttpLocust from common.redisCon import redis_clusters import queue class register(TaskSet): @task def register MySQL批量插入效能優化(二)"jdbc:mysql://192.168.104.163:3306/testdb", "vcom", "vcom", 2, 4, "c:\\te 【ADO.NET-中級】百萬級數據的批量插入的兩種方法測試arch pub 連接 code 新特性 try 簡單 nal ++ 在SQL Server 中插入一條數據使用Insert語句,但是如果想要批量插入一堆數據的話,循環使用Insert不僅效率低,而且會導致SQL一系統性能問題。下面介紹SQL Server支持的兩種批量 Mysql慢查詢開啟和查看 ,存儲過程批量插入1000萬條記錄進行慢查詢測試har src spa not 生成 con image creat 進入 首先登陸進入Mysql命令行 執行sql show variables like ‘slow_query%‘; 結果為OFF 說明還未開啟慢查詢 執行sql show var Locust效能測試 Locust效能測試1-環境準備與基本使用 Locust效能測試2-先登入場景案例 Locust效能測試3-no-web模式和csv報告儲存 Locust效能測試4-引數關聯 Locust效能測試5-引數化批量註冊https://www.cnblogs.com/yoyoketang/p/9638151.html https://www.cnblogs.com/yoyoketang/p/9642242.html https://www.cnblogs.com/yoyoketang/p/9648100.html ht mysql測試資料批量插入簡介 場景1:測試sql伺服器效能時需要單表100萬以上資料時 場景2:業務測試資料1000個賬號每個賬號有5個商品 當我們遇到以上場景時,如何快速造資料? 原理 利用select的交叉連線(cross join)。如果不帶WHERE條件子句,它將會返回被連 MySQL批量SQL插入效能優化對於一些資料量較大的系統,資料庫面臨的問題除了查詢效率低下,還有就是資料入庫時間長。特別像報表系統,可能每天花費在資料匯入上的時間就會長達幾個小時之久。因此,優化資料庫插入效能是很有意義的。 網路上的牛人很多,總會有一些手段可以提高insert效率,大家跟我 資料庫大批量SQL插入效能優化對於一些資料量較大的系統,資料庫面臨的問題除了查詢效率低下,還有就是資料入庫時間長。特別像報表系統,每天花費在資料匯入上的時間可能會長達幾個小時或十幾個小時之久。因此,優化資料庫插入效能是很有意義的。 經過對MySQL InnoDB的一些效能測試,發現一些可以提高ins MYSQL批量插入資料庫實現語句效能分析假定我們的表結構如下 程式碼如下 CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT NULL java實現各種排序演算法(包括氣泡排序,選擇排序,插入排序,快速排序(簡潔版))及效能測試1、氣泡排序是排序裡面最簡單的了,但效能也最差,數量小的時候還可以,數量一多,是非常慢的。 它的時間複雜度是O(n*n),空間複雜度是O(1) 程式碼如下,很好理解。 public static void bubbleSort(int[] arr) 大量資料情況下單執行緒插入和多執行緒insert資料庫的效能測試之前一直沒有遇到過大批量資料入庫的場景,所以一直沒有思考過在大量資料的情況下單執行緒插入和多執行緒插入的效能情況。今天在看一個專案原始碼的時候發現使用了多執行緒insert操作。 於是簡單的寫了一個測試程式來測試一批資料在N個執行緒下的insert情況。 public class ThreadImport MySQL批量千萬級資料SQL插入效能優化對於一些資料量較大的系統,資料庫面臨的問題除了查詢效率低下,還有就是資料入庫時間長。特別像報表系統,可能每天花費在資料匯入上的時間就會長達幾個小時之久。因此,優化資料庫插入效能是很有意義的。 網路上的牛人很多,總會有一些手段可以提高inser MySql使用指令碼批量插入資料用於測試步驟如下 1. 建表 2. 設定log_bin_trust_function_creators 3. 建立函式 4. 建立儲存過程 5. 呼叫儲存過程 mysql批量資料指令碼 1 建表 create table dept( id int u MongoDB與MySQL的插入、查詢效能測試1. 背景介紹 1.1 MongoDB的簡單介紹 在當今的資料庫市場上,MySQL無疑是佔有一席之地的。作為一個開源的關係型資料庫,MySQL被大量應用在各大網站後臺中,承擔著資訊儲存的重要作用。2009年,甲骨文公司(Oracle)收購Sun公司,MySQL成為Orac 【MongoDb】一次關於Oracle和MongoDb的插入和查詢效能測試本次實驗是在筆者上學期期末一次課程實習中的一部分,現在整理出來以供參考。 本次資料用的是不同數量級別上的資料分別在Oracle和MongoDb中進行實驗的。 其中兩者的表結構一樣,都是如下欄位: MySQL實現批量插入以優化效能的教程對於一些資料量較大的系統,資料庫面臨的問題除了查詢效率低下,還有就是資料入庫時間長。特別像報表系統,每天花費在資料匯入上的時間可能會長達幾個小時或十幾個小時之久。因此,優化資料庫插入效能是很有意義的。 經過對MySQL innodb的一些效能測試,發現一些可以提高i discuz論壇用sql語句批量插入測試資料(百萬級別)public class InsertIntoSQL {public final static String path = "D:/ComsenzEXP/wwwroot/discuz/attachments/testLog.txt";public static void main (String[] agrs Dapper插入記錄效能測試最近學習了Dapper,聽說它裡面有批量插記錄的功能,就寫了個小程式來測試下:分別用SqlBulkCopay,原始的單條插入,Dapper批量插入5萬條記錄。 表結構 tb_User (id, UserName,Password) 比較結果如下: 1.Dapper: 花費時 |