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 反对非常非常长。不知道为什么。

我也认为这不是一个好主意,但它回答了你的问题。

皮埃尔