测试案例与报告tpcc mycat测试报告42_第1页
测试案例与报告tpcc mycat测试报告42_第2页
测试案例与报告tpcc mycat测试报告42_第3页
测试案例与报告tpcc mycat测试报告42_第4页
测试案例与报告tpcc mycat测试报告42_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1前言进事务使用中mycat1前言进事务使用中mycat的人群更mycat。2测试方法概述2.1测试环境2.2硬件环境ipOS磁盘大小cpu内存网络172.17.209.104Red EnterpriseLinuxServer1.6TIntel(R)Xeon(R)CPUE5-2620v2 @2.10GHz32G172.17.209.103Red EnterpriseLinuxServerrelease6.31.6TIntel(R)Xeon(R)CPUE5-2620v2 @32G2.3软件环境2.10GHz172.17.209.102Red EnterpriseLinuxServer6.31.6TIntel(R)Xeon(R)CPUE5-2620v2 @2.10GHz32G172.17.209.1112.3软件环境2.10GHz172.17.209.102Red EnterpriseLinuxServer6.31.6TIntel(R)Xeon(R)CPUE5-2620v2 @2.10GHz32G172.17.209.111Red EnterpriseLinuxServer6.31.6TIntel(R)Xeon(R)CPUE5-2620v2 @2.10GHz32G172.17.209.69(虚拟机)Red EnterpriseLinuxServerrelease6.3500G88G2.4测试工具2.4.1TPCC介绍TPC(TracsactionProcessingPerformanceCouncil)事务处理性能是一个评价大型数据库系统软硬件性能的非性能。Tpcc测试结果主要关注两个指标:流量指标和性价比。流量指标ttpmC)系统每分钟能够执行多少个用户订单请求,即在执行支付(ymet、订单状态(-2.4测试工具2.4.1TPCC介绍TPC(TracsactionProcessingPerformanceCouncil)事务处理性能是一个评价大型数据库系统软硬件性能的非性能。Tpcc测试结果主要关注两个指标:流量指标和性价比。流量指标ttpmC)系统每分钟能够执行多少个用户订单请求,即在执行支付(ymet、订单状态(-tu(ery。每分钟能处理的新订单事务数:13.6个。Price/tpmC):系统价格(指在美国的报价)与流量指标的比值2.4.1.1Tpcc商业模型测试用到的模型是一个大型的批发销售公司,每个仓库负责10个区域的供货,每个区域为3000100,000种商品的库存发用户的增加,数据量也逐渐增加。商业模型示意图如下:,随着企业并序号软件名称版本用途备注1Jdk1.7.672Tpcc5.113Ganglia3.6.04Mycat1.3.02(2015-01-14)5Mysql5.6.192.4.1.2Tpcc表关系及数据量关系2.4.1.2Tpcc表关系及数据量关系2.4.1.3模拟事务新订单5-15件商品,创建新订单。支付操作采用随机的金额支付一笔订单,并作相应历史订单状态显示订单内每件商品的状态。发货。2.4.1.3模拟事务新订单5-15件商品,创建新订单。支付操作采用随机的金额支付一笔订单,并作相应历史订单状态显示订单内每件商品的状态。发货。随机选取一个发货包,更新被处理订单的用户帐户余额库存状态检查订单中所有货物的库存。2.4.1.4Tpcc客户端工具使用开源项目: mycat使用的是fork后的修对原项目修改的内容:,地址为 /wdw1206/tpcc。=mycat使用的是fork后的修对原项目修改的内容:,地址为 /wdw1206/tpcc。=forupdate*/SETUNIQUE_CHECKS=0")因为使用文件没法将表删除干净,外键约束和事务导致。(3erMana.tConnection(,o)改心跳语句,导致超时被服务端自动断开连接。忘服务端发JavaTPC-CThisprojectisaJavaimplementationoftheTPC-Cbenchmark.个性化修改内容:使用该项目并做了个性化修改,主要是加了数据库连接池(防止连接操作断开连接main(l参数检验提2.4.1.5TPCC测试结果如何分析?Javatpcc客户端输出结果形式如下:<RawResults>|NewOrder|sc:9826lt:0rt:0fl:0|Payment|sc:9813lt:0rt:0fl:0|OrderStat|sc:982lt:0rt:0fl:0|Delivery|sc:981lt:0rt:0fl:0|Slev|sc:982lt:0rt:0fl:0in120.889999sec.<RawResults2(sumver.)>|NewOrder|sc:9826lt:0rt:0fl:0|Payment|sc:9814lt:0rt:0fl:0|OrderStat|sc:982lt:0rt:0fl:0|Delivery|sc:982lt:0rt:0fl:0|Slev|sc:982lt:0rt:0fl:0<ConstraintCheck>(allmustbe[OK])[transactionpercentage]Payment:43.449192%(>=43.0%)[OK]Order-Status:4.348019%(>=4.0%)[OK]Delivery:4.343591%(>=4.0%)[OK]Stock-Level:4.348019%(>=4.0%)[OK][responsetime(atleast90%passed)]NewOrder:100.000000%[OK]Payment:100.000000%[OK]OrderStat:100.000000%[OK]Delivery:100.000000%[OK]Slev:100.000000%[OK]NewOrderTotal:9831PaymentTotal:9813OrderOrderStat:100.000000%[OK]Delivery:100.000000%[OK]Slev:100.000000%[OK]NewOrderTotal:9831PaymentTotal:9813OrderStatTotal:982DeliveryTotal:SlevTotal:982981<TpmC>4879.3115TpmC含释:New-OrderPaymentOrder-StatusDeliveryStock-Level:新订单:支付:订单:发货:库存|NewOrder|sc:9826lt:0rt:0fl:0成功、延迟、重试、失败)RAMP-UPTIME.(120sec.)--热身时间总结:Tpcc测试结果包含两个方面:1、事务通过。AllmasterbeOK.OKOK,就是通过,否则不通过。不通过的情况,javatpcc程序的肯定有什么报错信息,如果只是因为服务器太大导致的延迟或者重试,需要调整再测试,或者增强服务器的处理能力再试。<ConstraintCheck>(allmustbe[OK])[transactionpercentage]Payment:43.449192%(>=43.0%)[OK]Order-Status:4.348019%(>=4.0%)[OK]Delivery:4.343591%(>=4.0%)[OK]Stock-Level:4.348019%(>=4.0%)[OK][responsetime(atleast90%passed)]NewOrder:100.000000%[OK]Payment:100.000000%[OK]OrderStat:100.000000%[OK]Delivery:100.000000%[OK]Slev:100.000000%[OK]TpmC值越高越好。该指标越大越好,表示每分钟能处理新订单数。2.4.2Ganglia介绍主要是用来Delivery:100.000000%[OK]Slev:100.000000%[OK]TpmC值越高越好。该指标越大越好,表示每分钟能处理新订单数。2.4.2Ganglia介绍主要是用来本次没磁盘信息,由于主要测试事务的支持,没有极限测试。2.5测试方法TPC-C1020306090,160不同级别的数据量进 试。3测试过程3.1测试准备create_tables.sqladd_fkey_idx.sql3.5测试步骤。3.2Tpcc客户端程序验证mysql是否能跑通。mysqltpcc程序是否正确,经验证,正常。3.2.1验证结果通过3.3Tpcc客户端程序+mycat验证是否能跑通。3.3.1使用分片策略id取模分片。3.3.2验证结果通过3.4测试工具开发3.4.1测试tpcc_test.sh该执行前需要配置环境变量:vi/etc/profile增加以下内容:表名片段拆分规则拆分算法主键customer是c_w_idsharding_by_c_w_idmodc_iddistrict是d_w_idsharding_by_d_w_idmodhistory是sharding_by_h_w_idmoditem是globalnew_orders是no_w_idsharding_by_no_w_idmodorder_line是ol_w_idsharding_by_ol_w_idmodex_idorders3.2.1验证结果通过3.3Tpcc客户端程序+mycat验证是否能跑通。3.3.1使用分片策略id取模分片。3.3.2验证结果通过3.4测试工具开发3.4.1测试tpcc_test.sh该执行前需要配置环境变量:vi/etc/profile增加以下内容:表名片段拆分规则拆分算法主键customer是c_w_idsharding_by_c_w_idmodc_iddistrict是d_w_idsharding_by_d_w_idmodhistory是sharding_by_h_w_idmoditem是globalnew_orders是no_w_idsharding_by_no_w_idmodorder_line是ol_w_idsharding_by_ol_w_idmodex_idorders是o_w_idsharding_by_o_w_idmodstock是s_w_idsharding_by_s_w_idmodh_t_idwarehouse是w_idsharding_by_w_idmodw_idexport-1.0.0-SNAPSHOT-jar-with-dependencies.jarjavatpcc打包后的jar(打包使用命令:mvnpackageassembly:assembly,必须使用这样令,因为要把依赖的jar全部打进去)3.4.2mycat配置文件server.xmlschema.xml rule.xml3.5export-1.0.0-SNAPSHOT-jar-with-dependencies.jarjavatpcc打包后的jar(打包使用命令:mvnpackageassembly:assembly,必须使用这样令,因为要把依赖的jar全部打进去)3.4.2mycat配置文件server.xmlschema.xml rule.xml3.5测试步骤步骤:1database,33database好,否则mycat启动就会报错。2schema.xml、rule、server.xml,mycat。3、创建表。使用create_tables.sql。命令:execute_sqlcreate_tables.sql4、创建索引、外键命令:execute_sqladd_fkey_idx.sql5、LoadData。使用命令:javacom.codefutures.tpcc.TpccLoad-l"$tar_jdbc_url"-u${tar_db_user}-p${tar_db_pass}-mJDBC-w$num_wh-s1-i16、运行主测试程序。使用命令:javacom.codefutures.tpcc.Tpcc-l"$tar_jdbc_url"-u${tar_db_user}-p${tar_db_pass}-w$num_wh-c$num_con-r$ramp_up-t$duration7、收集数据(cpu_report、mem_report),填写测试报告。8、统计运行完成后的所有表的数。${tar_db_user}-p${tar_db_pass}9、Droptable。命令:javacom.codefutures.tpcc.util.DropTable-l"$tar_jdbc_url"-u${tar_db_user}-p${tar_db_pass}3.4.1测试 4测试结果4.1103分片(800M)Tpcc结果4.1.1.1Load数据Totalexecutiontime:7minute(s),264测试结果4.1103分片(800M)Tpcc结果4.1.1.1Load数据Totalexecutiontime:7minute(s),26second(s)(7.433minutes)real7m27.513suser2m18.231ssys0m5.540s4.1.1.2运行事务输出结果<RawResults>|NewOrder|sc:758579 lt:16 rt:0 fl:0|Payment|sc:758575 lt:13 rt:0 fl:0|OrderStat|sc:75862 lt:0 rt:0 fl:0|Delivery|sc:75860 lt:1 rt:0 fl:0|Slev|sc:75862 lt:0 rt:0 in1800.859009sec.10330表名条数最大单表数占用空间warehouse101000000800Mdistrict100customer300000history300000order300000new-order90000order-line3000000stock1000000item100000ver.)>|NewOrder|sc:758593 lt:16 rt:0 fl:0|Payment|sc:758590 lt:13 rt:0 fl:0|OrderStat|sc:75862 lt:0 rt:0 fl:0|Delivery|sc:75860 lt:1 rt:0 fl:0|Slev|sc:75862 lt:0 rt:0 fl:0<ConstraintCheck>(allmustbe[OK])[transactionpercentage]Payment:43.477880%(>=43.0%)[OK]Order-Status:4.347966%(>=4.0%)[OK]Delivery:4.347908%(>=4.0%)[OK]Stock-Level:4.347966%(>=4.0%)[OK][responsetime(atleast90%passed)]NewOrder:99.997891% [OK]Payment:99.998286% [OK]OrderStat:100.000000% Delivery:99.998682% [OK]Slev:100.000000% [OK]NewOrderTotal:758597758590StatTotal:75862DeliveryTotal:75861SlevTotal:75862<TpmC>25274.506TpmC4.1.2服务器消耗4.1.2.1内存4.1.2.2Cpu4.1.2服务器消耗4.1.2.1内存4.1.2.2Cpu4.2203分片(1.6G)Tpcc测试结果4.2.1.1Load数据Totalexecutiontime:14minute(s),42second(s)4.2203分片(1.6G)Tpcc测试结果4.2.1.1Load数据Totalexecutiontime:14minute(s),42second(s)(14.700minutes)real14m43.641suser4m22.802ssys0m10.028s4.2.1.2运行事务输出结果<RawResults>|NewOrder|sc:1414492 lt:0 rt:0 fl:0|Payment|sc:1414525 lt:0 rt:0 fl:0|OrderStat|sc:141455 lt:0 rt:0 fl:0|Delivery|sc:141454 lt:0 rt:0 fl:0|Slev|sc:141455 lt:0 rt:0 in3000.357910sec.ver.)>|NewOrder|sc:1414548 lt:0 rt:0 fl:0|Payment|sc:1414548 lt:0 rt:0 fl:020350表名条数最大单表数占用空间warehouse2020000001.6Gdistrict200customer600000history600000order600000new-order180000order-line6000000stock2000000item100000|OrderStat||OrderStat|sc:141455 lt:0 rt:0 fl:0|Delivery|sc:141455 lt:0 rt:0 fl:0|Slev|sc:141455 lt:0 rt:0 fl:0<ConstraintCheck>(allmustbe[OK])[transactionpercentage]Payment:43.478610%(>=43.0%)[OK]Order-Status:4.347932%(>=4.0%)[OK]Delivery:4.347901%(>=4.0%)[OK]Stock-Level:4.347932%(>=4.0%)[OK][responsetime(atleast90%passed)]NewOrder:100.000000% Payment:100.000000% [OK]OrderStat:100.000000% Delivery:100.000000% [OK]Slev:100.000000% [OK]NewOrderTotal:14144981414532StatTotal:141456DeliveryTotal:141455SlevTotal:141455<TpmC>28286.586TpmC4.2.2服务器消耗4.2.2.1内存4.2.2.2Cpu4.2.2服务器消耗4.2.2.1内存4.2.2.2Cpu4.3303分片(2.4G)Tpcc测试结果4.3.1.1Load数据Totalexecutiontime:21minute(s),52second(s)(21.867minutes)4.3303分片(2.4G)Tpcc测试结果4.3.1.1Load数据Totalexecutiontime:21minute(s),52second(s)(21.867minutes)real21m53.151suser6m33.593ssys0m14.685s4.3.1.2运行事务输出结果<RawResults>|NewOrder|sc:3488016 lt:0 rt:0 fl:0|Payment|sc:3488127 lt:0 rt:0 fl:0|OrderStat|sc:348819 lt:0 rt:0 fl:0|Delivery|sc:348815 lt:0 rt:0 fl:0|Slev|sc:348817 lt:0 rt:0 in7200.091797sec.ver.)>3032表名条数最大单表数占用空间warehouse3030000002.4Gdistrict300customer900000history900000order900000new-order270000order-line9000000stock3000000item100000|NewOrder|sc:3488189 lt:0 rt:0 fl:0|Payment|sc:3488183 lt:0 rt:0 fl:0|OrderStat||NewOrder|sc:3488189 lt:0 rt:0 fl:0|Payment|sc:3488183 lt:0 rt:0 fl:0|OrderStat|sc:348819 lt:0 rt:0 fl:0|Delivery|sc:348818 lt:0 rt:0 fl:0|Slev|sc:348818 lt:0 rt:0 fl:0<ConstraintCheck>(allmustbe[OK])[transactionpercentage]Payment:43.478782%(>=43.0%)[OK]Order-Status:4.347957%(>=4.0%)[OK]Delivery:4.347907%(>=4.0%)[OK]Stock-Level:4.347932%(>=4.0%)[OK][responsetime(atleast90%passed)]NewOrder:100.000000% Payment:100.000000% [OK]OrderStat:100.000000% Delivery:100.000000% [OK]Slev:100.000000% [OK]NewOrderTotal:34880183488127StatTotal:348819DeliveryTotal:348815SlevTotal:348817<TpmC>29066.443TpmC<RawResults>|NewOrder|sc:3468211 lt:44 rt:0fl:0|Payment|sc:3468351 lt:10 rt:0 fl:0|OrderStat|sc:346838 lt:2 rt:0 fl:0|Delivery|sc:346836 lt:4 rt:0 fl:0|Slev|sc:346842 lt:0 rt:0 in7200.250977sec.ver.)>|NewOrder|sc:3468373 lt:44 rt:0 fl:0|Payment|sc:3468394 lt:10 rt:0 fl:0|OrderStat|sc:346839 lt:2 rt:0 fl:0|Delivery|sc:346839 lt:4 rt:0 fl:0|Slev|sc:346842 lt:0 rt:0 fl:0<ConstraintCheck>(allmustbe[OK])[transactionpercentage]Payment:43.478764%(>=43.0%)[OK]Order-Status:4.347925%(>=Order-Status:4.347925%(>=4.0%)[OK]Delivery:4.347925%(>=4.0%)[OK]Stock-Level:4.347950%(>=4.0%)[OK][responsetime(atleast90%passed)]NewOrder:99.998731% [OK]Payment:99.999712% [OK]OrderStat:99.999423% Delivery:99.998847% [OK]Slev:100.000000% [OK]NewOrderTotal:34682553468361StatTotal:346840DeliveryTotal:346840SlevTotal:346842<TpmC>28901.117TpmC4.3.2运行完成时的数据量customer:900000district:300history:4417344item:100000new_orders:308800orders:4381780stock:3000000warehouse:304.3.3服务器消耗4.3.3.1内存4.3.3.2Cpu4.3.3服务器消耗4.3.3.1内存4.3.3.2Cpu4.4503分片(4G)Tpcc测试结果4.4.1.1Load数据Totalexecutiontime:36minute(s),30second(s)4.4503分片(4G)Tpcc测试结果4.4.1.1Load数据Totalexecutiontime:36minute(s),30second(s)(36.500minutes)real36m31.831suser10m47.751ssys0m25.417s4.4.1.2运行事务输出结果<RawResults>|NewOrder|sc:2635750 lt:0 rt:0 fl:0|Payment|sc:2635789 lt:0 rt:0 fl:0|OrderStat|sc:263589 lt:0 rt:0 fl:0|Delivery|sc:263588 lt:0 rt:0 fl:0|Slev|sc:263587 lt:0 rt:0 in3600.712891sec.ver.)>|NewOrder|sc:2635878 lt:0 rt:0 fl:0|Payment|sc:2635883 lt:0 rt:0 fl:0|OrderStat|sc:263589 lt:0 rt:0 fl:0|Delivery|sc:263590 lt:0 rt:0 fl:05031表名条数最大单表数占用空间warehouse5050000004Gdistrict500customer1500000history1500000order1500000new-order450000order-line15000000stock5000000item100000|Slev|sc:263588 lt:0 rt:0 fl:0<ConstraintCheck>|Slev|sc:263588 lt:0 rt:0 fl:0<ConstraintCheck>(allmustbe[OK])[transactionpercentage]Payment:43.478320%(>=43.0%)[OK]Order-Status:4.348007%(>=4.0%)[OK]Delivery:4.347974%(>=4.0%)[OK]Stock-Level:4.347974%(>=4.0%)[OK][responsetime(atleast90%passed)]NewOrder:100.000000% Payment:100.000000% [OK]OrderStat:100.000000% Delivery:100.000000% [OK]Slev:100.000000% [OK]NewOrderTotal:26357672635799StatTotal:263590DeliveryTotal:263588SlevTotal:263589<TpmC>43920.77TpmC4.4.2运行完成时数据量customer:1500000district:500history:4230851item:100000new_orders:487158orders:4203528stock:5000000warehouse:50142936404.4.3服务器消耗4.4.3.1内存4.4.3.2Cpu4.4.3服务器消耗4.4.3.1内存4.4.3.2Cpu4.5903分片(7.2G)Tpcc测试结果4.5.1.1Load数据Totalexecutiontime:65minute(s),29second(s)(65.4834.5903分片(7.2G)Tpcc测试结果4.5.1.1Load数据Totalexecutiontime:65minute(s),29second(s)(65.483minutes)real65m30.826suser19m19.772ssys0m44.829s4.5.1.2运行事务输出结果<RawResults>|NewOrder|sc:3037928 lt:74 rt:0 fl:0|Payment|sc:3038034 lt:37 rt:0 fl:0|OrderStat|sc:303821 lt:2 rt:0 fl:0|Delivery|sc:303814 lt:7 rt:0 fl:0|Slev|sc:303824 lt:0 rt:0 in3600.675049sec.ver.)>|NewOrder|sc:3038167 lt:74 rt:0 fl:09031表名条数最大单表数占用空间warehouse9090000007.2Gdistrict900customer2700000history2700000order2700000new-order810000order-line27000000stock9000000item100000|Payment|sc:3038203 lt:37 rt:0 fl:0|OrderStat|sc:303822 lt:2 rt:0 fl:0|Delivery||Payment|sc:3038203 lt:37 rt:0 fl:0|OrderStat|sc:303822 lt:2 rt:0 fl:0|Delivery|sc:303817 lt:7 rt:0 fl:0|Slev|sc:303824 lt:0 rt:0 fl:0<ConstraintCheck>(allmustbe[OK])[transactionpercentage]Payment:43.478403%(>=43.0%)[OK]Order-Status:4.348075%(>=4.0%)[OK]Delivery:4.348046%(>=4.0%)[OK]Stock-Level:4.348075%(>=4.0%)[OK][responsetime(atleast90%passed)]NewOrder:99.997564% [OK]Payment:99.998782% [OK]OrderStat:99.999342% Delivery:99.997696% [OK]Slev:100.000000% [OK]NewOrderTotal:30380103038080StatTotal:303824DeliveryTotal:303823SlevTotal:303824<TpmC>50624.027TpmC4.5.2运行完成时数据量customer:2700000district:900history:5846018item:100000new_orders:825502orders:5814463stock:9000000warehouse:90最大单表4.5.3服务器消耗4.5.3.1内存4.5.3.2Cpu4.5.3服务器消耗4.5.3.1内存4.5.3.2Cpu4.61603分片(12.8G)Tpcc测试结果4.6.1.1Load数据Totalexecutiontime:118minute(s),14second(s)4.61603分片(12.8G)Tpcc测试结果4.6.1.1Load数据Totalexecutiontime:118minute(s),14second(s)(118.233minutes)real118m16.010suser35m2.463ssys1m17.348s4.6.1.2运行事务输出结果<RawResults>|NewOrder|sc:11582090 lt:1690 rt:4 fl:0|Payment|sc:11583460 lt:556 rt:11 fl:0|OrderStat|sc:1158431 lt:28 rt:0 fl:0|Delivery|sc:1158285 lt:163 rt:1 fl:0|Slev|sc:1158460 lt:0 rt:0 in10800.097656sec.ver.)>|NewOrder|sc:11582935 lt:1691 rt:4 fl:0|Payment|sc:11584062 lt:559 rt:11 fl:0|OrderStat|sc:1158435 lt:28 rt:0 fl:0160,3,1003表名条数最大单表数占用空间warehouse12.8Gdistrict1600customer4800000history4800000order4800000new-order1440000order-line48000000stock16000000item100000|Delivery|sc:1158301 lt:163 rt:1 fl:0|Slev|sc:1158461 lt:0 rt:0 fl:0<ConstraintCheck>|Delivery|sc:1158301 lt:163 rt:1 fl:0|Slev|sc:1158461 lt:0 rt:0 fl:0<ConstraintCheck>(allmustbe[OK])[transactionpercentage]Payment:43.478378%(>=43.0%)[OK]Order-Status:4.348056%(>=4.0%)[OK]Delivery:4.348014%(>=4.0%)[OK]Stock-Level:4.348056%(>=4.0%)[OK][responsetime(atleast90%passed)]NewOrder:99.985411% [OK]Payment:99.995200% [OK]OrderStat:99.997583% Delivery:99.985929% [OK]Slev:100.000000% [OK]NewOrderTotal:1158379111584026StatTotal:1158460DeliveryTotal:1158449SlevTotal:1158461<TpmC>64353.81TpmC4.6.2运行完成时数据量customer:4800000district:1600history:16678455item:100000new_orders:1488531orders:16559431stock:16000000warehouse:160最大单表4.6.3服务器消耗4.6.3.1内存4.6.3服务器消耗4.6.3.1内存的内存快被用完。4.6.3.2Cpu10分片(12.8G)Tpcc测试结果4.7.1.1Load数据Totalexecutiontime:107minute(s),27second(s)10分片(12.8G)Tpcc测试结果4.7.1.1Load数据Totalexecutiontime:107minute(s),27second(s)(107.450minutes)real107m28.583suser34m26.455ssys1m17.180s4.7.1.2运行事务输出结果<RawResults>|NewOrder|sc:9193496 lt:4721 rt:0 fl:0|Payment|sc:9196429 lt:1972 rt:0 fl:0|OrderStat|sc:919685 lt:183 rt:0 fl:0|Delivery|sc:919288 lt:570 rt:0 fl:0|Slev|sc:919876 lt:0 rt:0 in10800.322266sec.ver.)>|NewOrder|sc:9194054 lt:4721 rt:0 fl:0|Payment|sc:9196770 lt:1972 rt:0 fl:0|OrderStat|sc:919686 lt:183 rt:0 fl:016010,1003表名条数最大单表数占用空间warehouse12.8Gdistrict1600customer4800000history4800000order4800000new-order1440000order-line48000000stock16000000item100000|Delivery|sc:919307 lt:570 rt:0 fl:0|Slev|sc:919876 lt:0 rt:0 fl:0<ConstraintCheck>|Delivery|sc:919307 lt:570 rt:0 fl:0|Slev|sc:919876 lt:0 rt:0 fl:0<ConstraintCheck>(allmustbe[OK])[transactionpercentage]Payment:43.478471%(>=43.0%)[OK]Order-Status:4.347979%(>=4.0%)[OK]Delivery:4.347932%(>=4.0%)[OK]Stock-Level:4.348017%(>=4.0%)[OK][responsetime(atleast90%passed)]NewOrder:99.948675% [OK]Payment:99.978561% [OK]OrderStat:99.980106% Delivery:99.938034% [OK]Slev:100.000000% [OK]NewOrderTotal:91982179198401StatTotal:919868DeliveryTotal:919858SlevTotal:919876<TpmC>51099.68TpmC4.7.2运行完成时数据量customer:4800000district:160015218552item:100000new_orders:1567206order_line:151155479orders:15114299warehouse:160最大单表4.7.3服务器消耗4.7.3.1内存4.7.3服务器消耗4.7.3.1内存的内存被用完,swap。4.7.3.2Cpu5测试总结4.7.3.2Cpu5测试总结户端编程注意避免可以使之通过。5.1mycatbug1、Select…forupdate(后面具体讲解怎么调整支持)3update5.2Mycat编程式事务 陷阱,如何避免?5.2.1Mycat编程式事务流程mysql事务还是有些区别的,主要是因为mycat内部涉及前端连接(FrontendConnection)和后端连接(BacendConnectio,而如果直连l,则只有接,不区分什么前端后端的。前mysql的接与前5.2Mycat编程式事务 陷阱,如何避免?5.2.1Mycat编程式事务流程mysql事务还是有些区别的,主要是因为mycat内部涉及前端连接(FrontendConnection)和后端连接(BacendConnectio,而如果直连l,则只有接,不区分什么前端后端的。前mysql的接与前,如果不开启事务,执行完语句后端连接马上就是放掉。5.2.2Mycat开启事务的条件Mycat开启事务有两个必要条件:。开启事务的表现为:前后端连接处于绑定状态,后端连接不后端连接。,必须调用mit()才canRunInReadDB==truesql是写语句也叫modifySQL,写语句包含哪些在此就不解释了。事务开启就是必须mit==false并且碰到写语句,只要执行过写语句,前后端连接就会一直绑定,知道执行mit()。Mt的特殊之处:如果一个事务内全部是普通lect语句(只读语句,即使设置了mit==false,对于是写语句也叫modifySQL,写语句包含哪些在此就不解释了。事务开启就是必须mit==false并且碰到写语句,只要执行过写语句,前后端连接就会一直绑定,知道执行mit()。Mt的特殊之处:如果一个事务内全部是普通lect语句(只读语句,即使设置了mit==false,对于mycat来说事务都是相当于不开启的,因为的条件。5.2.2.1如何控制事务开启?select语句,我也可以让它开启事务。应用程序客户端控制事务开启:mit(false)。consql语句类型。如/*!mycat:sql=updatedistrictsetd_name='lqz'WHEREd_id=1ANDd_w_id=4*/SELECTd_next_o_idFROMdistrictWHEREd_id=1ANDd_w_id=4FORUPDATE语句类型,使之开启事务锁住行。参数的值:通过路由器修改canRunInReadDB的值。如一个select语句,一般情况下true,我们可以在。这种方式的实用场景:select…forupdate语句需要开启事务,false即可开启事务。时将他的5.2.3Mycat事务范围dn1、dn2dn1、dn2的后端连接都会绑定,如果只路由到dn1,则连接到dn1的后端连接会绑定。5.2.3.1如何控制mycat事务范围?通过注解方式可以控制事务范围。如/*!mycatsqlselectcount(*fromitemforupdate*/SETUNIQUE_CHECKS=0。selectcount(*)fromupdate是可以开启事务的语句类型。6测试碰到的问题及解决方案6.1客户端连接超时Caused by: municationsException: The last packetsuccessfullyreceivedfromtheserver6测试碰到的问题及解决方案6.1客户端连接超时Caused by: municationsException: The last packetsuccessfullyreceivedfromtheserverwas41,330,583millisecondsago.Thelastpacketsentsuccessfullytotheserverwas41,330,582millisecondsago.islongerthantheserverconfiguredvalueof'wait_timeout'.Youshouldconsidereitherexpiringand/ortestingconnectionvaliditybeforeuseinyourapplication,increasingtheserverconfiguredvaluesforclienttimeouts,orusingtheConnector/Jconnectionproperty'autoReconnect=true'toavoidthisproblem.原因:客户端连接超时,连接被服务单主动断开。解决办法:客户端定时向服务端发心跳语句。客户端使用连接池,连接池设置如下参数:dataSource.setTestWhileIdle(true);dataSource.setValidationQuery("select1");dataSource.setMinEvictableIdleTimeMillis(300000);6.2Selectforupdate无法锁住行SELECT d_next_o_id FROM= 4 FOR UPDATE;district WHERE d_id =1 AND d_w_id语句无法锁住行并发,导致这个错:Causedby:Duplicateentry'4-10-3008'forkey'PRIMARY'atsun.reflect.NativeConstructorAccessorImpl.newInstance0(NativeMethod)atsun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)atsun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)atjava.lang.reflect.CpStmts[1]=prepareStatement("SELECTd_next_o_id,d_taxFROMdistrictWHEREd_id=?ANDd_w_id=?FORUPDATE");pStmts[2]=prepareStatement("UPDATEdistrictSETd_next_o_id=?+1WHEREd_id=?pStmts[2]=prepareStatement("UPDATEdistrictSETd_next_o_id=?+1WHEREd_id=?ANDd_w_id=?");…没有加锁,就会导致主键重复。1mycatcanRunInReadDB参数,这个参数能不。类中if(mysqlSelectQuery.isForUpdate()){rrs.changeCanRunInReadDB(false);}2SELECT d_next_o_id FROMdistrict WHERE d_id =1 AND d_w_id= 4 FOR UPDATE;(/*!mycat:sqlUPDATEdistrictSETd_next_o_id1WHEREd_idANDd_w_id*/当然,这里的?必须替换成具体值,否则无法找到准确的分片)。updateupdateB参数会自动设置成,ct就,就会使行6.3多线程update同全局表出现数据库死锁前提是带事务的连接中(mit(false);)update全局表,实际上这个场景update语句,在多线程并发操作时会死锁。重现方式:mycat中配置一个全局表,至少2个节点(越多越容易重现50(线程越多越容易重现DistributeRowUpda测试代码:6.3.1死锁原因分析6.3.1.1死锁场景为简化场景易于使大家理解,全局表节点数和线程数都用最少的数量。设全局表dn1,dn2,Schema.xml中配置为:<tablename="item"6.3.1死锁原因分析6.3.1.1死锁场景为简化场景易于使大家理解,全局表节点数和线程数都用最少的数量。设全局表dn1,dn2,Schema.xml中配置为:<tablename="item"dataNode="dn1,dn2" type="global"/>item(商6.3.1.2死锁流程Java代码步骤:mit(false);=conn.createStatement();statement.execute("updateitemseti_data='test'wherei_id=1");mit();8、wai流程:1、Thread1updatedn12、Dn1update(dn1commit,update语句发过来都会阻塞)3、Thread2updatedn1Thread14、Thread2dn1updateThread1update住了,只能等待Thread1commit锁5、Thread2updatedn2(Thread1)6、Dn1update(dn1commit,update语句发过来都会阻塞)7、Thread1updatedn28、Thread1dn2updateThread2update住了,只能等待4、Thread2dn1updateThread1update住了,只能等待Thread1commit锁5、Thread2updatedn2(Thread1)6、Dn1update(dn1c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论