Mycat批量插入性能测试

来源:互联网 发布:career frog 知乎 编辑:程序博客网 时间:2024/06/03 21:16

本文采用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;}@Beforepublic 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();}}}}@Testpublic 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";@Testpublic 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();}}}@Testpublic 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();}}}@Testpublic 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;1011.6862.069768097.878527.60747790100.677435.3877973012677222.22228050105.676231.06061042013776058.3942728095.875991.64939740128.775679.87577700101.875638.50699520125.975615.567910430139.174982.02739410126.174623.31488180109.774567.0009575077.574193.5484659089.473713.646510600143.873713.4919130123.973688.4584579078.873477.15748620117.573361.7021664090.773208.3793672091.873202.61449810134.173154.36247820106.973152.479616084.572899.40838850121.972600.49229140125.972597.2994711098.272403.25879470130.872400.6116996013872173.9139440130.972116.11921262017572114.28571563021772027.6498623086.572023.121410630147.672018.97028980124.871955.128210360144.171894.517710050139.971837.02641056014771836.7347696096.971826.6254649090.471792.0354954013371729.3233666093.171535.98288110113.471516.75498400117.571489.36179710135.971449.59531250017571428.5714473066.371342.3831683095.871294.36338060113.471075.83777450104.971020.01917440104.870992.36647520106.170876.5316467065.970864.94697570106.970813.84477650108.170767.807610260145.270661.15712200172.770642.73317490106.170593.77951058015070533.3333692098.270468.43188680123.370397.40477360104.670363.2887594084.670212.7669290132.570113.20759970142.270112.51767760110.770099.367711180159.570094.0439953013670073.52949770139.669985.6734436062.369983.94867380105.669886.3636675096.669875.77649160131.369763.8995498071.469747.899210120145.169745.003414870213.369714.01788370120.169691.9234625089.869599.109166809669583.33339500136.669546.120145206569538.461510080145.269421.48769050130.469401.84055550806937510270148.269298.245613320192.569194.805210220147.969100.74371050015269078.94747420107.569023.25587530109.169019.248415000217.468997.24019080131.668996.960515420223.568993.288610140147.268885.869610700155.468854.56899240134.268852.45911900173.268706.69758140118.568691.98317090103.368635.043614620213.168606.28817260105.968555.240815610227.768555.116412520182.768527.640910110147.668495.93510010146.268467.8523601087.868451.02511054015468441.558412300179.868409.3437493072.168377.253810410152.368351.93710900159.768252.9743455066.768215.892110720157.568063.492155808268048.78057750113.968042.14226840100.667992.047712330181.467971.3341693010267941.17657500110.567873.3032657096.867871.90088760129.267801.85768630127.367792.61596900101.867779.96077400109.267765.5678724010767663.551413370197.667661.943311690172.867650.46315460228.867569.930113120194.267559.2173597088.467533.936712680187.967482.70367980118.367455.62139720144.167453.1575439065.167434.71589620142.867366.9468578085.867365.96749760144.967356.7978577085.767327.8887780115.667301.03818820131.167276.8879975014567241.379314920222.167176.94737340109.467093.23589490141.567067.13788950133.567041.1985494073.767028.493914810221.366922.72937540112.766903.28318900133.166867.01739640144.266851.595362054.266789.6679613091.866775.5991655098.166768.6035437065.566717.557311280169.266666.66677690115.466637.7816407061.166612.11137740116.266609.294313260199.166599.69867020105.566540.2844497074.866443.850310590159.466436.637410170153.266383.8129910149.366376.4233430064.866358.0247132702006635011680176.166325.951211410172.266260.162610520158.866246.851412660191.366178.776811600175.466134.54969670146.366097.06089860149.266085.79096910104.666061.18559800148.466037.7358917013965971.223451068.465935.672514430218.965920.51169660146.665893.588458069.665804.597710200155.165764.023210100153.665755.20838410127.965754.495713300202.365743.9446619094.265711.25271228018765668.44928430128.765501.165512320188.365427.509335305465370.37048030122.965337.67298480129.865331.2789921014165319.1489395060.565289.256215100231.365283.182576088.365232.16319510145.865226.33746940106.465225.56398290127.265172.9567310112.265151.5152628096.465145.228213680210.165111.851512180187.464994.663812490192.264984.391312060185.764943.457212100186.564879.3566567087.464874.1419387059.764824.120615290235.964815.599815560240.364752.392814860229.564749.45538200126.764719.81061488023064695.652211370175.864675.767914280220.964644.6356382059.164636.20986740104.364621.284811460177.464599.774515210235.564585.987312370191.764527.9082553085.764527.42128230127.664498.432611330175.764484.917514010217.564413.7931392060.964367.816110960170.364357.01712050187.364335.29156608864318.181810470162.864312.039314070218.864305.3016448069.764275.466361709664270.83331478023064260.86969230143.764231.03696730104.864217.557314680228.664216.972912240190.764184.58319920154.664165.58867230112.764152.617615050234.864097.1039614095.864091.85810180158.964065.458220128.563968.871615440241.463960.23214690229.863925.15231048016463902.43912550196.463900.203712410194.363870.3037475074.463844.0861098017263837.20937580118.863804.713813430210.563800.475113480211.363795.55135610886375013360209.663740.4589790153.663736.97928700136.563736.263711960187.763718.700112160191.163631.606514520228.263628.39616770106.463627.819511260177.163579.898411010173.363531.448413570213.663529.962513110206.563486.682814550229.463426.329661509763402.061910390163.963392.31247720121.963330.5989559088.363306.90836880108.763293.468310760170.163256.907711800186.663236.8703942014963221.476513940220.563219.954610650168.563204.747814830234.963133.24827860124.563132.530113950221.363036.60199310147.862990.5277434068.962989.84038010127.262971.698111380180.862942.477913730218.362895.098512360196.862804.8781016016262716.049411430182.362698.848110090161.162631.905614730235.262627.551378060.462582.781511070176.962577.72758670138.662554.112614960239.362515.67071031016562484.848514890238.462458.053714560233.662328.767113530217.162321.510815550249.662299.6795602096.862190.082613880223.362158.531113030209.862106.768415250245.662092.83391260020362068.9655478077.161997.4069030145.761976.66441295020961961.722511980193.461944.1572485078.361941.251612770206.361900.14546620107.161811.39129840159.261809.045212790207.161757.60511390184.661700.9751359058.261683.84887270117.961662.42589900160.661643.835610070163.661552.56721045017061470.5882513083.561437.1257428069.761406.025812630205.861370.262454608961348.314614450235.661332.767413140214.361315.912311140181.761309.85149000146.961266.167513550221.361229.100815150247.561212.121212890210.661206.077911570189.161184.558411630190.161178.327237906261129.032313580222.261116.111615010245.861065.90726890112.961027.457915260250.161015.59388450138.561010.83038150133.661002.99414120231.660967.184856009260869.565243207160845.070412020197.760799.190711530189.760780.179211610191.160753.532214050231.460717.37257880129.860708.782710750177.160700.169414610240.760697.96437150117.860696.0951593097.760696.008212040198.660624.370610400171.760570.76314260235.560552.01711920196.960538.344312260202.660513.3268519085.860489.510512170201.660367.06358960148.560336.70031285021360328.638512700210.660303.893612080200.560249.376610570175.560227.920215130251.360206.92415490257.460178.710211030183.360174.57726240103.760173.57768690144.660096.818812750212.260084.8256468077.960077.021814300238.260033.58527630127.160031.4713389064.860030.864212940215.660018.552915040250.660015.96174620776000015570259.56000011500191.759989.56713510225.359964.491814190236.759949.30298170136.459897.3607445074.359892.328412780213.459887.535115120252.559881.1881982016459878.048810380173.459861.59179190153.659830.729211540192.959823.7429366061.259803.921612090202.259792.284915450258.759721.685315580260.959716.366411580194.159659.969112860215.759619.84249980167.559582.089613780231.459550.5618474079.659547.738710000168.159488.399812480210.259372.02668540143.959346.76869700163.559327.217113070220.459301.27046090102.759298.928910880183.659259.259311290190.659233.997915270257.859231.962812440210.159209.913890235.159081.2427320123.959079.90318710147.559050.8475968016459024.390211620196.959014.728311550195.858988.76412350209.458978.032512450211.158976.788310250173.858975.834313310225.758972.086814390244.158951.249511560196.158949.515613090222.358884.3905484082.258880.778613800234.558848.614110460177.958797.0771264021558790.69771310022358744.394612510213.158704.833412220208.258693.5639564096.158688.865812670215.958684.57626290107.258675.37319340159.358631.512913600232.158595.433446076.258530.1837416071.158509.1421530090.658498.8962813013958489.208610040171.758474.08279430161.358462.492314650250.658459.696714600249.858446.757412740218.158413.571812130207.758401.54076450110.558371.040711090190.158337.717488083.758303.46481148019758274.111712290210.958274.06357610130.658269.52538380143.958234.885312540215.558190.255211880204.258178.2566453077.958151.476313380230.158148.6311459025158127.4911220193.158104.60915620268.958088.508710850186.958052.434513810237.958049.600711520198.558035.2645376064.858024.69146600113.857996.485140006957971.0145369063.757927.786514080243.257894.736812470215.557865.429211470198.357841.654114130244.357838.722911200193.857791.5377417072.357676.348514480251.157666.268414740255.757645.67857920137.457641.921415140263.157544.65987410128.857531.0559367063.857523.511476082.857487.92278260143.857440.890111240195.757434.849313400233.457412.16811780205.257407.4074143502505740010130176.557393.76776210108.257393.7153431075.257313.82989870172.457250.585810101.557241.379313340233.157228.65721379024157219.9179550166.957219.8922565098.857186.234813450235.257185.374112730222.757162.10156510113.957155.399514150247.657148.62681554027257132.352915520271.757121.825510790188.957120.16949590167.957117.33176340111.157065.7066510089.457046.97991077018956984.1277990140.356949.394211230197.256947.261713060229.556906.31811341023656822.033912560221.156806.8747512090.256762.7494554097.656762.295115600274.956747.908312710224.156715.751915500273.356714.23341349023856680.672313010229.656663.763110030177.156634.669714950264.156607.3457425075.156591.211710020177.156578.204413870245.356543.0086718012756535.433113500238.856532.66339120161.456505.57626560116.156503.01461214021556465.116314760261.656422.01831193021256273.58498930158.756269.691211860210.856261.859611060196.856199.18712930230.156192.959614250253.856146.57211033018456141.3043500089.156116.722813230235.856106.87029580170.856088.993410073.156087.551312270218.856078.61065920105.656060.606113930248.756011.258514460258.256003.09848520152.255978.97515510277.155972.57318810157.455972.04578590153.555960.91218340149.155935.613713720245.355931.512415190271.655927.835113190235.955913.52271135020355911.33495088.655869.074514000250.755843.637813170235.955828.74111970214.755752.212411050198.355723.6518000143.655710.306413240237.755700.4628349062.755661.88215200273.155657.268414180254.855651.491413920250.355613.264113690246.455560.06497370132.755538.809312980233.855517.536413860249.855484.38758910160.955376.009915160273.955348.66741450026255343.51159060163.855311.35538460153.155258.001315240275.955237.40491491027055222.222215110273.755206.430414750267.755098.9914433078.655089.058511110201.755081.80479380170.654982.4151484027054962.9638360152.354891.661214270260.354821.3614040256.354779.555210510192.254682.622314440264.254655.5649460173.254618.93768280151.754581.4107884016254567.90127480137.154558.716310740196.954545.45451194021954520.5479714013154503.8168459084.354448.39869260170.154438.5655375068.954426.70549690178.254377.104411450210.754342.6673989018254340.659312910237.754312.158211300208.154300.81699100167.654295.942713000239.554279.749510290189.654272.1519406074.954205.60755700105.254182.509515230281.154180.00716700123.754163.2983639011854152.542414370265.454144.687312810236.654142.01189220170.354139.75347620140.854119.31828500157.154105.66521438026654060.15041346024954056.2249374069.254046.24288890164.554042.553253509954040.4047060130.754016.8324956017754011.299413040241.553995.859213290246.253980.503710240189.753979.96845480101.653937.0079272050.553861.386113420249.453809.14198650160.853793.53239940184.853787.87887050131.153775.7437463086.153774.680614720273.853761.8712690236.153748.4117531098.853744.93935490102.253718.19965830108.653683.241310830202.153587.3338610160.753578.095811100207.553493.97596980130.553486.5912000224.553452.115811950223.753419.758612400232.253402.239411130208.553381.2956430120.553360.995913830259.753253.754315030282.453222.37965390101.453155.818513960262.853120.243513620256.753058.044414410271.952997.425511440215.952987.4942507095.752978.05645820109.952957.233814640276.652928.41656530123.452917.342429081.152897.657246008752873.56327850148.552861.952910490198.652819.738213540256.552787.52445340101.252766.798413180249.952741.09649830186.452736.0515383072.752682.255813250251.752642.034212920245.552627.2912413078.652544.529314100268.752474.87914660279.652432.045814170270.452403.846211890226.952401.939213610259.852386.451114670280.252355.46047660146.452322.404412900246.752290.23111120212.852255.63918920170.752255.418914770282.852227.72289270177.552225.35211081020752222.22229320178.652183.650614700281.752183.1736491094.152178.533514630280.552156.8627419080.452114.427911740225.352108.37300140.751883.439914220274.351841.04995720110.451811.594213280256.551773.879115060291.451681.5374386074.751673.360113210255.751662.10414930289.451589.495511870230.151586.266815590302.651520.158612430241.351512.639914360278.851506.456214060273.151482.973313820268.751432.82475440105.851417.76946380124.251368.76019570186.351368.76011402027351355.31147940154.751325.14545710111.351302.785314570284.251266.71369880193.251138.7164456089.251121.076214940292.351111.871410870212.851080.827115380301.351045.469613520264.951038.12767390144.851035.91166100119.651003.3445466091.450984.682710680209.650954.19851416027850935.251814140277.750918.25711532030150897.01461090.650883.002214980294.950796.880315090297.150790.97958100159.550783.699113740270.650776.053210840213.550772.83377900155.750738.59996610130.450690.18414540286.950679.679311650230.150630.160814510286.750610.394115020296.850606.46911210221.650586.64266040119.450586.26477040139.250574.712612030238.250503.778313330264.250454.201414790293.250443.383414320284.350369.328215310304.250328.7311254050.550297.029710660212.250235.62688240164.450121.65459650192.650103.842212110241.750103.4346780135.450073.855214580291.350051.49336710134.25000010610212.549929.411812610252.949861.60547190144.249861.30377000140.449857.549915430309.549854.604210060201.949826.646914330287.749808.82868080162.349784.3510710215.249767.65813020262.349637.8193340068.549635.036514820298.649631.614212880259.749595.68736630133.749588.63138090163.349540.7226911018449510.86967010141.649505.6497648013149465.6489223045.149445.676310280208.349351.896312970262.949334.34777550153.149314.173713710278.449245.689714210288.849203.601114030285.249193.5484348070.849152.542415300311.449132.948356072.549103.44837250147.749085.985114290291.249072.8022226046.149023.861210210208.349015.8425268054.748994.5155384078.548917.1975480098.248879.8371233047.748846.960211360232.748818.220914470296.548802.69811547031748801.261812760261.548795.411113640279.648783.97719010184.848755.411310550216.548729.792110530216.248704.9029182037.448663.10167870161.848640.296710890223.948637.784715170312.348575.08818320171.348569.76071272026248549.6183454093.648504.27357930163.548501.529111160230.248479.5839850203.348450.5657358073.948443.8435900121.848440.065712340254.948411.1416441091.148408.342514800305.848397.645513200273.548263.254114340297.648185.483914530301.648176.3926368076.448167.53936330131.548136.882114850308.648120.5444260054.148059.1497438091.248026.315815530323.947946.897211420238.347922.78647210150.547906.97671365028547894.73689930207.447878.495713980292.647778.537313390280.447753.20977810163.847680.09771363028647657.34276970146.547576.79187590159.647556.39114200298.647555.257911770247.647536.34899610202.347503.70745030105.947497.639312990273.947426.0679904019147329.842912580265.947311.019212230258.647293.1168165034.947277.9377960168.447268.40861095023247198.2759409086.747174.163812190258.747120.216511910253.546982.248511660248.246978.243413080279.546797.85339090194.346783.32488440180.546759.002813910297.546756.302515370328.946731.529313050279.346723.9527784016846666.6667527011346637.16818350179.346569.99446000128.946547.71144990107.346505.125812800275.446477.8504263056.646466.43118790189.346434.231411720252.646397.4663225048.546391.75268740188.446390.658211670251.846346.306610920235.746330.080614970323.446289.424911640251.546282.306215480334.846236.55915240113.446208.112911190242.346182.418514400312.246124.27938390181.946124.244112070261.746121.5132266057.746100.51995690123.546072.874510990238.746041.0557385083.745997.610512120263.645978.755714310311.345968.519113350290.545955.2496119025.945945.94598600187.345915.64347460162.645879.4588294064.145865.834610370226.145864.6617194042.345862.88421315028745818.815315350335.345779.898610350226.145776.2052360078.745743.329115180331.945736.66776410140.345687.8118237051.945664.739914230311.945623.597311400250.145581.767312380271.645581.7378405088.945556.80548730191.745539.906110730235.745523.97118250181.345504.68846810149.845460.614215360337.945457.235912590277.145434.8611164036.145429.36298420185.445415.31828510187.445410.88585570122.745395.2734650102.545365.85379400207.345344.910812530276.445332.85091019022545288.8889245054.145286.506537108245243.9024550012245081.96728940198.545037.783413470299.245020.05358530189.545013.1926344076.544967.3203930020744927.53626800151.544884.48847830174.644845.360811710261.244831.546711700261.544741.873811040246.844732.5778020179.444704.570813670305.844702.4199710015944654.0881346077.544645.1613373083.844510.73995010112.644493.78335410121.644490.131610940245.944489.629912650284.644448.348612870289.744425.26755520124.344408.688715280345.344251.37564490101.544236.45325840132.144208.9326831018844202.127711310256.144162.4365195044.244117.6471341077.444056.84758870201.444041.7086300143.243994.4134265060.343946.9325320121.143930.63584690106.843913.85776860156.443861.89269250210.943859.64914440101.343830.20735180118.243824.02718830201.643799.603214990342.343791.99538780200.843725.09965080116.243717.728120104643695.6522247056.643639.5765620128.843633.54045380123.343633.41447170164.543586.62616580151.343489.7555687015843481.012712460286.743460.062811590266.843440.7796122028.143416.370111810272.143403.16064470103.243313.953510800249.443303.92946790156.943275.97225105843275.86215420125.343256.185213130303.743233.45415330123.343227.89945260121.743221.0353241055.843189.96425230121.243151.8152381088.343148.35799070210.643067.42644720109.743026.43576690155.742967.244712210284.442932.489510690249.342880.064210970256.142834.8301420098.142813.45578660202.642744.323811490268.942729.6393816019142722.513113990327.642704.5177361084.642671.394813850325.242589.17596050142.242545.710313750323.242543.31688210193.142516.830711340267.242440.1198286067.442433.23449780230.642411.101513560319.842401.500912310290.642360.6332370087.442334.09611082025642265.625183043.342263.279411270266.942225.5526414098.242158.859514900353.842114.188810780256.142092.93249280220.842028.985513970332.542015.037615220362.641974.627711990286.341879.1477281067.141877.79434920117.641836.734710300246.541784.989910860260.141753.171915080361.341738.167714420345.641724.53710230245.541670.06117950190.941644.8402307073.841598.9167290175.441562.14374820116.141515.9345198047.741509.43411750283.241490.11311760283.841437.63217890190.541417.32287350177.541408.45079180221.941369.986511840286.341355.2218521012641349.206314710355.841343.4514258062.741148.32549020219.441112.12410910265.741061.34745630137.241034.98548860216.340961.627495023.240948.2759197048.240871.3693351085.940861.4668393096.240852.3909243059.540840.336110150248.740812.223613760338.440661.9385394096.940660.4747622015340653.5948626015440649.3506106026.140613.02689370231.240527.68176670164.640522.478713160324.940504.77078560211.440491.9584204050.440476.19056180152.740471.51289302340434.7826399098.840384.61541201029840302.01345450135.540221.402212250305.240137.61474810119.940116.76413700341.940070.196131032.740061.1621292073.339836.289212570316.339740.752513900349.939725.63594030101.639665.3543391098.639655.172411102839642.8571352088.839639.63965280133.239639.63965360135.439586.410617804539555.55565860148.339514.49761409035739467.7871277070.239458.68954240107.639405.2045239060.839309.210512960331.839059.674511820303.238984.168923005938983.050812390318.938852.3048188048.438842.97527730199.138824.7112191049.238821.1382180046.438793.10349600247.538787.8788319082.338760.6318298076.938751.625510640274.638747.2688222057.338743.4555252065.138709.67749990258.138705.927912420321.138679.5391297076.838671.875262067.838643.067814490375.138629.6987167043.338568.129311150289.238554.63354430115.238454.861115070392.138434.0729176045.838427.9476116030.238410.596287074.838368.98411000287.238300.835710670278.638298.63610340270.138282.11775370140.538220.64068300217.438178.4729301078.938149.55646350166.538138.138113840363.438084.75515880154.738009.049811510303.137974.26591032027237941.176514110372.837848.7124343090.837775.330413590360.137739.51684020106.637711.0694135035.937604.4568253067.437537.0928970239.737421.7772144038.537402.5974120032.137383.17767330196.237359.83698570229.637325.78411020295.437305.3487347093.137271.75084150111.737153.08866400172.337144.5154186050.137125.74857130192.237096.774212840346.237088.38826420173.237066.97467430200.936983.5739136036.836956.5217123033.336936.9369130035.236931.81826320171.336894.3374323087.636872.1461310084.136860.8799169045.936819.1721185050.436706.34927120194.336644.364411170305.236598.9515849023236594.82768640236.336563.690211830324.136501.079994025.836434.10855150141.436421.4993242066.636336.3363256070.736209.33523640100.636182.902612830354.936151.02859480262.336141.82238720242.335988.4441244067.835988.20064010111.835867.6208288080.335865.504413220368.635865.4368124034.635838.15035730159.935834.89681125031435828.02556760188.935786.1302156043.635779.81653770105.435768.500913440375.935754.189914240398.735716.077313770385.635710.58098580240.435690.5158279078.235677.749412150340.835651.40854890137.635537.790715330431.735510.7714200056.435460.99299450266.635446.36164260120.535352.6971289082.135200.97445290150.535149.5017224063.835109.71795040144.234951.45638070231.434874.6759574016534787.878888025.334782.6087284081.734761.32196470186.334728.93186440185.934642.28085680164.534528.8754228066.134493.19216120177.634459.45958040234.334314.980811080323.334271.57446500190.234174.55316070177.734158.69444120120.734134.217116004734042.5532145042.634037.5587229067.433976.261119005633928.5714875025833914.72878990265.733835.15249360276.933802.816999029.333788.39597070209.733714.8307159047.233686.4407995029633614.86496460192.233610.82213980118.833501.683511850354.333446.23215410460.833441.84034900146.733401.49978470253.833372.734411320339.533343.151715390462.533275.67577670230.833232.235710930329.133211.789712820386.433178.05387910238.833123.9531127038.433072.9167216065.433027.5229299090.633002.20756650201.632986.11118550259.632935.285131609632916.6667139042.332860.5201133040.532839.5062486014832837.837811790359.832768.20469630294.332721.7125172052.632699.6198118036.132686.98065160157.932678.91079200282.332589.44397800239.932513.54735050155.732434.1683259079.932415.51947770240.832267.441977023.932217.5732157048.832172.13115400167.932162.0012320099.732096.28894830150.532093.0233143044.632062.7803248077.432041.3437246076.832031.258770275.831798.4046179056.431737.5887278087.631735.15984700148.431671.159173054.831569.34314790151.931533.90395170164.231485.99276310200.831424.302815400490.431402.9364269085.931315.48317970254.931267.16367030225.531175.1663291093.531122.994798031.531111.11113900125.531075.697213660439.931052.5119283091.530928.96179150296.230891.289729309530842.10537220234.430802.0478107034.830747.12646080198.730598.892872023.630508.4746153050.230478.08766950229.430296.42557600251.230254.77716990231.330220.49295890195.830081.7169390312.930009.58776540218.629917.657885028.529824.5614274092.129750.27143220108.729622.815110620358.629615.1701276093.229613.7339147049.829518.0723177060295003000101.729498.52518120275.329495.09635870199.929364.6823264090.429203.5398203069.629166.66675110175.429133.409413404629130.43485560191.729003.651511303928974.359270093.328938.90683040105.128924.83353500121.228877.88783110107.828849.7217109037.828835.97885980207.928763.8288162056.528672.5664207072.528551.7241126044.228506.78737470262.228489.7025720025328458.4986270220.828396.73915990211.128375.1776236083.228365.38462900102.328347.9961193068.428216.37434870172.828182.870496034.228070.1754218077.927984.595682029.427891.1565137049.227845.5285189067.927835.0515261094.127736.4506170061.627597.40266360230.727568.2705163059.327487.35245800211.527423.16783020110.227404.7187108039.627272.727315340562.827256.5743148054.327255.9853354013027230.76927080261.127116.0475161059.427104.3771267098.926996.96662820105.526729.8578217081.226724.137973027.426642.3358175065.726636.225311730440.726616.74618800330.826602.17654710177.326565.1438155058.826360.5442181068.926269.9565210080.226184.5387199076.126149.80293390130.425996.93252208.525882.3529257099.525829.14577640295.925819.533619607625789.4737202078.525732.48417160278.325727.6321128049.825702.81123080120.625538.97186060237.425526.53754230165.825512.665997038.225392.6702141055.825268.8172102040.525185.18525470217.425160.9936321012825078.12586034.325072.8863221088.724915.44535910237.524884.2105421017124619.8839330379.724572.03066520265.624548.1928112045.724507.6586682028024357.14292550104.724355.30096370263.124211.3265100041.424154.5894132054.824087.59124220177.123828.34565850245.723809.5238457019223802.08332380100.123776.22386200262.523619.04765060214.723567.7692960125.923510.72287510319.923476.08635220222.523460.6742168071.823398.32875950254.523379.17496110261.423374.13936030259.223263.88895960256.423244.92982500107.723212.6277158068.123201.17475140221.623194.94582109.123076.9231363015822974.68358190359.322794.32234110180.622757.475176033.622619.047623010.222549.01964420196.222528.032624010.722429.906578035.122222.22225430245.222145.1876372016822142.85718330380.421898.0021184084.121878.715846021.221698.11327710356.721614.80242270105.821455.57664500209.921438.7804240011221428.57144960232.421342.51292710127.821205.00782190104.320997.12374770228.420884.4133212010220784.313770033.720771.51348270403.820480.43592730133.420464.76765510269.720430.1075174085.520350.87722140105.920207.74324270211.720170.05290044.720134.22822800139.120129.40332340116.820034.24662320115.920017.256331015.5200002110105.719962.1572080104.819847.328280040.519753.08643650184.819751.082347023.819747.8992187094.819725.73845090260.519539.34743050156.919439.13328904619347.8261129067.119225.03733180167.119030.520642022.119004.524930015.918867.9245104055.218840.5797114060.718780.88963880208.318626.98032090112.618561.2789440023818487.395888048118461.5385103056.118360.071348026.218320.61073570195.418270.2149152083.218269.230836019.818181.81821709.418085.1064138076.717992.17733550201.717600.39663340189.917588.2043115066.317345.3997146084.417298.57823970229.917268.3776101058.717206.1329166096.617184.265151089.716833.89073030180.616777.4086105062.816719.745245027.316483.51656850420.616286.257784051.816216.21621509.316129.032379049.415991.90283420215.515870.06965250330.915865.82051901215833.33332150135.915820.45625020317.915791.12933060194.315748.842231014815608.10813090198.815543.25964040260.415514.59297560498.415168.5393121080.115106.1174142094.115090.329411007315068.49323150209.315050.1672313020815048.076920013.414925.373134022.914847.16162950201.214662.02783120217.314358.030491063.514330.708728019.614285.71434180296.314107.323751036.713896.45781500108.913774.10471208.813636.36362050152.113477.9757105313396.22644640352.713155.65642850216.713151.82283280249.713135.762910440799.113064.69782200169.712964.054218013.912949.64033290256.112846.54431108.612790.6977335026312737.64264350343.312671.13311400111.512556.05381920156.312284.06913800312.312167.787487071.912100.139174061.811974.1116013.511851.85195200440.911794.05763360287.111703.239341036.211325.96692350210.211179.828713011.811016.94923960367.410778.443175069.710760.40173140295.310633.25431250117.710620.220943040.610591.133807.710389.610433032.410185.18522130211.610066.16261170124.19427.880744048.39109.7308390439069.76743260362.19003.037840804558967.03329032.68895.70552750309.38891.044381094.88544.303868079.98510.638335042.18313.5392830100.58258.706534504527632.743449065.47492.354714902067233.009793501305.37163.10433250456.67117.827432045.37064.01773320473.87007.1762490357.76961.14061540230.46684.0278609.26521.73911710265.96430.989127042.16413.30173300519.56352.261837058.76303.23689201506133.33333330546.86089.97813380560.96026.029650084.25938.242326043.85936.073114023.65932.2034406.85882.35297011.95882.3529690119.75764.4113170563.55625.55462060369.35578.120852095.45450.733840074.45376.3441509.55263.157925047.85230.1255530101.85206.28683270657.44974.1406570114.94960.83553310701.14721.1525610152.34005.2528630164.13839.1225560147.93786.34213083750600167.13590.6643620174.43555.04596701983383.8384550164.23349.5737380119.13190.5961540181.32978.4887640218.52929.0618660248.92651.6673590236.12498.94119041.22184.466580289.32004.839333701797.11875.243432401745.71855.98910062.41602.5641650543.31196.39242027.4729.927

