其中一个常用的(?)DBMS基准testing称为SSB, Star-Schema Benchmark 。 为了运行它,你需要生成你的模式,也就是你的数据表。 那么,有一个生成器程序,你可以find各种各样的地方(在github上):
并可能在别处。 我不确定这些代码是否完全一样,但是我似乎也遇到了同样的问题。 我正在使用Linux 64位系统(如果有帮助,Kubuntu 14.04); 并试图从该包中构build并运行`dbgen'程序。
build设时,我得到types/大小相关的警告:
me@myhost:~/src/ssb-dbgen$ make ... etc. etc. ... gcc -O -DDBNAME=\"dss\" -DLINUX -DDB2 -DSSBM -c -o varsub.o varsub.c rnd.c: In function גrow_stopג: rnd.c:60:6: warning: format ג%dג expects argument of type גintג, but argument 4 has type גlong intג [-Wformat=] i, Seed[i].usage); ^ driver.c: In function גpartialג: driver.c:606:4: warning: format ג%dג expects argument of type גintג, but argument 4 has type גlong intג [-Wformat=] ... etc. etc. ...
然后,我确定所有正确的文件都已经存在,尝试生成我的表格,只能得到其中的两个! 我试图明确生成LINEORDER表,并得到一个奇怪的失败:
eyal@vivaldi:~/src/ssb-dbgen$ ls bcd2.c build.c driver.c HISTORY makefile_win print.c rnd.c speed_seed.o varsub.c bcd2.h build.o driver.o history.html mkf.macos print.o rnd.h ssb-dbgen-master varsub.o bcd2.o CHANGES dss.ddl load_stub.c permute.c qgen rnd.o text.c bm_utils.c config.h dss.h load_stub.o permute.h qgen.c rxin-ssb-dbgen-master.zip text.o bm_utils.o dbgen dss.ri Makefile permute.o qgen.o shared.h tpcd.h BUGS dists.dss dsstypes.h makefile.suite PORTING.NOTES README speed_seed.c TPCH_README me@myhost:~/src/ssb-dbgen$ ./dbgen -vfF -s 1 SSBM (Star Schema Benchmark) Population Generator (Version 1.0.0) Copyright Transaction Processing Performance Council 1994 - 2000 Generating data for suppliers table [pid: 32303]done. Generating data for customers table [pid: 32303]done. Generating data for (null) [pid: 32303]done. Generating data for (null) [pid: 32303]done. Generating data for (null) [pid: 32303]done. Generating data for (null) [pid: 32303]done. me@myhost:~/src/ssb-dbgen$ ls *.tbl customer.tbl supplier.tbl me@myhost:~/src/ssb-dbgen$ ./dbgen -vfF -s 1 -T l SSBM (Star Schema Benchmark) Population Generator (Version 1.0.0) Copyright Transaction Processing Performance Council 1994 - 2000 Generating data for lineorder table [pid: 32305]*** buffer overflow detected ***: ./dbgen terminated ======= Backtrace: ========= ... etc. etc. ... /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fcea1b79ec5] ./dbgen[0x401219] ======= Memory map: ======== ... etc. etc. ...
现在,如果我切换到32位Linux系统,我没有得到任何这些警告(虽然有两个关于指针到非指针转换的警告)。 但再次运行这一代只会产生两个表。 现在,其他单独的桌子可以制作 – 但是它们根本不相符,我想…
有没有人遇到类似的问题? 难道我做错了什么? 我以某种方式使用错误的来源?
(这几乎是SSB dbgen Linux的一个骗局 – Segmentation Fault …但是当他们可能遇到其他问题时,我不能“接pipe”别人的问题,而且那个人也没有答案……)
如果有人仍然鼓励这个问题,我在这里找到一个解决方案: https : //github.com/electrum/ssb-dbgen/pull/1具体来说,你必须修改这两个文件shared.h
和config.h
问候。
编辑:更改:
#ifdef SSBM #define MAXAGG_LEN 10 /* max component length for a agg str */
至:
#ifdef SSBM #define MAXAGG_LEN 20 /* max component length for a agg str */
我找到了解决办法,但您需要Windows系统。
下载并解压缩此包: https : //github.com/LucidDB/thirdparty/blob/master/ssb.tar.bz2
在bin目录中是dbgen.exe。 从Windows控制台像fg运行它:
...\bin\dbgen.exe -s 1 -T a
之后,只需将创建的文件复制到您的Linux系统。 不是最好的方法,但有效:)