MonetDB 创建 100.000 列
MonetDB create 100.000 columns
我正在尝试创建一个包含 10 万列和大约 200 万行 smallint 类型的 MonetDB 数据库。
为了生成 100k 列,我使用了 C 代码,即执行以下 sql 请求的循环:
ALTER TABLE test ADD COLUMN s%d SMALLINT;
其中 %d 是从 1 到 100000 的数字。
我观察到在 80000 个 sql 请求之后每个事务大约需要 15s,这意味着我需要很多时间来完成 table 创建。
你能告诉我是否有创建 100k 列的简单方法吗?
此外,您知道 MonetDB 到底发生了什么吗?
您应该只使用一个创建 table
在脚本中 shell (bash) :
#!/bin/bash
fic="/tmp/100k.sql"
col=1
echo "CREATE TABLE bigcol (" > $fic
while [[ $col -lt 100000 ]]
do
echo "field$col SMALLINT," >> $fic
col=$(($col + 1))
done
echo "field$col SMALLINT);" >> $fic
在命令行中:
sh 100k.sh
mclient yourbdd < /tmp/100k.sql
等待大约 2 分钟 :D
mclient yourbdd
> \d bigcol
[ ... ... ...]
"field99997" SMALLINT,
"field99998" SMALLINT,
"field99999" SMALLINT,
"field100000" SMALLINT
);
DROP TABLE bigcol 反对非常非常长。不知道为什么。
我也认为这不是一个好主意,但它回答了你的问题。
皮埃尔
我正在尝试创建一个包含 10 万列和大约 200 万行 smallint 类型的 MonetDB 数据库。
为了生成 100k 列,我使用了 C 代码,即执行以下 sql 请求的循环:
ALTER TABLE test ADD COLUMN s%d SMALLINT;
其中 %d 是从 1 到 100000 的数字。
我观察到在 80000 个 sql 请求之后每个事务大约需要 15s,这意味着我需要很多时间来完成 table 创建。
你能告诉我是否有创建 100k 列的简单方法吗?
此外,您知道 MonetDB 到底发生了什么吗?
您应该只使用一个创建 table
在脚本中 shell (bash) :
#!/bin/bash
fic="/tmp/100k.sql"
col=1
echo "CREATE TABLE bigcol (" > $fic
while [[ $col -lt 100000 ]]
do
echo "field$col SMALLINT," >> $fic
col=$(($col + 1))
done
echo "field$col SMALLINT);" >> $fic
在命令行中:
sh 100k.sh
mclient yourbdd < /tmp/100k.sql
等待大约 2 分钟 :D
mclient yourbdd
> \d bigcol
[ ... ... ...]
"field99997" SMALLINT,
"field99998" SMALLINT,
"field99999" SMALLINT,
"field100000" SMALLINT
);
DROP TABLE bigcol 反对非常非常长。不知道为什么。
我也认为这不是一个好主意,但它回答了你的问题。
皮埃尔