summaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
authorNeil Conway2006-01-22 03:56:58 +0000
committerNeil Conway2006-01-22 03:56:58 +0000
commit57a84ca48e8901e77583f0c415f288430f5d66af (patch)
tree0c303776883db27a764ef948dc0a2420b7efb282 /doc/src
parentb42f307340fe41b9b33d9b7138abcf89c5778f65 (diff)
Minor improvements to GEQO documentation.
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/geqo.sgml38
1 files changed, 17 insertions, 21 deletions
diff --git a/doc/src/sgml/geqo.sgml b/doc/src/sgml/geqo.sgml
index 35bb36f22af..a723f4411ad 100644
--- a/doc/src/sgml/geqo.sgml
+++ b/doc/src/sgml/geqo.sgml
@@ -1,5 +1,5 @@
<!--
-$PostgreSQL: pgsql/doc/src/sgml/geqo.sgml,v 1.34 2005/11/07 17:36:44 tgl Exp $
+$PostgreSQL: pgsql/doc/src/sgml/geqo.sgml,v 1.35 2006/01/22 03:56:58 neilc Exp $
Genetic Optimizer
-->
@@ -46,8 +46,8 @@ Genetic Optimizer
<para>
Among all relational operators the most difficult one to process
and optimize is the <firstterm>join</firstterm>. The number of
- alternative plans to answer a query grows exponentially with the
- number of joins included in it. Further optimization effort is
+ possible query plans grows exponentially with the
+ number of joins in the query. Further optimization effort is
caused by the support of a variety of <firstterm>join
methods</firstterm> (e.g., nested loop, hash join, merge join in
<productname>PostgreSQL</productname>) to process individual joins
@@ -57,34 +57,30 @@ Genetic Optimizer
</para>
<para>
- The current <productname>PostgreSQL</productname> optimizer
- implementation performs a <firstterm>near-exhaustive
- search</firstterm> over the space of alternative strategies. This
- algorithm, first introduced in the <quote>System R</quote>
- database, produces a near-optimal join order, but can take an
- enormous amount of time and memory space when the number of joins
- in the query grows large. This makes the ordinary
+ The normal <productname>PostgreSQL</productname> query optimizer
+ performs a <firstterm>near-exhaustive search</firstterm> over the
+ space of alternative strategies. This algorithm, first introduced
+ in IBM's System R database, produces a near-optimal join order,
+ but can take an enormous amount of time and memory space when the
+ number of joins in the query grows large. This makes the ordinary
<productname>PostgreSQL</productname> query optimizer
inappropriate for queries that join a large number of tables.
</para>
<para>
The Institute of Automatic Control at the University of Mining and
- Technology, in Freiberg, Germany, encountered the described problems as its
- folks wanted to take the <productname>PostgreSQL</productname> DBMS as the backend for a decision
- support knowledge based system for the maintenance of an electrical
- power grid. The DBMS needed to handle large join queries for the
- inference machine of the knowledge based system.
- </para>
-
- <para>
- Performance difficulties in exploring the space of possible query
- plans created the demand for a new optimization technique to be developed.
+ Technology, in Freiberg, Germany, encountered some problems when
+ it wanted to use <productname>PostgreSQL</productname> as the
+ backend for a decision support knowledge based system for the
+ maintenance of an electrical power grid. The DBMS needed to handle
+ large join queries for the inference machine of the knowledge
+ based system. The number of joins in these queries made using the
+ normal query optimizer infeasible.
</para>
<para>
In the following we describe the implementation of a
- <firstterm>Genetic Algorithm</firstterm> to solve the join
+ <firstterm>genetic algorithm</firstterm> to solve the join
ordering problem in a manner that is efficient for queries
involving large numbers of joins.
</para>