为了研究tuplesort.c的多相合并算法,我使用ddd和apend一个表,其架构如下:
CREATE TABLE Towns (
id SERIAL UNIQUE NOT NULL,
code VARCHAR(10) NOT NULL, -- Only unique inside a department
article TEXT,
name TEXT NOT NULL, -- Names are not really unique, for instance 'Sainte-Croix'
department VARCHAR(4) NOT NULL REFERENCES Departments (code),
UNIQUE (code, department)
-- UNIQUE (name, department) -- Not perfectly unique but almost
);
并且有36684条记录,每条记录都像:
id code article name department
31800 266 \N Machault 77
并且为了进入外部排序,我输入以下命令:
select * from towns order by name desc;
但是我发现在排序过程中不需要达到D5和D6,我认为原因是在合并之前运行量是3(太小),为了生成更多的运行,我在输入它们时拖拽了记录并获得了同样的结果。
所以我想要一些帮助,我到达D5和D6最不需要什么模式和记录?任何建议将不胜感激!
狄龙答案 0 :(得分:1)
将一个非常低的值设置为work_mem
以使其内存不足
set work_mem = 64;
64 KB是9.3中的最小值。您可能需要获取更大的数据样本