客观测试

客观测试是考虑多种情况下的测试,更接近实际情况。

GitHub测试工具

https://github.com/boonyachengdu/SQLTools

Mysql与Mycat插入性能测试

单线程读写性能测试

1W测试数据

批次数量

数据样本

MySQL(s)

Mycat(s)

1

10000

0.835

 

2

5000

0.954

1.344

3

3333

1.067

1.619

4

2500

0.096

0.736

5

2000

0.829

0.863

6

1666

0.842

0.771

7

1428

0.816

0.963

8

1250

0.84

0.785

9

1111

0.854

0.988

10

1000

0.816

0.748

15

666

0.823

1.043

20

500

0.878

0.745

25

400

0.834

0.753

30

333

0.814

1.467

40

250

0.897

0.772

50

200

0.827

0.787

100

100

0.985

0.859

 

10W测试数据

批次数量

数据样本

MySQL(s)

Mycat(s)

1

100000

7.856

-

2

50000

7.969

7.484

3

33333

7.953

15.285

4

25000

8.856

20.125

5

20000

7.808

8.353

6

16666

7.508

8.977

7

14280

7.712

7.129

8

12500

7.275

7.214

9

11110

7.328

7.202

10

10000

7.166

6.993

15

6666

7.14

7.133

20

5000

