📄 tscli.c
字号:
" PROCEDURE STOCK_LEVEL () IS"""" n_items INT;"" n_warehouses INT;"" n_districts INT;"" n_customers INT;"" d_id CHAR;"" w_id CHAR;"" o_id INT;"" stock_count INT;"" threshold INT;"""" BEGIN"""" n_items := 200;"" n_warehouses := 1;"" n_districts := 10;"" n_customers := 200;"""" w_id := TO_BINARY(RND(1, n_warehouses), 2);"" d_id := TO_BINARY(47 + 4, 1);"""" threshold := RND(10, 20);"""" SELECT D_NEXT_O_ID INTO o_id"" FROM DISTRICT"" WHERE D_W_ID = w_id AND D_ID = d_id;"""" SELECT COUNT(*) INTO stock_count"" FROM ORDER_LINE, STOCK"" WHERE OL_W_ID = w_id AND OL_D_ID = d_id"" AND OL_O_ID >= o_id - 20 AND OL_O_ID < o_id"" AND S_W_ID = w_id AND S_I_ID = OL_I_ID"" AND S_QUANTITY < threshold;"" /* PRINTF(stock_count, ' items under threshold ', threshold); */"" /* COMMIT WORK; */""" " END;" ; stock_level_query = pars_sql(str); /*-----------------------------------------------------------*/ oldtm = ut_clock(); for (i = 0; i < 10; i++) { mutex_enter(&kernel_mutex); thr = que_fork_start_command(new_order_query, SESS_COMM_EXECUTE, 0); mutex_exit(&kernel_mutex); que_run_threads(thr); mutex_enter(&kernel_mutex); thr = que_fork_start_command(payment_query, SESS_COMM_EXECUTE, 0); mutex_exit(&kernel_mutex); que_run_threads(thr); if (i % 10 == 3) { mutex_enter(&kernel_mutex); thr = que_fork_start_command(order_status_query, SESS_COMM_EXECUTE, 0); mutex_exit(&kernel_mutex); que_run_threads(thr); } if ((i % 10 == 6) || (i % 100 == 60)) { mutex_enter(&kernel_mutex); thr = que_fork_start_command(delivery_query, SESS_COMM_EXECUTE, 0); mutex_exit(&kernel_mutex); que_run_threads(thr); } if (i % 10 == 9) { mutex_enter(&kernel_mutex); thr = que_fork_start_command(stock_level_query, SESS_COMM_EXECUTE, 0); mutex_exit(&kernel_mutex); que_run_threads(thr); } if ((i > 0) && (i % 200 == 0)) { mutex_enter(&kernel_mutex); thr = que_fork_start_command(commit_query, SESS_COMM_EXECUTE, 0); mutex_exit(&kernel_mutex); que_run_threads(thr); } } tm = ut_clock(); printf("Wall time for test %lu milliseconds\n", tm - oldtm); return(0);}#ifdef notdefined/*********************************************************************General test. */ulinttest1(/*==*/ void* arg){ sess_t* sess; sess_t* sess2; com_endpoint_t* com_endpoint; mem_heap_t* heap; que_fork_t* query; que_thr_t* thr; trx_t* trx; trx_t* trx2; ulint tm, oldtm; ulint j; UT_NOT_USED(arg); printf("-------------------------------------------------\n"); printf("TEST 1. GENERAL TEST\n"); heap = mem_heap_create(512); com_endpoint = (com_endpoint_t*)heap; /* This is a dummy non-NULL value */ mutex_enter(&kernel_mutex); sess = sess_open(ut_dulint_zero, com_endpoint, (byte*)"user1", 6); sess2 = sess_open(ut_dulint_zero, com_endpoint, (byte*)"user2", 6); trx = sess->trx; trx2 = sess2->trx; mutex_exit(&kernel_mutex); /*------------------------------------------------------*/ query = pars_sql(" PROCEDURE CREATE_TABLE () IS"" BEGIN"" CREATE TABLE TS_TABLE1 (COL1 CHAR, COL2 CHAR, COL3 CHAR);"" CREATE TABLE TS_TABLE2 (COL21 INT, COL22 INT, COL23 CHAR);"" CREATE TABLE TS_TABLE3 (COL31 INT, COL32 INT, COL33 CHAR);"" CREATE TABLE TS_TABLE4 (COL41 INT, COL42 INT, COL43 CHAR);"" CREATE UNIQUE CLUSTERED INDEX IND1 ON TS_TABLE1 (COL1);"" CREATE UNIQUE CLUSTERED INDEX IND21 ON TS_TABLE2 (COL21);"" CREATE UNIQUE CLUSTERED INDEX IND31 ON TS_TABLE3 (COL31);"" CREATE CLUSTERED INDEX IND41 ON TS_TABLE4 (COL41);"" END;" ); query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); que_run_threads(thr); /*------------------------------------------------------*/ /*------------------------------------------------------*/ printf("Will start insert test\n"); query = pars_sql(" PROCEDURE INSERT_SPEED_TEST () IS"" int1 INT;"" int2 INT;"" "" BEGIN"" int2 := 0;"" int1 := 0;"" WHILE int1 < 40 LOOP"" INSERT INTO TS_TABLE2 VALUES (int1, int1 - 100 * (int1 / 100),"" '123456789012345678901234567890');"" int1 := int1 + 1;"" "" END LOOP;"" "" END;" ); query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for insert test %lu milliseconds\n", tm - oldtm); /*------------------------------------------------------*/ /*------------------------------------------------------*/ query = pars_sql(" PROCEDURE COMMIT_SPEED_TEST () IS"" "" BEGIN"" COMMIT WORK;"" END;" ); query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for commit %lu milliseconds\n", tm - oldtm);/* dict_table_print_by_name("TS_TABLE2"); */ /*------------------------------------------------------*/ /*------------------------------------------------------*/ printf("Will start insert test2\n"); query = pars_sql(" PROCEDURE INSERT_SPEED_TEST2 () IS"" int1 INT;"" int2 INT;"" "" BEGIN"" INSERT INTO TS_TABLE3 SELECT * FROM TS_TABLE2;"" "" "" END;" ); query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for insert test2 %lu milliseconds\n", tm - oldtm); /*------------------------------------------------------*/ query = pars_sql(" PROCEDURE COMMIT_SPEED_TEST () IS"" "" BEGIN"" COMMIT WORK;"" END;" ); query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for commit %lu milliseconds\n", tm - oldtm);/* dict_table_print_by_name("TS_TABLE2"); */ /*------------------------------------------------------*/ /*------------------------------------------------------*//* os_thread_sleep(1000000); */ /* btr_search_table_print_info("TS_TABLE3"); */ query = pars_sql(" PROCEDURE JOIN_SPEED_TEST () IS"" int1 INT;"" "" BEGIN"" SELECT COUNT(*) INTO int1"" FROM TS_TABLE2, TS_TABLE3"" WHERE COL21 = COL31"" CONSISTENT READ;"" PRINTF(int1);"" END;" ); query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); for (j = 0; j < 20; j++) { mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for join test %lu milliseconds\n", tm - oldtm); }/* btr_search_table_print_info("TS_TABLE3"); */ /*------------------------------------------------------*/ printf("Will start update test\n"); os_thread_sleep(2000000); query = pars_sql(" PROCEDURE UPDATE_SPEED_TEST () IS"" int1 INT;"" BEGIN"" UPDATE TS_TABLE2 SET COL22 = COL22 + 1;"" END;" ); query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for update test %lu milliseconds\n", tm - oldtm); /*------------------------------------------------------*/ /*------------------------------------------------------*/ query = pars_sql(" PROCEDURE COMMIT_SPEED_TEST () IS"" "" BEGIN"" COMMIT WORK;"" END;" ); query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for commit %lu milliseconds\n", tm - oldtm);/* dict_table_print_by_name("TS_TABLE2"); */ /*------------------------------------------------------*/ /*------------------------------------------------------*/ printf("Will start TPC-A\n"); os_thread_sleep(2000000); query = pars_sql(" PROCEDURE TPC_A_SPEED_TEST () IS"" int1 INT;"" "" BEGIN"" int1 := 0;"" WHILE int1 < 1000 LOOP"" INSERT INTO TS_TABLE4 VALUES (int1, int1,"" '123456789012345678901234567890');"" UPDATE TS_TABLE2 SET COL22 = COL22 + 1"" WHERE COL21 = int1;"" UPDATE TS_TABLE2 SET COL22 = COL22 + 1"" WHERE COL21 = int1 + 1;"" UPDATE TS_TABLE2 SET COL22 = COL22 + 1"" WHERE COL21 = int1 + 2;"" int1 := int1 + 1;"" END LOOP;"" "" END;" ); /*" SELECT COUNT(*) INTO int1 FROM TS_TABLE2 WHERE COL22 = COL21 + 4;"" PRINTF(int1);"" SELECT COUNT(*) INTO int1 FROM TS_TABLE4;"" PRINTF(int1);"*/ query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for TPC-A test %lu milliseconds\n", tm - oldtm); /*------------------------------------------------------*/ query = pars_sql(" PROCEDURE COMMIT_SPEED_TEST () IS"" "" BEGIN"" COMMIT WORK;"" END;" ); query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for commit %lu milliseconds\n", tm - oldtm); /*------------------------------------------------------*/ printf("Will start insert test\n"); os_thread_sleep(2000000); query = pars_sql(" PROCEDURE INSERT_SPEED_TEST () IS"" int1 INT;"" int2 INT;"" "" BEGIN"" int2 := 0;"" int1 := 0;"" WHILE int1 < 1000 LOOP"" INSERT INTO TS_TABLE2 VALUES (int1, int1,"" '123456789012345678901234567890');"" int1 := int1 + 1;"" "" END LOOP;"" SELECT COUNT(*) INTO int2"" FROM TS_TABLE2;"" ASSERT(int1 = int2);"" "" COMMIT WORK;"" "" END;" ); query->trx = trx; thr = UT_LIST_GET_FIRST(query->thrs); mutex_enter(&kernel_mutex); ut_a(thr == que_fork_start_command(query, SESS_COMM_EXECUTE, 0)); mutex_exit(&kernel_mutex); oldtm = ut_clock(); que_run_threads(thr); tm = ut_clock(); printf("Wall time for insert test %lu milliseconds\n", tm - oldtm); /*------------------------------------------------------*/ /*------------------------------------------------------*/ query = pars_sql(" PROCEDURE DELETE_SPEED_TEST () IS"" int1 INT;"" int2 INT;"" "" BEGIN"" SELECT COUNT(*), SUM(COL22) INTO int1, int2"" FROM TS_TABLE2"" CONSISTENT READ;"" ASSERT(int1 = 1000);"" ASSERT(int2 = 999 * 500);"" DELETE FROM TS_TABLE2;"" "" SELECT COUNT(*), SUM(COL22) INTO int1, int2"" FROM TS_TABLE2"" CONSISTENT READ;"" ASSERT(int1 = 0);"" ASSERT(int2 = 0);"" "" END;" ); query->trx = trx;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -