PC_DS是一个面向决策支持的基准,它对决策支持系统的几个普遍适用的方面进行建模,包括查询和数据维护等,使大数据系统等新兴技术能够执行基准测试。
下面是使用Halo数据库进行tpc_ds测试:
一、硬件环境
| 硬件 | 配置说明 |
| CPU | 8核 |
| 内存 | 30G |
| 磁盘 | HDD |
二、软件环境
内核版本:Linux version 4.19.90-2112.8.0.0131.oe1.x86_64 (abuild@ecs-obsworker-0009)
操作系统版本:openEuler 20.03 (LTS-SP3)
数据库版本:Halo14
JDK:openjdk version "1.8.0_342"
三、测试数据量
表名 | 行数 |
dbgen_version | 1 |
customer_address | 1000000 |
customer_demographics | 920800 |
date_dim | 73049 |
warehouse | 15 |
ship_mode | 20 |
time_dim | 86400 |
reason | 55 |
income_band | 20 |
item | 204000 |
store | 402 |
call_center | 30 |
customer | 2000000 |
web_site | 24 |
store_returns | 28795080 |
household_demographics | 7200 |
web_page | 2040 |
promotion | 1000 |
catalog_page | 20400 |
inventory | 399330000 |
web_returns | 7197670 |
web_sales | 72001237 |
catalog_sales | 143997065 |
store_sales | 287997024 |
catalog_returns | 14404374 |
四、测试结果
查询 | 查询时间(s) | 结果集条数 |
Q1 | 1.474371836 | 100 |
Q2 | 5.248865022 | 2513 |
Q3 | 2.823529951 | 100 |
Q4 | 20.43938962 | 100 |
Q5 | 5.722485413 | 100 |
Q6 | 1.965899463 | 52 |
Q7 | 3.080526323 | 100 |
Q8 | 1.219388388 | 10 |
Q9 | 6.505446106 | 1 |
Q10 | 1.770018226 | 100 |
Q11 | 10.19516734 | 100 |
Q12 | 0.627807381 | 100 |
Q13 | 3.386689383 | 1 |
Q14 | 32.10449074 | 100 |
Q15 | 3.497079891 | 100 |
Q16 | 2.737153952 | 1 |
Q17 | 4.514564955 | 43 |
Q18 | 2.296484154 | 100 |
Q19 | 2.381205743 | 100 |
Q20 | 1.051422094 | 100 |
Q21 | 1.039325083 | 100 |
Q22 | 22.65834912 | 100 |
Q23 | 264.9530284 | 1 |
Q24 | 5.850074447 | 13 |
Q25 | 3.588927754 | 13 |
Q26 | 2.19903759 | 100 |
Q27 | 3.75447413 | 100 |
Q28 | 4.9819624 | 1 |
Q29 | 2.705489884 | 27 |
Q30 | 0.620116871 | 100 |
Q31 | 3.72106489 | 275 |
Q32 | 1.09513664 | 1 |
Q33 | 2.766806948 | 100 |
Q34 | 1.487541183 | 39938 |
Q35 | 3.177182819 | 100 |
Q36 | 2.808412412 | 100 |
Q37 | 1.490769408 | 5 |
Q38 | 3.376507072 | 1 |
Q39 | 1.665285012 | 5212 |
Q40 | 2.165695476 | 100 |
Q41 | 0.218239598 | 100 |
Q42 | 1.197048006 | 11 |
Q43 | 1.72589322 | 88 |
Q44 | 2.143288197 | 10 |
Q45 | 0.836999237 | 100 |
Q46 | 2.384627812 | 100 |
Q47 | 12.68662432 | 100 |
Q48 | 2.72730093 | 1 |
Q49 | 4.644521382 | 100 |
Q50 | 2.267629625 | 100 |
Q51 | 11.99199352 | 100 |
Q52 | 1.277174474 | 100 |
Q53 | 1.429863936 | 100 |
Q54 | 2.04926817 | 10 |
Q55 | 1.235844824 | 100 |
Q56 | 2.506194958 | 100 |
Q57 | 4.784308094 | 100 |
Q58 | 2.665566539 | 100 |
Q59 | 8.627713045 | 100 |
Q60 | 2.667188642 | 100 |
Q61 | 0.214607842 | 1 |
Q62 | 0.903522766 | 100 |
Q63 | 1.411030413 | 100 |
Q64 | 10.25961121 | 311 |
Q65 | 5.777466328 | 100 |
Q66 | 2.102772477 | 15 |
Q67 | 58.93354591 | 100 |
Q68 | 5.438787386 | 100 |
Q69 | 2.167125926 | 100 |
Q70 | 2.996668056 | 20 |
Q71 | 3.735558356 | 69886 |
Q72 | 3.884010031 | 100 |
Q73 | 1.250841151 | 170 |
Q74 | 6.737521191 | 100 |
Q75 | 8.963137716 | 100 |
Q76 | 2.71223372 | 100 |
Q77 | 3.202710684 | 100 |
Q78 | 17.32437535 | 100 |
Q79 | 3.204982181 | 100 |
Q80 | 9.20944931 | 100 |
Q81 | 0.669349131 | 100 |
Q82 | 1.872621862 | 18 |
Q83 | 0.465300131 | 100 |
Q84 | 0.387935348 | 100 |
Q85 | 2.153715395 | 50 |
Q86 | 0.800680442 | 100 |
Q87 | 3.821555644 | 1 |
Q88 | 3.768383753 | 1 |
Q89 | 1.716424162 | 100 |
Q90 | 0.509178598 | 1 |
Q91 | 0.289546603 | 30 |
Q92 | 0.568539769 | 1 |
Q93 | 3.820629323 | 100 |
Q94 | 0.867012703 | 1 |
Q95 | 11.16765821 | 1 |
Q96 | 0.987290046 | 1 |
Q97 | 3.913152662 | 1 |
Q98 | 1.961875002 | 30573 |
Q99 | 1.542928235 | 100 |
710.928197 | 155110 |
五、环境准备
5.1 安装依赖包
yum install -y gcc make flex bison byacc git
5.2 解压TPC-DS安装包
unzip TPC-DS_tool_3.2.0rc1.zipcd /root/DSGen-software-code-3.2.0rc1/toolsmake
5.3 建数据生成目录
mkdir -p data/data_testmkdir -p data/data_test/logchown -R halo:halo data/data_testcp root/createtable.sql data/data_testunzip root/query.zip -d data/data_test/mkdir -p/data/data_test/query/log
5.4 数据库参数修改
(1)兼容模式改成:
postgresql
(2)设置以下c2存储引擎相关参数
enable_c2=onc2_max_memory=5GB # 根据实际内存大小设置,可以设置为内存的50%左右,对于TPCDS 100GB数据量,至少设置为5GB,否则某些语句会报内存不够c2_concurrency=8 #根据实际CPU数量设置c2_date_format = '%Y-%m-%d'alter database tpcds set enable_nestloop=off;alter database tpcds set enable_mergejoin=off;alter database tpcds set hash_mem_multiplier=2;
(3)创建tpcds数据库
create database tpcds;
(4)创建columnar扩展
\c tpcdscreate extension columnar;
(5) 使用c2存储引擎创建tpcds表
create table dbgen_version(dv_version varchar(16) ,dv_create_date date ,dv_create_time time ,dv_cmdline_args varchar(200)) using c2;create table customer_address(ca_address_sk integer not null,ca_address_id char(16) not null,ca_street_number char(10) ,ca_street_name varchar(60) ,ca_street_type char(15) ,ca_suite_number char(10) ,ca_city varchar(60) ,ca_county varchar(30) ,ca_state char(2) ,ca_zip char(10) ,ca_country varchar(20) ,ca_gmt_offset decimal(5,2) ,ca_location_type char(20)) using c2;create table customer_demographics(cd_demo_sk integer not null,cd_gender char(1) ,cd_marital_status char(1) ,cd_education_status char(20) ,cd_purchase_estimate integer ,cd_credit_rating char(10) ,cd_dep_count integer ,cd_dep_employed_count integer ,cd_dep_college_count integer) using c2;create table date_dim(d_date_sk integer not null,d_date_id char(16) not null,d_date date ,d_month_seq integer ,d_week_seq integer ,d_quarter_seq integer ,d_year integer ,d_dow integer ,d_moy integer ,d_dom integer ,d_qoy integer ,d_fy_year integer ,d_fy_quarter_seq integer ,d_fy_week_seq integer ,d_day_name char(9) ,d_quarter_name char(6) ,d_holiday char(1) ,d_weekend char(1) ,d_following_holiday char(1) ,d_first_dom integer ,d_last_dom integer ,d_same_day_ly integer ,d_same_day_lq integer ,d_current_day char(1) ,d_current_week char(1) ,d_current_month char(1) ,d_current_quarter char(1) ,d_current_year char(1)) using c2;create table warehouse(w_warehouse_sk integer not null,w_warehouse_id char(16) not null,w_warehouse_name varchar(20) ,w_warehouse_sq_ft integer ,w_street_number char(10) ,w_street_name varchar(60) ,w_street_type char(15) ,w_suite_number char(10) ,w_city varchar(60) ,w_county varchar(30) ,w_state char(2) ,w_zip char(10) ,w_country varchar(20) ,w_gmt_offset decimal(5,2)) using c2;create table ship_mode(sm_ship_mode_sk integer not null,sm_ship_mode_id char(16) not null,sm_type char(30) ,sm_code char(10) ,sm_carrier char(20) ,sm_contract char(20)) using c2;create table time_dim(t_time_sk integer not null,t_time_id char(16) not null,t_time integer ,t_hour integer ,t_minute integer ,t_second integer ,t_am_pm char(2) ,t_shift char(20) ,t_sub_shift char(20) ,t_meal_time char(20)) using c2;create table reason(r_reason_sk integer not null,r_reason_id char(16) not null,r_reason_desc char(100)) using c2;create table income_band(ib_income_band_sk integer not null,ib_lower_bound integer ,ib_upper_bound integer) using c2;create table item(i_item_sk integer not null,i_item_id char(16) not null,i_rec_start_date date ,i_rec_end_date date ,i_item_desc varchar(200) ,i_current_price decimal(7,2) ,i_wholesale_cost decimal(7,2) ,i_brand_id integer ,i_brand char(50) ,i_class_id integer ,i_class char(50) ,i_category_id integer ,i_category char(50) ,i_manufact_id integer ,i_manufact char(50) ,i_size char(20) ,i_formulation char(20) ,i_color char(20) ,i_units char(10) ,i_container char(10) ,i_manager_id integer ,i_product_name char(50)) using c2;create table store(s_store_sk integer not null,s_store_id char(16) not null,s_rec_start_date date ,s_rec_end_date date ,s_closed_date_sk integer ,s_store_name varchar(50) ,s_number_employees integer ,s_floor_space integer ,s_hours char(20) ,s_manager varchar(40) ,s_market_id integer ,s_geography_class varchar(100) ,s_market_desc varchar(100) ,s_market_manager varchar(40) ,s_division_id integer ,s_division_name varchar(50) ,s_company_id integer ,s_company_name varchar(50) ,s_street_number varchar(10) ,s_street_name varchar(60) ,s_street_type char(15) ,s_suite_number char(10) ,s_city varchar(60) ,s_county varchar(30) ,s_state char(2) ,s_zip char(10) ,s_country varchar(20) ,s_gmt_offset decimal(5,2) ,s_tax_precentage decimal(5,2)) using c2;create table call_center(cc_call_center_sk integer not null,cc_call_center_id char(16) not null,cc_rec_start_date date ,cc_rec_end_date date ,cc_closed_date_sk integer ,cc_open_date_sk integer ,cc_name varchar(50) ,cc_class varchar(50) ,cc_employees integer ,cc_sq_ft integer ,cc_hours char(20) ,cc_manager varchar(40) ,cc_mkt_id integer ,cc_mkt_class char(50) ,cc_mkt_desc varchar(100) ,cc_market_manager varchar(40) ,cc_division integer ,cc_division_name varchar(50) ,cc_company integer ,cc_company_name char(50) ,cc_street_number char(10) ,cc_street_name varchar(60) ,cc_street_type char(15) ,cc_suite_number char(10) ,cc_city varchar(60) ,cc_county varchar(30) ,cc_state char(2) ,cc_zip char(10) ,cc_country varchar(20) ,cc_gmt_offset decimal(5,2) ,cc_tax_percentage decimal(5,2)) using c2;create table customer(c_customer_sk integer not null,c_customer_id char(16) not null,c_current_cdemo_sk integer ,c_current_hdemo_sk integer ,c_current_addr_sk integer ,c_first_shipto_date_sk integer ,c_first_sales_date_sk integer ,c_salutation char(10) ,c_first_name char(20) ,c_last_name char(30) ,c_preferred_cust_flag char(1) ,c_birth_day integer ,c_birth_month integer ,c_birth_year integer ,c_birth_country varchar(20) ,c_login char(13) ,c_email_address char(50) ,c_last_review_date char(10)) using c2;create table web_site(web_site_sk integer not null,web_site_id char(16) not null,web_rec_start_date date ,web_rec_end_date date ,web_name varchar(50) ,web_open_date_sk integer ,web_close_date_sk integer ,web_class varchar(50) ,web_manager varchar(40) ,web_mkt_id integer ,web_mkt_class varchar(50) ,web_mkt_desc varchar(100) ,web_market_manager varchar(40) ,web_company_id integer ,web_company_name char(50) ,web_street_number char(10) ,web_street_name varchar(60) ,web_street_type char(15) ,web_suite_number char(10) ,web_city varchar(60) ,web_county varchar(30) ,web_state char(2) ,web_zip char(10) ,web_country varchar(20) ,web_gmt_offset decimal(5,2) ,web_tax_percentage decimal(5,2)) using c2;create table store_returns(sr_returned_date_sk integer ,sr_return_time_sk integer ,sr_item_sk integer not null,sr_customer_sk integer ,sr_cdemo_sk integer ,sr_hdemo_sk integer ,sr_addr_sk integer ,sr_store_sk integer ,sr_reason_sk integer ,sr_ticket_number bigint not null,sr_return_quantity integer ,sr_return_amt decimal(7,2) ,sr_return_tax decimal(7,2) ,sr_return_amt_inc_tax decimal(7,2) ,sr_fee decimal(7,2) ,sr_return_ship_cost decimal(7,2) ,sr_refunded_cash decimal(7,2) ,sr_reversed_charge decimal(7,2) ,sr_store_credit decimal(7,2) ,sr_net_loss decimal(7,2)) using c2;create table household_demographics(hd_demo_sk integer not null,hd_income_band_sk integer ,hd_buy_potential char(15) ,hd_dep_count integer ,hd_vehicle_count integer) using c2;create table web_page(wp_web_page_sk integer not null,wp_web_page_id char(16) not null,wp_rec_start_date date ,wp_rec_end_date date ,wp_creation_date_sk integer ,wp_access_date_sk integer ,wp_autogen_flag char(1) ,wp_customer_sk integer ,wp_url varchar(100) ,wp_type char(50) ,wp_char_count integer ,wp_link_count integer ,wp_image_count integer ,wp_max_ad_count integer) using c2;create table promotion(p_promo_sk integer not null,p_promo_id char(16) not null,p_start_date_sk integer ,p_end_date_sk integer ,p_item_sk integer ,p_cost decimal(15,2) ,p_response_target integer ,p_promo_name char(50) ,p_channel_dmail char(1) ,p_channel_email char(1) ,p_channel_catalog char(1) ,p_channel_tv char(1) ,p_channel_radio char(1) ,p_channel_press char(1) ,p_channel_event char(1) ,p_channel_demo char(1) ,p_channel_details varchar(100) ,p_purpose char(15) ,p_discount_active char(1)) using c2;create table catalog_page(cp_catalog_page_sk integer not null,cp_catalog_page_id char(16) not null,cp_start_date_sk integer ,cp_end_date_sk integer ,cp_department varchar(50) ,cp_catalog_number integer ,cp_catalog_page_number integer ,cp_description varchar(100) ,cp_type varchar(100)) using c2;create table inventory(inv_date_sk integer not null,inv_item_sk integer not null,inv_warehouse_sk integer not null,inv_quantity_on_hand integer) using c2;create table catalog_returns(cr_returned_date_sk integer ,cr_returned_time_sk integer ,cr_item_sk integer not null,cr_refunded_customer_sk integer ,cr_refunded_cdemo_sk integer ,cr_refunded_hdemo_sk integer ,cr_refunded_addr_sk integer ,cr_returning_customer_sk integer ,cr_returning_cdemo_sk integer ,cr_returning_hdemo_sk integer ,cr_returning_addr_sk integer ,cr_call_center_sk integer ,cr_catalog_page_sk integer ,cr_ship_mode_sk integer ,cr_warehouse_sk integer ,cr_reason_sk integer ,cr_order_number bigint not null,cr_return_quantity integer ,cr_return_amount decimal(7,2) ,cr_return_tax decimal(7,2) ,cr_return_amt_inc_tax decimal(7,2) ,cr_fee decimal(7,2) ,cr_return_ship_cost decimal(7,2) ,cr_refunded_cash decimal(7,2) ,cr_reversed_charge decimal(7,2) ,cr_store_credit decimal(7,2) ,cr_net_loss decimal(7,2)) using c2;create table web_returns(wr_returned_date_sk integer ,wr_returned_time_sk integer ,wr_item_sk integer not null,wr_refunded_customer_sk integer ,wr_refunded_cdemo_sk integer ,wr_refunded_hdemo_sk integer ,wr_refunded_addr_sk integer ,wr_returning_customer_sk integer ,wr_returning_cdemo_sk integer ,wr_returning_hdemo_sk integer ,wr_returning_addr_sk integer ,wr_web_page_sk integer ,wr_reason_sk integer ,wr_order_number bigint not null,wr_return_quantity integer ,wr_return_amt decimal(7,2) ,wr_return_tax decimal(7,2) ,wr_return_amt_inc_tax decimal(7,2) ,wr_fee decimal(7,2) ,wr_return_ship_cost decimal(7,2) ,wr_refunded_cash decimal(7,2) ,wr_reversed_charge decimal(7,2) ,wr_account_credit decimal(7,2) ,wr_net_loss decimal(7,2)) using c2;create table web_sales(ws_sold_date_sk integer ,ws_sold_time_sk integer ,ws_ship_date_sk integer ,ws_item_sk integer not null,ws_bill_customer_sk integer ,ws_bill_cdemo_sk integer ,ws_bill_hdemo_sk integer ,ws_bill_addr_sk integer ,ws_ship_customer_sk integer ,ws_ship_cdemo_sk integer ,ws_ship_hdemo_sk integer ,ws_ship_addr_sk integer ,ws_web_page_sk integer ,ws_web_site_sk integer ,ws_ship_mode_sk integer ,ws_warehouse_sk integer ,ws_promo_sk integer ,ws_order_number bigint not null,ws_quantity integer ,ws_wholesale_cost decimal(7,2) ,ws_list_price decimal(7,2) ,ws_sales_price decimal(7,2) ,ws_ext_discount_amt decimal(7,2) ,ws_ext_sales_price decimal(7,2) ,ws_ext_wholesale_cost decimal(7,2) ,ws_ext_list_price decimal(7,2) ,ws_ext_tax decimal(7,2) ,ws_coupon_amt decimal(7,2) ,ws_ext_ship_cost decimal(7,2) ,ws_net_paid decimal(7,2) ,ws_net_paid_inc_tax decimal(7,2) ,ws_net_paid_inc_ship decimal(7,2) ,ws_net_paid_inc_ship_tax decimal(7,2) ,ws_net_profit decimal(7,2)) using c2;create table catalog_sales(cs_sold_date_sk integer ,cs_sold_time_sk integer ,cs_ship_date_sk integer ,cs_bill_customer_sk integer ,cs_bill_cdemo_sk integer ,cs_bill_hdemo_sk integer ,cs_bill_addr_sk integer ,cs_ship_customer_sk integer ,cs_ship_cdemo_sk integer ,cs_ship_hdemo_sk integer ,cs_ship_addr_sk integer ,cs_call_center_sk integer ,cs_catalog_page_sk integer ,cs_ship_mode_sk integer ,cs_warehouse_sk integer ,cs_item_sk integer not null,cs_promo_sk integer ,cs_order_number bigint not null,cs_quantity integer ,cs_wholesale_cost decimal(7,2) ,cs_list_price decimal(7,2) ,cs_sales_price decimal(7,2) ,cs_ext_discount_amt decimal(7,2) ,cs_ext_sales_price decimal(7,2) ,cs_ext_wholesale_cost decimal(7,2) ,cs_ext_list_price decimal(7,2) ,cs_ext_tax decimal(7,2) ,cs_coupon_amt decimal(7,2) ,cs_ext_ship_cost decimal(7,2) ,cs_net_paid decimal(7,2) ,cs_net_paid_inc_tax decimal(7,2) ,cs_net_paid_inc_ship decimal(7,2) ,cs_net_paid_inc_ship_tax decimal(7,2) ,cs_net_profit decimal(7,2)) using c2;create table store_sales(ss_sold_date_sk integer ,ss_sold_time_sk integer ,ss_item_sk integer not null,ss_customer_sk integer ,ss_cdemo_sk integer ,ss_hdemo_sk integer ,ss_addr_sk integer ,ss_store_sk integer ,ss_promo_sk integer ,ss_ticket_number bigint not null,ss_quantity integer ,ss_wholesale_cost decimal(7,2) ,ss_list_price decimal(7,2) ,ss_sales_price decimal(7,2) ,ss_ext_discount_amt decimal(7,2) ,ss_ext_sales_price decimal(7,2) ,ss_ext_wholesale_cost decimal(7,2) ,ss_ext_list_price decimal(7,2) ,ss_ext_tax decimal(7,2) ,ss_coupon_amt decimal(7,2) ,ss_net_paid decimal(7,2) ,ss_net_paid_inc_tax decimal(7,2) ,ss_net_profit decimal(7,2)) using c2;
六、导入数据
COPYdbgen_version from '/data/data_test/dbgen_version.dat' with DELIMITER '|' NULL '' ;COPYcustomer_address from '/data/data_test/customer_address.dat' with DELIMITER '|' NULL '' ;COPYcustomer_demographics from '/data/data_test/customer_demographics.dat' with DELIMITER '|' NULL '' ;COPYdate_dim from '/data/data_test/date_dim.dat' with DELIMITER '|' NULL '' ;COPYwarehouse from '/data/data_test/warehouse.dat' with DELIMITER '|' NULL '' ;COPYship_mode from '/data/data_test/ship_mode.dat' with DELIMITER '|' NULL '' ;COPYtime_dim from '/data/data_test/time_dim.dat' with DELIMITER '|' NULL '' ;COPYreason from '/data/data_test/reason.dat' with DELIMITER '|' NULL '' ;COPYincome_band from '/data/data_test/income_band.dat' with DELIMITER '|' NULL '' ;COPYitem from '/data/data_test/item.dat' with DELIMITER '|' NULL '' ;COPYstore from '/data/data_test/store.dat' with DELIMITER '|' NULL '' ;COPYcall_center from '/data/data_test/call_center.dat' with DELIMITER '|' NULL '' ;COPYcustomer from '/data/data_test/tcustomer.dat' with DELIMITER '|' NULL '' ;COPYweb_site from '/data/data_test/web_site.dat' with DELIMITER '|' NULL '' ;COPYstore_returns from '/data/data_test/store_returns.dat' with DELIMITER '|' NULL '' ;COPYhousehold_demographics from '/data/data_test/household_demographics.dat' with DELIMITER '|' NULL '' ;COPYweb_page from '/data/data_test/web_page.dat' with DELIMITER '|' NULL '' ;COPYpromotion from '/data/data_test/promotion.dat' with DELIMITER '|' NULL '' ;COPYcatalog_page from '/data/data_test/catalog_page.dat' with DELIMITER '|' NULL '' ;COPYinventory from '/data/data_test/inventory.dat' with DELIMITER '|' NULL '' ;COPYcatalog_returns from '/data/data_test/catalog_returns.dat' with DELIMITER '|' NULL '' ;COPYweb_returns from '/data/data_test/web_returns.dat' with DELIMITER '|' NULL '' ;COPYweb_sales from '/data/data_test/web_sales.dat' with DELIMITER '|' NULL '' ;COPYcatalog_sales from '/data/data_test/catalog_sales.dat' with DELIMITER '|' NULL '' ;COPYstore_sales from '/data/data_test/store_sales.dat' with DELIMITER '|' NULL '' ;
七、执行tpcds测试语句,并记录时间
begin_time=`date +%s.%N`nohup bash -x root/query_exec.sh > data/data_test/query/log/query_exec.log 2>&1############脚本内容################################################ query_path='/data/data_test/query'# total_cost=0# for i in {1..99}# do#echo "begin run Q${i}, ${query_path}/Query${i}.sql , `date`"#begin_time=`date +%s.%N`#su - halo -c " psql -d oracle -f ${query_path}/Query${i}.sql > ${query_path}/log/log_query${i}_`date`.out "#rc=$?#end_time=`date +%s.%N`#cost=`echo "$end_time-$begin_time"|bc`#total_cost=`echo "$total_cost+$cost"|bc`#if [ $rc -ne 0 ] ; then# printf "run Q%s fail, cost: %.2f, totalCost: %.2f, `date`\n" $i $cost $total_cost#else# printf "run Q%s succ, cost: %.2f, totalCost: %.2f, `date`\n" $i $cost $total_cost#fi# done###############################################################################################################end_time=`date +%s.%N`