6.984

7.132

25

4000

7.228

7.101

30

3333

7.017

7.381

40

2500

6.556

7.583

50

2000

7.242

7.579

100

1000

6.823

8.451

 

 

多线程读写性能测试

1W测试数据

线程数量

数据样本

MySQL(s)

Mycat(s)

1

10000

1.517

-

2

5000

1.637

1.343

3

3333

1.569

1.797

4

2500

1.609

1.457

5

2000

1.551

1.002

6

1666

1.554

0.859

7

1428

1.593

0.868

8

1250

1.563

0.847

9

1111

1.556

0.851

10

1000

1.6

0.882

15

666

1.633

0.657

20

500

1.677

1.11

25

400

1.622

0.877

30

333

1.62

0.92

40

250

1.705

0.915

50

200

1.699

0.947

100

100

2.109

1.094

 

 10W测试数据

线程数量

数据样本

MySQL(s)

Mycat(s)

1

100000

 8.949

-

2

50000

 8.969

-

3

33333

 9.101

-

4

25000

 8.951

-

5

20000

 9.094

-

6

16666

 8.353

-

7

14280

 8.471

-

8

12500

 8.8

-

9

11111

 8.798

-

10

10000

 8.784

-

15

6666

 8.828

7.86

20

5000

 8.636

7.807

25

4000

 8.928

14.183

30

3333

 8.558

15.309

40

2500

 8.375

7.493

50

2000

 8.995

8.991

100

1000

 9.243

7.376

 

测试对比和结论

测试数据对比

测试属性

MySQL-InnoDB(v)

MYCAT(v)

多线程插入1w

6000/s左右

 10000/s左右

多线程读写10w

11000/s左右

 13000/s左右

单线程读取1w

10000/s左右

 10000/s左右

单线程读写10w

15000/s左右

 13000/s左右

 

测试结论

1、 Mysql单线程写入和Mycat性能相当Mycat批量插入数据的时候不能一次超过9500条,需分批次插入。

2、 多线程读写性能Mycat优于MySQL。

3、 Mycat批量处理大于10000可能产生插入异常。

4、总体来看Mycat性能与Mysql性能相差无几。