首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >db_stat不能正确工作于伯克利数据库

db_stat不能正确工作于伯克利数据库
EN

Stack Overflow用户
提问于 2020-06-08 03:29:54
回答 1查看 214关注 0票数 3

我从Oracle下载了伯克利DB 5.3.2818.1.40,并在Ubuntu18.04上编译成功。除了db_stat实用程序之外,一切正常工作,不想为我返回正确的数据库统计信息。特别是,没有唯一的键,没有数据项,等等.都是错的。

这是我的测试代码:

代码语言:javascript
复制
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <db.h>


int main() {
  DB *dbp;
  DBT key, data;
  int ret, t_ret;

  ret = db_create(&dbp, NULL, 0);
    assert(ret == 0);

  ret = dbp->open(dbp, NULL, "sample.db", "", DB_BTREE, DB_CREATE, 0664);
  assert(ret == 0);

  memset(&key, 0, sizeof(key));
  memset(&data, 0, sizeof(data));
  key.data = (char*)"fruit";
  key.size = sizeof("fruit");
  data.data = (char*)"apple";
  data.size = sizeof("apple");

  ret = dbp->put(dbp, NULL, &key, &data, 0);
  assert(ret == 0);

  key.data = (char*)"color";
  key.size = sizeof("color");
  data.data = (char*)"red";
  data.size = sizeof("red");

  ret = dbp->put(dbp, NULL, &key, &data, 0);
  assert(ret == 0);

  key.data = (char*)"language";
  key.size = sizeof("language");
  data.data = (char*)"c";
  data.size = sizeof("c");

  ret = dbp->put(dbp, NULL, &key, &data, 0);
  assert(ret == 0);

  dbp->close(dbp, 0);
}

db_stat输出:

db_stat -d sample.db

代码语言:javascript
复制
Sun Jun  7 20:26:59 2020    Local time
53162   Btree magic number
9   Btree version number
Little-endian   Byte order
multiple-databases  Flags
2   Minimum keys per-page
4096    Underlying database page size
1007    Overflow key/data size
1   Number of levels in the tree
1   Number of unique keys in the tree
1   Number of data items in the tree
0   Number of tree internal pages
0   Number of bytes free in tree internal pages (0% ff)
1   Number of tree leaf pages
4054    Number of bytes free in tree leaf pages (1% ff)
0   Number of tree duplicate pages
0   Number of bytes free in tree duplicate pages (0% ff)
0   Number of tree overflow pages
0   Number of bytes free in tree overflow pages (0% ff)
0   Number of empty pages
0   Number of pages on the free list
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-10 03:25:17

您在""调用中将数据库命名为dbp->open。因此,您也必须使用db_stat标志将其传递给-s

代码语言:javascript
复制
$ db_stat -d sample.db -s ""
Wed Jun 10 03:16:43 2020    Local time
53162   Btree magic number
9   Btree version number
Little-endian   Byte order
record-numbers, multiple-databases  Flags
2   Minimum keys per-page
8192    Underlying database page size
2031    Overflow key/data size
1   Number of levels in the tree
3   Number of unique keys in the tree
3   Number of data items in the tree
0   Number of tree internal pages
0   Number of bytes free in tree internal pages (0% ff)
1   Number of tree leaf pages
8090    Number of bytes free in tree leaf pages (1% ff)
0   Number of tree duplicate pages
0   Number of bytes free in tree duplicate pages (0% ff)
0   Number of tree overflow pages
0   Number of bytes free in tree overflow pages (0% ff)
0   Number of empty pages
0   Number of pages on the free list

(我的BDB默认为8K页,但在其他情况下是相同的。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62254560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档