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

📄 db_stat.c

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 C
📖 第 1 页 / 共 3 页
字号:
			break;		case REGION_TYPE_TXN:			lable = "Txn";			break;		case INVALID_REGION_TYPE:		default:			lable = "Invalid";			break;		}		printf("%s Region: %d.\n", lable, rp->id);		dl_bytes("Size", (u_long)0, (u_long)0, (u_long)rp->size);		printf("%ld\tSegment ID.\n", rp->segid);		dl("Locks granted without waiting.\n",		    (u_long)rp->mutex.mutex_set_nowait);		dl("Locks granted after waiting.\n",		    (u_long)rp->mutex.mutex_set_wait);	}	return (0);}/* * btree_stats -- *	Display btree/recno statistics. */intbtree_stats(dbenv, dbp, msp, fast)	DB_ENV *dbenv;	DB *dbp;	DB_BTREE_STAT *msp;	int fast;{	static const FN fn[] = {		{ BTM_DUP,	"duplicates" },		{ BTM_FIXEDLEN,	"fixed-length" },		{ BTM_RECNO,	"recno" },		{ BTM_RECNUM,	"record-numbers" },		{ BTM_RENUMBER,	"renumber" },		{ BTM_SUBDB,	"multiple-databases" },		{ 0,		NULL }	};	DB_BTREE_STAT *sp;	int ret;	COMPQUIET(dbenv, NULL);	if (msp != NULL)		sp = msp;	else if ((ret = dbp->stat(dbp, &sp, fast)) != 0) {		dbp->err(dbp, ret, "DB->stat");		return (1);	}	printf("%lx\tBtree magic number.\n", (u_long)sp->bt_magic);	printf("%lu\tBtree version number.\n", (u_long)sp->bt_version);	prflags(sp->bt_metaflags, fn);	if (dbp->type == DB_BTREE) {#ifdef NOT_IMPLEMENTED		dl("Maximum keys per-page.\n", (u_long)sp->bt_maxkey);#endif		dl("Minimum keys per-page.\n", (u_long)sp->bt_minkey);	}	if (dbp->type == DB_RECNO) {		dl("Fixed-length record size.\n", (u_long)sp->bt_re_len);		if (isprint(sp->bt_re_pad) && !isspace(sp->bt_re_pad))			printf("%c\tFixed-length record pad.\n",			    (int)sp->bt_re_pad);		else			printf("0x%x\tFixed-length record pad.\n",			    (int)sp->bt_re_pad);	}	dl("Underlying database page size.\n", (u_long)sp->bt_pagesize);	dl("Number of levels in the tree.\n", (u_long)sp->bt_levels);	dl(dbp->type == DB_BTREE ?	    "Number of unique keys in the tree.\n" :	    "Number of records in the tree.\n", (u_long)sp->bt_nkeys);	dl("Number of data items in the tree.\n", (u_long)sp->bt_ndata);	dl("Number of tree internal pages.\n", (u_long)sp->bt_int_pg);	dl("Number of bytes free in tree internal pages",	    (u_long)sp->bt_int_pgfree);	printf(" (%.0f%% ff).\n",	    PCT(sp->bt_int_pgfree, sp->bt_int_pg, sp->bt_pagesize));	dl("Number of tree leaf pages.\n", (u_long)sp->bt_leaf_pg);	dl("Number of bytes free in tree leaf pages",	    (u_long)sp->bt_leaf_pgfree);	printf(" (%.0f%% ff).\n",	    PCT(sp->bt_leaf_pgfree, sp->bt_leaf_pg, sp->bt_pagesize));	dl("Number of tree duplicate pages.\n", (u_long)sp->bt_dup_pg);	dl("Number of bytes free in tree duplicate pages",	    (u_long)sp->bt_dup_pgfree);	printf(" (%.0f%% ff).\n",	    PCT(sp->bt_dup_pgfree, sp->bt_dup_pg, sp->bt_pagesize));	dl("Number of tree overflow pages.\n", (u_long)sp->bt_over_pg);	dl("Number of bytes free in tree overflow pages",	    (u_long)sp->bt_over_pgfree);	printf(" (%.0f%% ff).\n",	    PCT(sp->bt_over_pgfree, sp->bt_over_pg, sp->bt_pagesize));	dl("Number of pages on the free list.\n", (u_long)sp->bt_free);	free(sp);	return (0);}/* * hash_stats -- *	Display hash statistics. */inthash_stats(dbenv, dbp, fast)	DB_ENV *dbenv;	DB *dbp;	int fast;{	static const FN fn[] = {		{ DB_HASH_DUP,	"duplicates" },		{ DB_HASH_SUBDB,"multiple-databases" },		{ 0,		NULL }	};	DB_HASH_STAT *sp;	int ret;	COMPQUIET(dbenv, NULL);	if ((ret = dbp->stat(dbp, &sp, fast)) != 0) {		dbp->err(dbp, ret, "DB->stat");		return (1);	}	printf("%lx\tHash magic number.\n", (u_long)sp->hash_magic);	printf("%lu\tHash version number.\n", (u_long)sp->hash_version);	prflags(sp->hash_metaflags, fn);	dl("Underlying database page size.\n", (u_long)sp->hash_pagesize);	dl("Specified fill factor.\n", (u_long)sp->hash_ffactor);	dl("Number of keys in the database.\n", (u_long)sp->hash_nkeys);	dl("Number of data items in the database.\n", (u_long)sp->hash_ndata);	dl("Number of hash buckets.\n", (u_long)sp->hash_buckets);	dl("Number of bytes free on bucket pages", (u_long)sp->hash_bfree);	printf(" (%.0f%% ff).\n",	    PCT(sp->hash_bfree, sp->hash_buckets, sp->hash_pagesize));	dl("Number of overflow pages.\n", (u_long)sp->hash_bigpages);	dl("Number of bytes free in overflow pages",	    (u_long)sp->hash_big_bfree);	printf(" (%.0f%% ff).\n",	    PCT(sp->hash_big_bfree, sp->hash_bigpages, sp->hash_pagesize));	dl("Number of bucket overflow pages.\n", (u_long)sp->hash_overflows);	dl("Number of bytes free in bucket overflow pages",	    (u_long)sp->hash_ovfl_free);	printf(" (%.0f%% ff).\n",	    PCT(sp->hash_ovfl_free, sp->hash_overflows, sp->hash_pagesize));	dl("Number of duplicate pages.\n", (u_long)sp->hash_dup);	dl("Number of bytes free in duplicate pages",	    (u_long)sp->hash_dup_free);	printf(" (%.0f%% ff).\n",	    PCT(sp->hash_dup_free, sp->hash_dup, sp->hash_pagesize));	dl("Number of pages on the free list.\n", (u_long)sp->hash_free);	free(sp);	return (0);}/* * queue_stats -- *	Display queue statistics. */intqueue_stats(dbenv, dbp, fast)	DB_ENV *dbenv;	DB *dbp;	int fast;{	DB_QUEUE_STAT *sp;	int ret;	COMPQUIET(dbenv, NULL);	if ((ret = dbp->stat(dbp, &sp, fast)) != 0) {		dbp->err(dbp, ret, "DB->stat");		return (1);	}	printf("%lx\tQueue magic number.\n", (u_long)sp->qs_magic);	printf("%lu\tQueue version number.\n", (u_long)sp->qs_version);	dl("Fixed-length record size.\n", (u_long)sp->qs_re_len);	if (isprint(sp->qs_re_pad) && !isspace(sp->qs_re_pad))		printf("%c\tFixed-length record pad.\n", (int)sp->qs_re_pad);	else		printf("0x%x\tFixed-length record pad.\n", (int)sp->qs_re_pad);	dl("Underlying database page size.\n", (u_long)sp->qs_pagesize);	if (sp->qs_extentsize != 0)		dl("Underlying database extent size.\n",		    (u_long)sp->qs_extentsize);	dl("Number of records in the database.\n", (u_long)sp->qs_nkeys);	dl("Number of database pages.\n", (u_long)sp->qs_pages);	dl("Number of bytes free in database pages", (u_long)sp->qs_pgfree);	printf(" (%.0f%% ff).\n",	    PCT(sp->qs_pgfree, sp->qs_pages, sp->qs_pagesize));	printf("%lu\tFirst undeleted record.\n", (u_long)sp->qs_first_recno);	printf(	    "%lu\tNext available record number.\n", (u_long)sp->qs_cur_recno);	free(sp);	return (0);}/* * lock_stats -- *	Display lock statistics. */intlock_stats(dbenv, internal, flags)	DB_ENV *dbenv;	char *internal;	u_int32_t flags;{	DB_LOCK_STAT *sp;	int ret;	if (internal != NULL) {		if ((ret =		    dbenv->lock_dump_region(dbenv, internal, stdout)) != 0) {			dbenv->err(dbenv, ret, NULL);			return (1);		}		return (0);	}	if ((ret = dbenv->lock_stat(dbenv, &sp, flags)) != 0) {		dbenv->err(dbenv, ret, NULL);		return (1);	}	dl("Last allocated locker ID.\n", (u_long)sp->st_id);	dl("Current maximum unused locker ID.\n", (u_long)sp->st_cur_maxid);	dl("Number of lock modes.\n", (u_long)sp->st_nmodes);	dl("Maximum number of locks possible.\n", (u_long)sp->st_maxlocks);	dl("Maximum number of lockers possible.\n", (u_long)sp->st_maxlockers);	dl("Maximum number of lock objects possible.\n",	    (u_long)sp->st_maxobjects);	dl("Number of current locks.\n", (u_long)sp->st_nlocks);	dl("Maximum number of locks at any one time.\n",	    (u_long)sp->st_maxnlocks);	dl("Number of current lockers.\n", (u_long)sp->st_nlockers);	dl("Maximum number of lockers at any one time.\n",	    (u_long)sp->st_maxnlockers);	dl("Number of current lock objects.\n", (u_long)sp->st_nobjects);	dl("Maximum number of lock objects at any one time.\n",	    (u_long)sp->st_maxnobjects);	dl("Total number of locks requested.\n", (u_long)sp->st_nrequests);	dl("Total number of locks released.\n", (u_long)sp->st_nreleases);	dl(  "Total number of lock requests failing because DB_LOCK_NOWAIT was set.\n",	    (u_long)sp->st_nnowaits);	dl(  "Total number of locks not immediately available due to conflicts.\n",	    (u_long)sp->st_nconflicts);	dl("Number of deadlocks.\n", (u_long)sp->st_ndeadlocks);	dl("Lock timeout value.\n", (u_long)sp->st_locktimeout);	dl("Number of locks that have timed out.\n",	    (u_long)sp->st_nlocktimeouts);	dl("Transaction timeout value.\n", (u_long)sp->st_txntimeout);	dl("Number of transactions that have timed out.\n",	    (u_long)sp->st_ntxntimeouts);	dl_bytes("The size of the lock region.",	    (u_long)0, (u_long)0, (u_long)sp->st_regsize);	dl("The number of region locks granted after waiting.\n",	    (u_long)sp->st_region_wait);	dl("The number of region locks granted without waiting.\n",	    (u_long)sp->st_region_nowait);	free(sp);	return (0);}/* * log_stats -- *	Display log statistics. */intlog_stats(dbenv, flags)	DB_ENV *dbenv;	u_int32_t flags;{	DB_LOG_STAT *sp;	int ret;	if ((ret = dbenv->log_stat(dbenv, &sp, flags)) != 0) {		dbenv->err(dbenv, ret, NULL);		return (1);	}	printf("%lx\tLog magic number.\n", (u_long)sp->st_magic);	printf("%lu\tLog version number.\n", (u_long)sp->st_version);	dl_bytes("Log record cache size",	    (u_long)0, (u_long)0, (u_long)sp->st_lg_bsize);	printf("%#o\tLog file mode.\n", sp->st_mode);	if (sp->st_lg_size % MEGABYTE == 0)		printf("%luMb\tCurrent log file size.\n",		    (u_long)sp->st_lg_size / MEGABYTE);	else if (sp->st_lg_size % 1024 == 0)		printf("%luKb\tCurrent log file size.\n",		    (u_long)sp->st_lg_size / 1024);	else		printf("%lu\tCurrent log file size.\n",		    (u_long)sp->st_lg_size);	dl_bytes("Log bytes written",	    (u_long)0, (u_long)sp->st_w_mbytes, (u_long)sp->st_w_bytes);	dl_bytes("Log bytes written since last checkpoint",	    (u_long)0, (u_long)sp->st_wc_mbytes, (u_long)sp->st_wc_bytes);	dl("Total log file writes.\n", (u_long)sp->st_wcount);	dl("Total log file write due to overflow.\n",	    (u_long)sp->st_wcount_fill);	dl("Total log file flushes.\n", (u_long)sp->st_scount);	printf("%lu\tCurrent log file number.\n", (u_long)sp->st_cur_file);	printf("%lu\tCurrent log file offset.\n", (u_long)sp->st_cur_offset);	printf("%lu\tOn-disk log file number.\n", (u_long)sp->st_disk_file);	printf("%lu\tOn-disk log file offset.\n", (u_long)sp->st_disk_offset);	dl("Max commits in a log flush.\n", (u_long)sp->st_maxcommitperflush);	dl("Min commits in a log flush.\n", (u_long)sp->st_mincommitperflush);	dl_bytes("Log region size",	    (u_long)0, (u_long)0, (u_long)sp->st_regsize);	dl("The number of region locks granted after waiting.\n",	    (u_long)sp->st_region_wait);	dl("The number of region locks granted without waiting.\n",	    (u_long)sp->st_region_nowait);	free(sp);	return (0);}/* * mpool_stats -- *	Display mpool statistics. */intmpool_stats(dbenv, internal, flags)	DB_ENV *dbenv;	char *internal;	u_int32_t flags;{	DB_MPOOL_FSTAT **fsp;	DB_MPOOL_STAT *gsp;	int ret;	if (internal != NULL) {		if ((ret =		    dbenv->memp_dump_region(dbenv, internal, stdout)) != 0) {			dbenv->err(dbenv, ret, NULL);			return (1);		}		return (0);	}	if ((ret = dbenv->memp_stat(dbenv, &gsp, &fsp, flags)) != 0) {		dbenv->err(dbenv, ret, NULL);		return (1);	}	dl_bytes("Total cache size",	    (u_long)gsp->st_gbytes, (u_long)0, (u_long)gsp->st_bytes);	dl("Number of caches.\n", (u_long)gsp->st_ncache);	dl_bytes("Pool individual cache size",	    (u_long)0, (u_long)0, (u_long)gsp->st_regsize);	dl("Requested pages mapped into the process' address space.\n",	    (u_long)gsp->st_map);	dl("Requested pages found in the cache", (u_long)gsp->st_cache_hit);	if (gsp->st_cache_hit + gsp->st_cache_miss != 0)		printf(" (%.0f%%)", ((double)gsp->st_cache_hit /		    (gsp->st_cache_hit + gsp->st_cache_miss)) * 100);	printf(".\n");	dl("Requested pages not found in the cache.\n",	    (u_long)gsp->st_cache_miss);	dl("Pages created in the cache.\n", (u_long)gsp->st_page_create);	dl("Pages read into the cache.\n", (u_long)gsp->st_page_in);	dl("Pages written from the cache to the backing file.\n",	    (u_long)gsp->st_page_out);	dl("Clean pages forced from the cache.\n",	    (u_long)gsp->st_ro_evict);	dl("Dirty pages forced from the cache.\n",	    (u_long)gsp->st_rw_evict);	dl("Dirty pages written by trickle-sync thread.\n",	    (u_long)gsp->st_page_trickle);	dl("Current total page count.\n",	    (u_long)gsp->st_pages);	dl("Current clean page count.\n",	    (u_long)gsp->st_page_clean);	dl("Current dirty page count.\n",	    (u_long)gsp->st_page_dirty);	dl("Number of hash buckets used for page location.\n",	    (u_long)gsp->st_hash_buckets);	dl("Total number of times hash chains searched for a page.\n",	    (u_long)gsp->st_hash_searches);	dl("The longest hash chain searched for a page.\n",	    (u_long)gsp->st_hash_longest);	dl("Total number of hash buckets examined for page location.\n",	    (u_long)gsp->st_hash_examined);	dl("The number of hash bucket locks granted without waiting.\n",	    (u_long)gsp->st_hash_nowait);	dl("The number of hash bucket locks granted after waiting.\n",	    (u_long)gsp->st_hash_wait);	dl("The maximum number of times any hash bucket lock was waited for.\n",	    (u_long)gsp->st_hash_max_wait);	dl("The number of region locks granted without waiting.\n",	    (u_long)gsp->st_region_nowait);	dl("The number of region locks granted after waiting.\n",	    (u_long)gsp->st_region_wait);

⌨️ 快捷键说明

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