⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tsbtrins.c

📁 Mysql for Windows最新源码
💻 C
📖 第 1 页 / 共 2 页
字号:
	mem_heap_t*	heap;	que_fork_t*	fork;	dict_table_t*	table;	que_thr_t*	thr;	trx_t*		trx;	ulint		i;	byte		buf[100];	ins_node_t*	node;	ulint		count = 0;	ulint		rnd;	dtuple_t*	row;	dict_index_t*	index;/*	dict_tree_t*	tree;	dtuple_t*	entry;	btr_pcur_t	pcur;	mtr_t		mtr; */		printf("-------------------------------------------------\n");	printf("TEST 2.1. MASSIVE ASCENDING INSERT\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);		trx = sess->trx;	mutex_exit(&kernel_mutex);loop:	ut_a(trx_start(trx, ULINT_UNDEFINED));		/*-------------------------------------*/	/* MASSIVE INSERT */	fork = que_fork_create(NULL, NULL, QUE_FORK_INSERT, heap);	fork->trx = trx;	thr = que_thr_create(fork, fork, heap);	table = dict_table_get("TS_TABLE1", trx);	row = dtuple_create(heap, 3 + DATA_N_SYS_COLS);	dict_table_copy_types(row, table);	node = ins_node_create(fork, thr, row, table, heap);		thr->child = node;	row_ins_init_sys_fields_at_sql_compile(node->row, node->table, heap);	row_ins_init_sys_fields_at_sql_prepare(node->row, node->table, trx);	node->init_all_sys_fields = FALSE;	mutex_enter(&kernel_mutex);		que_graph_publish(fork, trx->sess);	trx->graph = fork;	mutex_exit(&kernel_mutex);	rnd = 0;	log_print();		oldtm = ut_clock();	for (i = 0; i < *((ulint*)arg); i++) {		dtuple_gen_test_tuple3(row, rnd, DTUPLE_TEST_FIXED30, buf);		mutex_enter(&kernel_mutex);			ut_a(		thr == que_fork_start_command(fork, SESS_COMM_EXECUTE, 0));		mutex_exit(&kernel_mutex);		que_run_threads(thr);		if (i % 5000 == 0) {			/* ibuf_print(); */			/* buf_print(); */			/* buf_print_io(); */			/*			tm = ut_clock();			printf("Wall time for %lu inserts %lu milliseconds\n",							i, tm - oldtm); */		}		rnd = rnd + 1;	}	tm = ut_clock();	printf("Wall time for %lu inserts %lu milliseconds\n", i, tm - oldtm);	log_print();/*	dict_table_print_by_name("TS_TABLE1"); *//*	ibuf_print(); */	index = index;	index = dict_table_get_first_index(table);	if (zero) {		btr_search_index_print_info(index);	}	btr_validate_tree(dict_index_get_tree(index));	#ifdef notdefined	index = dict_table_get_next_index(index);	if (zero) {		btr_search_index_print_info(index);	}	btr_validate_tree(dict_index_get_tree(index));	index = dict_table_get_next_index(index);/*	btr_search_index_print_info(index); */	btr_validate_tree(dict_index_get_tree(index));/*	dict_table_print_by_name("TS_TABLE1"); */	/* Check inserted entries */	btr_search_print_info();	entry = dtuple_create(heap, 1);	dtuple_gen_search_tuple3(entry, 0, buf);	mtr_start(&mtr);		index = dict_table_get_first_index(table);	tree = dict_index_get_tree(index);	btr_pcur_open(index, entry, PAGE_CUR_L, BTR_SEARCH_LEAF, &pcur, &mtr);	ut_a(btr_pcur_is_before_first_in_tree(&pcur, &mtr));	for (i = 0; i < *((ulint*)arg); i++) {		ut_a(btr_pcur_move_to_next(&pcur, &mtr));		dtuple_gen_search_tuple3(entry, i, buf);		ut_a(0 == cmp_dtuple_rec(entry, btr_pcur_get_rec(&pcur)));	}		ut_a(!btr_pcur_move_to_next(&pcur, &mtr));	ut_a(btr_pcur_is_after_last_in_tree(&pcur, &mtr));	btr_pcur_close(&pcur);	mtr_commit(&mtr);		printf("Validating tree\n");	btr_validate_tree(tree);	printf("Validated\n");#endif	/*-------------------------------------*/	/* ROLLBACK */	#ifdef notdefined/*	btr_validate_tree(tree); */	fork = que_fork_create(NULL, NULL, QUE_FORK_EXECUTE, heap);	fork->trx = trx;	thr = que_thr_create(fork, fork, heap);	thr->child = roll_node_create(fork, thr, heap);	mutex_enter(&kernel_mutex);		que_graph_publish(fork, trx->sess);	trx->graph = fork;	ut_a(thr == que_fork_start_command(fork, SESS_COMM_EXECUTE, 0));		mutex_exit(&kernel_mutex);	oldtm = ut_clock();	que_run_threads(thr);	tm = ut_clock();	printf("Wall time for rollback of %lu inserts %lu milliseconds\n",		i, tm - oldtm);	os_thread_sleep(1000000);/*	dict_table_print_by_name("TS_TABLE1"); */	dtuple_gen_search_tuple3(entry, 0, buf);	mtr_start(&mtr);		btr_pcur_open(index, entry, PAGE_CUR_L, BTR_SEARCH_LEAF, &pcur, &mtr);	ut_a(btr_pcur_is_before_first_in_tree(&pcur, &mtr));	ut_a(!btr_pcur_move_to_next(&pcur, &mtr));		ut_a(btr_pcur_is_after_last_in_tree(&pcur, &mtr));	btr_pcur_close(&pcur);	mtr_commit(&mtr);	btr_search_print_info();#endif	/*-------------------------------------*/	/* COMMIT */	fork = que_fork_create(NULL, NULL, QUE_FORK_EXECUTE, heap);	fork->trx = trx;	thr = que_thr_create(fork, fork, heap);	thr->child = commit_node_create(fork, thr, heap);	mutex_enter(&kernel_mutex);		que_graph_publish(fork, trx->sess);	trx->graph = fork;	ut_a(thr == que_fork_start_command(fork, 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);	/*-------------------------------------*/	count++;/*	btr_validate_tree(tree); */	if (count < 1) {		goto loop;	}	mem_heap_free(heap);	return(0);}/********************************************************************Main test function. */void main(void) /*======*/{	ulint	tm, oldtm;	os_thread_id_t	id[10];	ulint	n1000[10];	ulint	i;	ulint	n5000	= 500;	ulint	n2;/*	buf_debug_prints = TRUE; */	log_do_write = TRUE;		srv_boot("initfile");	os_aio_init(576, 9, 100);	fil_init(25);	buf_pool_init(POOL_SIZE, POOL_SIZE);	fsp_init();	log_init();	lock_sys_create(1024);	create_files();	init_spaces();	sess_sys_init_at_db_start();		trx_sys_create();		dict_create();/*	os_thread_sleep(500000); */	oldtm = ut_clock();		ut_rnd_set_seed(19);	test1(NULL);	/*	for (i = 0; i < 2; i++) {		n1000[i] = i;		id[i] = id[i];		os_thread_create(test10mt, n1000 + i, id + i);	}*/	i = 4;		n1000[i] = i;	id[i] = id[i];/*	os_thread_create(test10_4, n1000 + i, id + i); */	i = 5;	/*	test10mt(&i);	i = 6;	test10mt(&i);	trx_purge();	printf("%lu pages purged\n", purge_sys->n_pages_handled);		dict_table_print_by_name("TS_TABLE1"); *//*	os_thread_create(test_measure_cont, &n3, id + 0); *//*	mem_print_info(); */	/*	dict_table_print_by_name("TS_TABLE1"); */	log_flush_up_to(ut_dulint_zero);	os_thread_sleep(500000);	n2 = 10000;	test2_1(&n2);/*	test9A(&n2);	test9(&n2); */	/*	test6(&n2); *//*	test2(&n2); *//*	test2_2(&n2); *//*	mem_print_info(); */	for (i = 0; i < 2; i++) {		n1000[i] = 1000 + 10 * i;		id[i] = id[i];/*		os_thread_create(test2mt, n1000 + i, id + i);		os_thread_create(test2_1mt, n1000 + i, id + i);		os_thread_create(test2_2mt, n1000 + i, id + i); */	}	n2 = 2000;/*	test2mt(&n2); *//*	buf_print();	ibuf_print();	rw_lock_list_print_info();	mutex_list_print_info();		dict_table_print_by_name("TS_TABLE1"); *//*	mem_print_info(); */		n2 = 1000;/*	test4_1();	test4_2();	for (i = 0; i < 2; i++) {		n1000[i] = i;		id[i] = id[i];		os_thread_create(test4mt, n1000 + i, id + i);	}	n2 = 4;	test4mt(&n2);	test4mt(&n2);	test4_2();	lock_print_info(); *//*	test7(&n2); *//*	os_thread_sleep(25000000); */	tm = ut_clock();	printf("Wall time for test %lu milliseconds\n", tm - oldtm);	printf("TESTS COMPLETED SUCCESSFULLY!\n");} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -