11<!--
2- $PostgreSQL: pgsql/doc/src/sgml/geqo.sgml,v 1.34 2005/11/07 17:36:44 tgl Exp $
2+ $PostgreSQL: pgsql/doc/src/sgml/geqo.sgml,v 1.35 2006/01/22 03:56:58 neilc Exp $
33Genetic Optimizer
44-->
55
@@ -46,8 +46,8 @@ Genetic Optimizer
4646 <para>
4747 Among all relational operators the most difficult one to process
4848 and optimize is the <firstterm>join</firstterm>. The number of
49- alternative plans to answer a query grows exponentially with the
50- number of joins included in it . Further optimization effort is
49+ possible query plans grows exponentially with the
50+ number of joins in the query . Further optimization effort is
5151 caused by the support of a variety of <firstterm>join
5252 methods</firstterm> (e.g., nested loop, hash join, merge join in
5353 <productname>PostgreSQL</productname>) to process individual joins
@@ -57,34 +57,30 @@ Genetic Optimizer
5757 </para>
5858
5959 <para>
60- The current <productname>PostgreSQL</productname> optimizer
61- implementation performs a <firstterm>near-exhaustive
62- search</firstterm> over the space of alternative strategies. This
63- algorithm, first introduced in the <quote>System R</quote>
64- database, produces a near-optimal join order, but can take an
65- enormous amount of time and memory space when the number of joins
66- in the query grows large. This makes the ordinary
60+ The normal <productname>PostgreSQL</productname> query optimizer
61+ performs a <firstterm>near-exhaustive search</firstterm> over the
62+ space of alternative strategies. This algorithm, first introduced
63+ in IBM's System R database, produces a near-optimal join order,
64+ but can take an enormous amount of time and memory space when the
65+ number of joins in the query grows large. This makes the ordinary
6766 <productname>PostgreSQL</productname> query optimizer
6867 inappropriate for queries that join a large number of tables.
6968 </para>
7069
7170 <para>
7271 The Institute of Automatic Control at the University of Mining and
73- Technology, in Freiberg, Germany, encountered the described problems as its
74- folks wanted to take the <productname>PostgreSQL</productname> DBMS as the backend for a decision
75- support knowledge based system for the maintenance of an electrical
76- power grid. The DBMS needed to handle large join queries for the
77- inference machine of the knowledge based system.
78- </para>
79-
80- <para>
81- Performance difficulties in exploring the space of possible query
82- plans created the demand for a new optimization technique to be developed.
72+ Technology, in Freiberg, Germany, encountered some problems when
73+ it wanted to use <productname>PostgreSQL</productname> as the
74+ backend for a decision support knowledge based system for the
75+ maintenance of an electrical power grid. The DBMS needed to handle
76+ large join queries for the inference machine of the knowledge
77+ based system. The number of joins in these queries made using the
78+ normal query optimizer infeasible.
8379 </para>
8480
8581 <para>
8682 In the following we describe the implementation of a
87- <firstterm>Genetic Algorithm </firstterm> to solve the join
83+ <firstterm>genetic algorithm </firstterm> to solve the join
8884 ordering problem in a manner that is efficient for queries
8985 involving large numbers of joins.
9086 </para>
0 commit comments