Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取有关postgresql中外部排序的详细信息_Sql_Postgresql_Sql Order By - Fatal编程技术网

获取有关postgresql中外部排序的详细信息

获取有关postgresql中外部排序的详细信息,sql,postgresql,sql-order-by,Sql,Postgresql,Sql Order By,阅读本文,我发现了以下示例: EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM foo ORDER BY c1; 查询的计划如下所示: Sort (cost=172682.84..175182.84 rows=1000000 width=37) (actual time=584.215..681.531 rows=1000000 loops=1) Sort Key: c1 Sort Method: external sort Disk: 45928k

阅读本文,我发现了以下示例:

EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM foo ORDER BY c1;
查询的计划如下所示:

Sort  (cost=172682.84..175182.84 rows=1000000 width=37) (actual time=584.215..681.531 rows=1000000 loops=1)
  Sort Key: c1
  Sort Method: external sort  Disk: 45928kB
  Buffers: shared hit=3197 read=5137, temp read=5741 written=5741
  ->  Seq Scan on foo  (cost=0.00..18334.00 rows=1000000 width=37) (actual time=0.036..91.914 rows=1000000 loops=1)
        Buffers: shared hit=3197 read=5137
Total runtime: 711.195 ms

外部排序是一系列算法。这是否意味着
PostgreSQL
进行
外部合并排序
?如果是,我如何获得一些详细信息,例如批次数量及其大小。甚至可能吗?

通过设置参数
trace\u sorts=on
()

除此之外,您可能还想了解,至少是以下评论:

此模块处理堆元组、索引元组或单个元组的排序 基准(并且可以轻松支持其他类型的可排序对象, 如有必要)。它对少量和大量都有效 大量的数据。使用qsort()在内存中对少量数据进行排序。大的 使用临时文件和标准外部排序对金额进行排序 算法

请参阅Knuth,第3卷,了解有关外部系统的更多信息 排序算法。我们使用替换将输入划分为已排序的运行 选择,以实现为堆的优先级树的形式 (基本上是他的算法5.2.3H),然后使用多阶段合并运行 合并,Knuth算法5.4.2D。算法D使用的逻辑“磁带” 由logtape.c实现,它通过循环使用避免了空间浪费 从“磁带”中读取每个数据块后立即释放磁盘空间


您需要查看源代码。@a_horse_没有名字是唯一的方法吗?PosgtrSQL没有提供关于它使用的算法的详细信息,是吗?它不能得到比实际实现更详细的信息。是的,你完全抓住了我想要的。谢谢你,特别是你指出了来源。