[go: up one dir, main page]

DE69838158T2 - Auf die Anzahl von in den Tabellen gespeicherten Datensätzen basiertes Ordnen von Verbindungen - Google Patents

Auf die Anzahl von in den Tabellen gespeicherten Datensätzen basiertes Ordnen von Verbindungen Download PDF

Info

Publication number
DE69838158T2
DE69838158T2 DE69838158T DE69838158T DE69838158T2 DE 69838158 T2 DE69838158 T2 DE 69838158T2 DE 69838158 T DE69838158 T DE 69838158T DE 69838158 T DE69838158 T DE 69838158T DE 69838158 T2 DE69838158 T2 DE 69838158T2
Authority
DE
Germany
Prior art keywords
join
query
graph
vertex
cardinality
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69838158T
Other languages
English (en)
Other versions
DE69838158D1 (de
Inventor
Murali M. Krishna
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE69838158D1 publication Critical patent/DE69838158D1/de
Publication of DE69838158T2 publication Critical patent/DE69838158T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24544Join order optimisation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Operations Research (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

  • Stand der Technik
  • Die Erfindung betrifft die Optimierung von Abfragen in Datenbanksystemen und, genauer gesagt, die Optimierung der Verknüpfungsreihenfolge in relationalen Datenbanksystemen.
  • Eine Datenbank stellt eine Sammlung von Daten dar. Eine relationale Datenbank ist eine Datenbank, die von ihren Benutzern als eine Sammlung von Tabellen wahrgenommen wird. Jede Tabelle ordnet Objekte (items) und Attribute der Objekte in Reihen beziehungsweise Spalten an. Jede Zeile einer Tabelle entspricht einem Objekt (das auch als Datensatz oder Tupel bezeichnet wird), und jede Spalte einer Tabelle entspricht einem Attribut des Objekts (das als Feld oder richtiger als ein Attributtyp oder ein Feldtyp bezeichnet wird). Die Kardinalität einer Tabelle T ist die Anzahl der Datensätze, die sie enthält, und wird mit |T| bezeichnet.
  • Ein "Primärschlüssel" für eine Tabelle ist ein einfaches oder zusammengesetztes Attribut, das Datensätze der Tabelle eindeutig kennzeichnet. Der Schlüssel muss grundsätzlich eindeutig und nicht nur zu einem bestimmten Zeitpunkt eindeutig sein. Es ist möglich, aber nicht üblich, dass man eine Tabelle hat, bei der die einzige eindeutige Kennung das zusammengesetzte Attribut ist, das aus allen Attributen der Tabelle besteht. Es ist auch möglich, aber nicht üblich, dass eine Tabelle mehr als eine eindeutige Kennung hat. In diesem Fall kann man sagen, dass die Tabelle mehrere in Frage kommende Schlüssel hat, von denen einer ausgewählt und als Primärschlüssel festgelegt werden könnte; die verbleibenden in Frage kommenden Schlüssel würden dann als alternative Schlüssel bezeichnet werden. Primärschlüssel und alternative Schlüssel müssen zwei zeitunabhängige Eigenschaften erfüllen. Erstens dürfen zu keinem Zeitpunkt zwei Datensätze der Tabelle denselben Wert für den Schlüssel haben. Zweitens kann keine Komponente des Schlüssel entfernt werden, ohne die Eigenschaft der Unverwechselbarkeit zu zerstören, wenn es sich bei dem Schlüssel um einen zusammengesetzten Schlüssel handelt.
  • Ein "Fremdschlüssel" ist ein möglicherweise zusammengesetztes Attribut einer Tabelle, deren Werte notwendig sind, um sie mit denjenigen des Primärschlüssels von einer Tabelle zu vergleichen, die sich üblicherweise, aber nicht notwendigerweise, von der Tabelle unterscheidet, für die der Fremdschlüssel festgelegt wird. Der Wert eines Fremdschlüssels stellt einen Verweis auf den Datensatz dar, der den Wert des passenden Primärschlüssels enthält, wobei dieser Datensatz als in Bezug genommener Datensatz oder als Zieldatensatz bezeichnet werden kann. Die Tabelle, die den Fremdschlüssel enthält, kann als die in Bezug nehmende Tabelle oder als Fremdtabelle bezeichnet werden, und die Tabelle, die den entsprechenden Primärschlüssel enthält, kann als die in Bezug genommene Tabelle oder als Zieltabelle oder Primärtabelle bezeichnet werden.
  • Der Suchlauf nach Daten in einer relationalen Datenbank erfolgt mittels einer Abfrage. Eine Abfrage enthält ein oder mehrere Prädikate, die die Informationen angeben, welche mittels der Abfrage aus der Datenbank abgerufen werden sollen. Eine Verknüpfungsabfrage ist eine Abfrage, bei der Informationen aus mehr als einer Tabelle angefordert werden. In einer Datenbank beispielsweise, die Telefonverzeichnis-Informationen in einer Tabelle und Informationen über das Arbeitsverhältnis in einer anderen Tabelle speichert, könnte eine Verknüpfungsabfrage die Namen aller Leute anfordern, die in derselben Stadt leben und arbeiten.
  • Eine Verknüpfungsabfrage muss mindestens ein "Verknüpfungsprädikat" enthalten, das die Kriterien festlegt, die zur Auswahl von Datensätzen aus den beiden Tabellen verwendet werden. Eine Verknüpfungsabfrage kann auch ein oder mehrere Prädikate einer einzigen Tabelle enthalten, um Datensätze aus den einzelnen Tabellen auszuwählen (z.B. Angestellte, deren private Telefonnummern die Vorwahl 876 haben). Die Verknüpfungsselektivität einer Verknüpfungsabfrage ist das Verhältnis der Anzahl der Übereinstimmungen, die sich aus der Verknüpfung ergeben (d.h. die Verknüpfungskardinalität), zum Produkt der Kardinalitäten der verknüpften Tabellen.
  • Ein Primärschlüssel einer Tabelle P wird als P.Pk bezeichnet. Ein Fremdschlüssel einer Tabelle S mit Bezug auf einen Primärschlüssel wird als S.Fk bezeichnet. Eine Verknüpfung von Primärschlüssel und Fremdschlüssel wird als Pk-Fk-Verknüpfung bezeichnet. Eine Verknüpfung von zwei Schlüsseln, die in Bezug auf denselben Primärschlüssel beide Fremdschlüssel sind, wird als Fk-Fk-Verknüpfung bezeichnet.
  • Eine natürliche Art und Weise, eine Verknüpfungsabfrage durchzuführen, besteht darin, jeden Datensatz in der zweiten Tabelle auf jeden Datensatz in der ersten Tabelle zu prüfen, um festzustellen, ob es Datensätze gibt, die das Verknüpfungsprädikat erfüllen. Solche Datensätze gelten als übereinstimmende Datensätze. Das Datenbanksystem kann dann ein Zwischenergebnis (oder ein Endergebnis) erstellen, das die übereinstimmenden Datensätze, die miteinander verknüpft wurden, enthält.
  • Die Durchführung von mehreren Verknüpfungsabfragen in großen Datenbanken kann sehr zeitaufwendig und ressourcenintensiv sein. Eine Möglichkeit, eine Verknüpfungsabfrage mit mehreren Verknüpfungen schneller durchzuführen, besteht darin, die Reihenfolge zu optimieren, in der Tabellen verknüpft werden. Eine gute Verknüpfungsreihenfolge kann die Anzahl der durchgeführten Vergleiche beziehungsweise den Umfang der Zwischenergebnisse und dadurch die Anzahl der eingesetzten Ressourcen und die zur Durchführung der gesamten Abfrage insgesamt notwendige Zeit verringern. Es ist im Allgemeinen jedoch schwierig, eine gute Verknüpfungsreihenfolge zu erhalten. Herkömmliche Optimierer für die Verknüpfungsreihenfolge stützen sich stark auf Schätzwerte der Kardinalitäten von Zwischenergebnissen. Diese Kardinalitäten zu schätzen, ist im Allgemeinen ebenfalls sehr schwierig. Die herkömmlicherweise verwendeten Verfahren sind bestenfalls Näherungsverfahren und können in manchen Fällen ziemlich ungenau sein. Ein wirksameres und genaueres Verfahren zum Schätzen von optimalen Verknüpfungsreihenfolgen ist daher wünschenswert.
  • Das folgende Schriftstück von Yushi Uno u.a. mit dem Titel "Complexity of the Optimum Join Order Problem in Relational Databases, IEICE Transactions, JP, Institute of Electronics Information and Comm. Eng. Tokyo, Band E74, Nr. 7, 1. Juli 1991 (01.07.1991), Seiten 2067 bis 2075, XP000263060, ISSN: 0917-1673, beschreibt das Problem, die optimale Verknüpfungsreihenfolge zu finden (Absatz 2.6), wozu auch die mathematische Darstellung eines Abfragegraphen und die Berechnung der Kardinalität der Abfrage mit mehreren Verknüpfungen gehört (Seite 2069, Absätze 2.5 und 2.6).
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung stellt ein Verfahren nach Anspruch 1 und ein entsprechendes System und Rechnerprogramm bereit.
  • Vorzugsweise betrifft die Erfindung ein von einem Rechner ausgeführtes Verfahren zur Berechnung einer guten Verknüpfungsreihenfolge bei einer Abfrage mit mehreren Verknüpfungen, indem eine Maßzahl eingeführt wird, deren Aufgabe es ist, die relative Wirksamkeit von alternativen Verknüpfungsreihenfolgen vergleichbar zu machen.
  • Vorzugsweise betrifft die Erfindung ein von einem Rechner ausgeführtes Verfahren, das dazu dient, die Verknüpfungsselektivität einer Fk-Fk-Verknüpfung zu schätzen, das heißt, einer Verknüpfung, bei der das Verknüpfungsprädikat im Wesentlichen die Form R.r = S.s. hat, wobei sowohl R.r als auch S.s Fremdschlüssel in Bezug auf einen Primärschlüssel oder einen alternativen Schlüssel von einer einzigen Primärtabelle sind.
  • Vorzugsweise betrifft die Erfindung ein von einem Rechner ausgeführtes Verfahren, das dazu dient, die Verknüpfungskardinalität einer beliebig großen Zahl von mehreren Verknüpfungen einschließlich einer beliebigen Kombination von Pk-Fk-Verknüpfungen und Fk-Fk-Verknüpfungen wirksam zu schätzen.
  • Zu den Vorteilen der Erfindung gehört, dass die Geschwindigkeit und die Leistungsfähigkeit von Verknüpfungsabfragen verbessert werden. Weitere Vorteile der Erfindung sind in der folgenden Beschreibung dargelegt und gehen aus der Beschreibung und den Ansprüchen hervor.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Blockschaltbild einer Universalrechnerplattform, die erfindungsgemäß programmiert werden kann und eine relationale Datenbank enthält.
  • 2 ist ein Ablaufplan eines von einem Rechner ausgeführten Verfahrens, das dazu dient, eine optimale Verknüpfungsreihenfolge für einen bestimmten Satz von Tabellen bei einer Verknüpfungsabfrage in einem relationalen Datenbanksystem zu berechnen.
  • 3 ist ein Ablaufplan eines von einem Rechner ausgeführten Verfahrens, das dazu dient, eine Abfrage mit mehreren Verknüpfungen in Form eines Graphen darzustellen.
  • 4 ist eine Darstellung eines Verknüpfungsgraphen.
  • 5 ist ein Ablaufplan eines von einem Rechner ausgeführten Prozesses, um die Verknüpfungskardinalität einer Abfrage mit mehreren Verknüpfungen zu schätzen, indem eine Darstellung der Verknüpfungsabfrage in Form eines Graphen verwendet wird.
  • 6 ist eine Darstellung eines Verknüpfungsgraphen.
  • Ausführliche Beschreibung
  • Die vorliegende Erfindung stellt Verfahren und Vorrichtungen zur Optimierung der Verarbeitungsreihenfolge von Verknüpfungsabfragen in relationalen Datenbanksystemen bereit.
  • 1 zeigt eine Universalrechnerplattform 10, die sich zur Unterstützung eines relationalen Datenbanksystems 26 eignet, das erfindungsgemäß eine auf Kardinalitäten beruhende Optimierung von Verknüpfungen durchführt. Zur Plattform gehören ein digitaler Rechner 12 (wie zum Beispiel ein Personal-Computer oder ein Arbeitsplatzrechner), ein Bildschirm 14, eine Massenspeichereinheit 16 (wie zum Beispiel ein Diskettenlaufwerk, ein Festplattenlaufwerk, ein löschbares CD-ROM-Laufwerk oder ein magneto-optisches Plattenlaufwerk), eine Tastatur 18 und eine Maus 20 oder eine andere Eingabeeinheit. Der Rechner 12 ist herkömmlich aufgebaut und enthält einen Speicher 22, einen Prozessor 24 und andere gewöhnliche Komponenten wie zum Beispiel einen Speicherbus und einen peripheren Bus (nicht gezeigt). Der Rechner 12 enthält auch Datenübertragungs-Hardware und -Software (nicht gezeigt), mittels derer der Rechner 12 über eine Datenübertragungsverbindung 36 und ein Rechnernetzwerk 38 mit anderen Rechnern 40 verbunden werden kann.
  • Das Datenbanksystem 26 verwaltet eine Datenbank. Die Datenbank 28 kann sich zentral auf einem einzigen Rechner befinden oder über das Rechnernetzwerk 38 verteilt sein. Üblicherweise wird die Datenbank 28 von einem Datenbanksystem 26 verwaltet, das auf einem Rechner ausgeführt wird, der entweder ständig oder nur vorübergehend mit der Datenbank verbunden ist. In dieser Darstellung ist das Datenbankverwaltungssystem als ein System gezeigt, das auf dem Rechner 12 läuft.
  • Wie zuvor erwähnt wurde, stellt die Optimierung von Verknüpfungen, d.h. die Berechnung einer optimalen Reihenfolge, in der Tabellen bei einer Abfrage mit mehreren Verknüpfungen verknüpft werden sollen, eines der Probleme bei der Ausgestaltung und Realisierung von relationalen Datenbanksystemen dar. Obwohl sich die Reihenfolge, in der Tabellen miteinander verknüpft werden, nicht auf das Ergebnis der Verknüpfung auswirkt, können verschiedene Verknüpfungsreihenfolgen für dieselbe Abfrage unterschiedlich viel Zeit und unterschiedlich viele andere Ressourcen beanspruchen.
  • Betrachten wir eine relationale Datenbank, die die Tabellen R, S und T enthält, eine Verknüpfungsabfrage, bei der die Tabellen R, S und T miteinander verknüpft werden sollen, und zwei mögliche Verknüpfungsreihenfolgen: (1) Verknüpfe die Tabellen R und S, und verknüpfe anschließend das Ergebnis mit der Tabelle T und (2) verknüpfe die Tabellen S und T, und verknüpfe dann das Ergebnis mit der Tabelle R. Betrachten wir zuerst die Verknüpfungsreihenfolge (1). Wenn |(R join S)| = 20 und |((R join S) join T)| = 60, beträgt die Gesamtzahl der Tupeln, die während der Berechnung der Gesamtabfrage erzeugt wurden, 80 (20 + 60). Betrachten wir dann die Verknüpfungsreihenfolge (2). Wenn |(S join T)| = 500 und |((S join T) join R)| = 60, beträgt die Gesamtzahl der Datensätze, die während der Berechnung der gesamten Verknüpfung angelegt wurden, 560 (500 + 60). Die Wahl der Verknüpfungsreihenfolge kann von großer Bedeutung sein, insbesondere bei mehreren Verknüpfungen, die große Tabellen einschließen.
  • Eine neue Maßzahl Sigma wird verwendet, um bei einer Abfrage mit mehreren Verknüpfungen eine Verknüpfungsreihenfolge aus mehreren möglichen Verknüpfungsreihenfolgen auszuwählen. Die Maßzahl Sigma gibt einen Hinweis auf die Komplexität einer Verknüpfung, der auf geschätzten Kardinalitäten beruht. Vorzugsweise wird Sigma als die Summe der Anzahl der Tupeln definiert, die sich schätzungsweise aus jeder Verknüpfung ergeben, wenn diese in einer Verknüpfungsreihenfolge durchgeführt wird. Bei Verwendung der Maßzahl Sigma wird die Verknüpfungsreihenfolge, bei der Sigma von allen Verknüpfungsreihenfolgen den kleinsten Wert hat, als die optimale Verknüpfungsreihenfolge ausgewählt und zur Durchführung der Verknüpfung verwendet. Verbindungen zwischen Verknüpfungsreihenfolgen, die in Wettbewerb miteinander stehen, können mit Hilfe einer anderen Heuristik unterbrochen werden, die beispielsweise auf weiteren Kostenschätzungen beruhen kann. In dem vorstehenden Beispiel beträgt der Wert von Sigma für die Verknüpfungsreihenfolge (1) 80, und der Wert von Sigma für die Verknüpfungsreihenfolge (2) beträgt 560, was anzeigt, dass die Reihenfolge (1) gegenüber der Reihenfolge (2) bevorzugt wird.
  • 2 zeigt einen von einem Rechner ausgeführten Prozess 110, der mit Hilfe der Maßzahl Sigma eine Verknüpfungsreihenfolge aus den möglichen Verknüpfungsreihenfolgen für eine Verknüpfungsabfrage auswählt, die die Tabellen T = {T1, T2, T3, ... Tn} einschließt. Zuerst wird aus den möglichen Verknüpfungsreihenfolgen eine Verknüpfungsreihenfolge ausgewählt (Schritt 120). Dann wird die Kardinalität einer jeden Komponentenverknüpfung in der Verknüpfungsreihenfolge abgerufen (Schritt 130). Dies kann geschehen, indem man die Kardinalität mit Hilfe des nachstehend beschriebenen Verfahrens zur Darstellung von Graphen schätzt, einen vorab berechneten Wert abruft oder ein anderes Verfahren anwendet. Es ist für die Berechnung des Wertes von Sigma nicht notwendig, dass diese Kardinalitäten mit Hilfe eines bestimmten Verfahrens berechnet werden. Ein Wert für Sigma wird berechnet, indem jeder dieser Schätzwerte der Kardinalität addiert wird (Schritt 140). Wenn dieser Sigma-Wert der kleinste Sigma-Wert ist, der bisher angetroffen wurde, werden sowohl der Wert von Sigma als auch die entsprechende Verknüpfungsreihenfolge gespeichert (Schritt 150). Wenn noch weitere Verknüpfungsreihenfolgen zur Prüfung übrig bleiben, wird der Prozess für die nächstmögliche Verknüpfungsreihenfolge wiederholt (Schritt 160). Andernfalls wird eine Verknüpfungsreihenfolge mit dem kleinsten Wert von Sigma zur Durchführung der Verknüpfungsabfrage verwendet (Schritt 170).
  • Verknüpfungskardinalitäten bei einer Abfrage mit mehreren Verknüpfungen können geschätzt werden, indem man die Abfrage in Form von einem Graphen darstellt und diese Darstellung verwendet. Bevor beschrieben wird, wie ein Verknüpfungsgraph verwendet wird, wird jedoch die Vorgehensweise beim Schätzen einzelner Verknüpfungskardinalitäten und Verknüpfungsselektivitäten beschrieben.
  • Betrachten wir die Verknüpfung von Pk-Fk mit R.Pk = S.Fk (Pk-Fk join R.Pk = S.Fk). Die Kardinalität einer solchen Verknüpfung ist gleich der Kardinalität der Fremdtabelle (in diesem Beispiel der Tabelle S), da der Wert eines jeden Fremdschlüssels genau einem Datensatz in der Primärtabelle entspricht. Betrachten wir beispielsweise eine Datenbank, die eine Tabelle P mit Universitätsprofessoren und eine Tabelle S der Klassen, die sie unterrichten, enthält. P.profID ist ein Primärschlüssel, der jeden Professor eindeutig ausweist. S.teacher ist ein Attribut, das den einen Professor ausweist, der eine Klasse unterrichtet. S.teacher ist daher ein Fremdschlüssel für P. Eine Verknüpfungsabfrage, die über das Verknüpfungsprädikat S.teacher = P.profID verfügt, welches die Form S.Fk = P.Pk hat, hat eine Kardinalität, die gleich |S| ist, da jede Klasse von genau einem Professor unterrichtet wird.
  • Die Verknüpfungsselektivität einer Verknüpfungsabfrage ist das Verhältnis der Anzahl der Übereinstimmungen, die sich aus der Verknüpfung ergeben (d.h. die Verknüpfungskardinalität), zum Produkt der Kardinalitäten der verknüpften Tabellen. Folglich ist die Verknüpfungsselektivität einer Pk-Fk-Verknüpfung durch die folgende Gleichung gegeben, wobei R die Primärtabelle ist:
    Figure 00110001
  • Um die Kardinalität und Selektivität einer Fk-Fk-Verknüpfung zu schätzen, betrachten wir folgende SQL-Abfrage, die eine Fk-Fk-Verknüpfung einschließt:
  • [Beispiel 1]
    • WÄHLE·AUS S. T AUS
    • WOBEI S.Fk = T.Fk
  • In diesem Beispiel ist R.Pk der zugrunde liegende Primärschlüssel für S.Fk und auch für T.Fk. Wenn die Werte der Schlüssel, die bei einer solchen Abfrage verwendet werden, im Wesentlichen gleichmäßig in ihren Tabellen verteilt sind und alle Werte der Primärschlüssel hauptsächlich unter den Fremdschlüsseln gefunden werden, ist |S|/|R| für jeden einzelnen Wert eines Primärschlüssels ein guter Schätzwert für die Häufigkeit, mit der der Wert in S.Fk vorkommt, und |T|/|R| ist ein guter Schätzwert für die Häufigkeit, mit der der Wert in T.Fk vorkommt. Man kann deshalb die Verknüpfungskardinalität der Verknüpfung von S.Fk = T.Fk wie folgt schätzen:
    Figure 00120001
  • Von der Definition der Verknüpfungsselektivität und den zuvor erwähnten Annahmen kann man die Verknüpfungsselektivität einer Fk-Fk-Verknüpfung wie folgt schätzen:
    Figure 00120002
  • Man beachte, dass die geschätzte Verknüpfungsselektivität sowohl bei der Pk-Fk-Verknüpfung als auch bei der Fk-Fk- Verknüpfung gleich 1/|R| ist, wobei |R| die Kardinalität der Tabelle mit den Primärschlüsseln ist.
  • Wie in 3 gezeigt ist, kann ein von einem Rechner ausgeführter Prozess 200 genutzt werden, um eine Abfrage mit mehreren Verknüpfungen in Form von einem Verknüpfungsgraphen G = (V,E) darzustellen, wobei V die Gruppe der Scheitelpunkte ist, die den Tabellen in der Abfrage eins zu eins entsprechen, und E eine Gruppe von Kanten ist, die den Verknüpfungsprädikaten (den ausgedrückten und inbegriffenen) in der Abfrage eins zu eins entsprechen. Um den Prozess zu verstehen, betrachten wir die folgende Verknüpfungsabfrage:
  • [Beispiel 2]
    • WÄHLE·AUS R, S, T AUS
    • WOBEI R.Pk = S.Fk
    • UND R.Pk = T.Fk
  • Um einen Verknüpfungsgraphen zu bilden, der diese Verknüpfung darstellt, müssen im ersten Schritt alle ausgedrückten Verknüpfungsprädikate erfasst werden (Schritt 220). Im Beispiel 2 gibt es zwei solche Prädikate: R.Pk = S.Fk und R.Pk = T.Fk. Der nächste Schritt dient der Erfassung aller inbegriffenen Verknüpfungsprädikate (Schritt 230). Im Beispiel 2 bedeuten R.Pk = S.Fk und R.Pk = T.Fk, dass S.Fk = T.Fk.
  • Als Nächstes werden für jedes Prädikat, das erfasst worden ist, ein Paar Scheitelpunkte und eine Kante, die die Scheitelpunkte verbindet, zu dem Graphen hinzugefügt (Schritte 240 bis 290). Wenn ein Prädikat vom Verknüpfungstyp Pk-Fk ist, ist die entsprechende Kante von der Primärtabelle auf die Fremdtabelle gerichtet (Schritt 270). Wenn ein Prädikat vom Verknüpfungstyp Fk-Fk oder von einem anderen Verknüpfungstyp ist, ist die entsprechende Kante nicht gerichtet (Schritt 280). Der Verknüpfungsgraph, der im Beispiel 2 der Verknüpfungsabfrage entspricht, ist in 4 gezeigt.
  • Die Kardinalität einer Verknüpfungsabfrage, bei der die Verknüpfungsspalten unabhängig sind, kann durch Multiplikation geschätzt werden: (1) das Produkt der Selektivitäten der Komponentenverknüpfungen, (2) das Produkt der Kardinalitäten der einzelnen Tabellen bei der Verknüpfung und (3) das Produkt der Selektivitäten der gegebenenfalls vorgenommenen einzelnen Selektionen in den Tabellen. Die Unabhängigkeit der Verknüpfungsspalten ist eine Annahme, die von allen herkömmlichen Optimierern getroffen wird. Die Selektivitäten von Komponentenverknüpfungen der Form P.Pk = S.Fk und S.Fk = T.Fk kann mit Hilfe der vorstehend beschriebenen Verfahren geschätzt werden. Ein Optimierer für Abfragen an Datenbanksysteme kann ein beliebiges anderes Verfahren verwenden, das ihm zur Verfügung steht, um die Selektivität von anderen Arten von Verknüpfungen zu berechnen oder zu schätzen.
  • Wenn man diese Formel auf den Verknüpfungsgraphen 400 (4) anwendet, kann die Kardinalität der Abfrage wie folgt berechnet werden:
    Figure 00140001
  • Obwohl herkömmliche Optimierer für die Verknüpfungsreihenfolge tatsächlich zu diesem Ergebnis kommen, wurde ein besserer Schätzwert gefunden, nämlich:
    Figure 00150001
  • Die Beobachtung, dass sich N Tupeln ergeben, wenn die Tabellen S und T zuerst verknüpft werden, bestätigt dies. Da in jeder Zeile von (S, T) "S.Fk = T.Fk" gilt, verknüpft sich eine jede solche Tupel mit genau einer Tupel von R, und folglich ergeben sich keine weiteren Tupeln.
  • Wie in 5 gezeigt ist, nutzt ein von einem Rechner ausgeführter Prozess 500, mit dem mittels der Darstellung des Verknüpfungsgraphen die Kardinalität einer Mehrfachverknüpfung geschätzt wird, diese Einsicht und kommt zu dem korrekten Ergebnis, indem er den Graphen bei dem Schätzvorgang ändert.
  • Zuerst wird die Verknüpfungsabfrage in Form eines Graphen dargestellt, beispielsweise mittels der Prozedur 200 (3). Als Nächstes werden alle Endscheitelpunkte aus dem Graphen entfernt (Schritte 530 bis 570). Ein Endscheitelpunkt ist ein Scheitelpunkt, auf den keine anderen Scheitelpunkte in dem Graphen zeigen. Der Scheitelpunkt R 410 in 4 ist zum Beispiel ein Endscheitelpunkt.
  • Um Endscheitelpunkte zu entfernen, prüft die Prozedur 500 jeden Scheitelpunkt in dem Graphen (Schritt 540). Wenn der Scheitelpunkt ein Endscheitelpunkt ist, werden er und alle angrenzenden Kanten gelöscht (Schritt 550). Wenn bei diesem Durchlauf des Graphen Endscheitelpunkte gelöscht werden, erfolgt daraufhin ein weiterer Durchlauf (Schritt 570), da das Entfernen eines Endscheitelpunkts dazu führen kann, dass ein weiterer Endscheitelpunkt erzeugt wird.
  • Sobald alle Endscheitelpunkte entfernt worden sind, kann die Verknüpfungskardinalität der ursprünglichen Verknüpfung mit Hilfe des verbleibenden Graphen geschätzt werden, indem Folgendes multipliziert wird: (1) die Selektivität der von jeder Kante dargestellten Verknüpfung, (2) die Kardinalität der von jedem Scheitelpunkt dargestellten Tabelle und (3) die einzelne Selektivität der von jedem Scheitelpunkt dargestellten Tabelle (Schritt 580). Wie vorstehend erwähnt wurde, wird bei dieser Schätzung davon ausgegangen, dass die Verknüpfungsspalten unabhängig sind.
  • Welche Auswirkung das Entfernen von Endscheitelpunkten hat, zeigt sich bei der Verarbeitung der folgenden Abfrage:
  • [Beispiel 3]
    • WÄHLE·AUS R, S, T AUS
    • WOBEI R.Pk = S.Fk
    • UND S.Pk = T.Fk
  • Die Kardinalität des Ergebnisses ist |T|. Die Verknüpfung von R und S stimmt mit allen Zeilen von S überein, und die anschließende Verknüpfung von S und T stimmt mit allen Zeilen von T überein, wobei die Kardinalität dieses Ergebnisses |T| beträgt. Dasselbe Ergebnis erhält man, wenn man die Darstellung des Graphen mit Hilfe des Verfahrens von 5 auswertet.
  • Der Verknüpfungsgraph 600 in 6 stellt die Abfrage im Beispiel 3 dar. Die Kanten 620, 640 sind mit den jeweiligen Verknüpfungsprädikaten bezeichnet. Der Scheitelpunkt R 610 ist ein Endscheitelpunkt. Wenn der Scheitelpunkt R 610 und die daran angrenzende Kante 620 entfernt werden, bleibt eine einzelne Kante 640 übrig, die den Scheitelpunkt S 630 mit dem Scheitelpunkt T 650 verbindet. Der Scheitelpunkt S 630 ist nun ein Endscheitelpunkt, so dass der Scheitelpunkt S 630 und die daran angrenzende Kante 640 entfernt werden und damit nur der Scheitelpunkt T 650 übrig bleibt. Die Kardinalität des Verknüpfungsergebnisses ist daher |T|.
  • Die vorliegende Erfindung wurde in Bezug auf eine Ausführungsform beschrieben. Die Erfindung ist jedoch nicht auf die dargestellte und beschriebene Ausführungsform beschränkt. Beispielsweise wurde die Erfindung in Bezug auf eine Software-Ausführung beschrieben, doch kann die Erfindung in Software oder Hardware oder Firmware oder einer Kombination der drei ausgeführt werden. Der Umfang der Erfindung wird von den Ansprüchen näher angegeben.

Claims (6)

  1. Von einem Rechner ausgeführtes Verfahren, das dazu dient, die Kardinalität einer Abfrage von relationalen Datenbanktabellen zu schätzen, wobei die Abfrage Verknüpfungen zwischen mehreren Tabellen durchführt, wobei das Verfahren die folgenden Schritte umfasst: Berechnen von Daten, die einen Verknüpfungsgraphen (400) der Abfrage mit mehreren Verknüpfungen darstellen, wobei der Verknüpfungsgraph eine Gruppe von Scheitelpunkten (410) und eine Gruppe von Kanten hat, wobei die Gruppe der Scheitelpunkte den Tabellen in der Abfrage mit mehreren Verknüpfungen eins zu eins entspricht, wobei die Gruppe der Kanten den Verknüpfungsprädikaten, die in der Abfrage ausgedrückt und inbegriffen sind, eins zu eins entspricht; und Verwenden der Daten, die den Verknüpfungsgraphen darstellen, um die Kardinalität der Abfrage mit mehreren Verknüpfungen zu schätzen; dadurch gekennzeichnet, dass in dem Fall (260), in dem das Prädikat ein Elternschlüssel-Fremdschlüssel-Prädikat ist, die entsprechende Verbindungskante von der Primärtabelle auf die Fremdtabelle gerichtet (270) ist und die Kante andernfalls (280) ungerichtet ist, wobei das Verfahren des Weiteren Folgendes umfasst: Entfernen (550) von Endscheitelpunkten aus dem Graphen, um einen verkleinerten Graphen zu bilden; und Verwenden der Daten, die den verkleinerten Graphen darstellen, um die Kardinalität der Abfrage mit mehreren Verknüpfungen zu schätzen (580).
  2. Verfahren nach Anspruch 1, das des Weiteren Folgendes umfasst: Kennzeichnen aller in der Abfrage mit mehreren Verknüpfungen ausgedrückten und inbegriffenen Verknüpfungsprädikate; und Bereitstellen eines Paares von Scheitelpunkten und einer Verbindungskante in dem Graphen für jedes Verknüpfungsprädikat.
  3. Verfahren nach Anspruch 1, wobei das Entfernen der Endscheitelpunkte Folgendes umfasst: Prüfen eines jeden Scheitelpunktes in einem Durchlauf des Graphen, und wenn der Scheitelpunkt ein Endscheitelpunkt ist, Löschen des Scheitelpunktes und aller an den Scheitelpunkt angrenzender Kanten; und wenn während eines Durchlaufs des Graphen Endscheitelpunkte gelöscht wurden, Durchführen eines weiteren Durchlaufs des Graphen, um Endscheitelpunkte zu löschen.
  4. Verfahren nach einem vorhergehenden Anspruch, wobei der Schätzvorgang der Kardinalität der Abfrage mit mehreren Verknüpfungen die Multiplikation der Selektivität der Verknüpfung, die von jeder Kante dargestellt wird, der Kardinalität der Tabelle, die von jedem Scheitelpunkt dargestellt wird, und der einzelnen Selektivität der Tabelle, die von jedem Scheitelpunkt dargestellt wird, umfasst.
  5. System, das ein Mittel umfasst, welches so ausgelegt ist, dass es alle Schritte des Verfahrens nach einem vorhergehenden Verfahrensanspruch durchführt.
  6. Rechnerprogramm, das Befehle umfasst, um alle Schritte des Verfahrens nach einem vorhergehenden Verfahrensanspruch durchzuführen, wenn das Rechnerprogramm auf einem Rechnersystem ausgeführt wird.
DE69838158T 1997-05-02 1998-05-05 Auf die Anzahl von in den Tabellen gespeicherten Datensätzen basiertes Ordnen von Verbindungen Expired - Lifetime DE69838158T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/850,246 US6138111A (en) 1997-05-02 1997-05-02 Cardinality-based join ordering
US850246 1997-05-02

Publications (2)

Publication Number Publication Date
DE69838158D1 DE69838158D1 (de) 2007-09-13
DE69838158T2 true DE69838158T2 (de) 2008-04-24

Family

ID=25307638

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69838158T Expired - Lifetime DE69838158T2 (de) 1997-05-02 1998-05-05 Auf die Anzahl von in den Tabellen gespeicherten Datensätzen basiertes Ordnen von Verbindungen

Country Status (7)

Country Link
US (1) US6138111A (de)
EP (1) EP0875838B1 (de)
JP (1) JP4397978B2 (de)
AU (1) AU730251B2 (de)
BR (1) BR9801531A (de)
CA (1) CA2236494A1 (de)
DE (1) DE69838158T2 (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6009432A (en) * 1998-07-08 1999-12-28 Required Technologies, Inc. Value-instance-connectivity computer-implemented database
US7076507B1 (en) * 1998-07-08 2006-07-11 Required Technologies, Inc. Value-instance-connectivity computer-implemented database
US6377943B1 (en) * 1999-01-20 2002-04-23 Oracle Corp. Initial ordering of tables for database queries
US6738755B1 (en) * 1999-05-19 2004-05-18 International Business Machines Corporation Query optimization method for incrementally estimating the cardinality of a derived relation when statistically correlated predicates are applied
JP4428488B2 (ja) * 1999-05-31 2010-03-10 株式会社ターボデータラボラトリー 表形式データの結合方法、上記方法を実現するプログラムを記憶した記憶媒体、および、表形式データを結合する装置
US6397204B1 (en) * 1999-06-25 2002-05-28 International Business Machines Corporation Method, system, and program for determining the join ordering of tables in a join query
US6446063B1 (en) 1999-06-25 2002-09-03 International Business Machines Corporation Method, system, and program for performing a join operation on a multi column table and satellite tables
US6374235B1 (en) 1999-06-25 2002-04-16 International Business Machines Corporation Method, system, and program for a join operation on a multi-column table and satellite tables including duplicate values
US7890491B1 (en) 1999-12-22 2011-02-15 International Business Machines Corporation Query optimization technique for obtaining improved cardinality estimates using statistics on automatic summary tables
US7620615B1 (en) * 2001-10-26 2009-11-17 Teradata Us, Inc. Joins of relations in an object relational database system
US6915290B2 (en) * 2001-12-11 2005-07-05 International Business Machines Corporation Database query optimization apparatus and method that represents queries as graphs
US7085754B2 (en) * 2002-03-04 2006-08-01 International Business Machines Corporation System and a two-pass algorithm for determining the optimum access path for multi-table SQL queries
JP3861044B2 (ja) * 2002-10-24 2006-12-20 株式会社ターボデータラボラトリー 連鎖したジョインテーブルのツリー構造への変換方法、および、変換プログラム
US7076477B2 (en) * 2002-12-19 2006-07-11 International Business Machines Corporation Fast and robust optimization of complex database queries
US7171398B2 (en) * 2003-10-16 2007-01-30 International Business Machines Corporation Outer and exception join to inner join normalization
US7478080B2 (en) * 2004-09-30 2009-01-13 International Business Machines Corporation Canonical abstraction for outerjoin optimization
US7536379B2 (en) * 2004-12-15 2009-05-19 International Business Machines Corporation Performing a multiple table join operating based on generated predicates from materialized results
US7565342B2 (en) * 2005-09-09 2009-07-21 International Business Machines Corporation Dynamic semi-join processing with runtime optimization
US7882121B2 (en) * 2006-01-27 2011-02-01 Microsoft Corporation Generating queries using cardinality constraints
US8285677B2 (en) 2006-06-30 2012-10-09 International Business Machines Corporation Method and apparatus for propagating tables while preserving cyclic foreign key relationships
US9229982B2 (en) 2008-12-23 2016-01-05 SAP France S.A. Processing queries using oriented query paths
US8244715B2 (en) * 2009-04-09 2012-08-14 Paraccel, Inc. System and method for processing database queries
US20110246476A1 (en) * 2010-04-06 2011-10-06 Salesforce.Com, Inc. Method and system for performing a search of a feed in an on-demand enterprise services environment
US9177026B2 (en) 2012-09-27 2015-11-03 LogicBlox, Inc. Leapfrog tree-join
US9183201B1 (en) * 2012-12-20 2015-11-10 Emc Corporation Policy based over sampling with replacement
US9720966B2 (en) * 2012-12-20 2017-08-01 Teradata Us, Inc. Cardinality estimation for optimization of recursive or iterative database queries by databases
US20140214886A1 (en) 2013-01-29 2014-07-31 ParElastic Corporation Adaptive multi-client saas database
KR101951999B1 (ko) * 2016-08-31 2019-05-10 재단법인대구경북과학기술원 낮은 데이터 중복으로 빠른 쿼리 처리를 지원하는 관계형 데이터베이스 저장 시스템, 저장 방법 및 관계형 데이터베이스 저장 방법에 기초한 쿼리를 처리하는 방법
CN110188124A (zh) * 2019-05-10 2019-08-30 中国银行股份有限公司 一种数据获取方法及装置
US11544264B2 (en) 2020-04-29 2023-01-03 Hewlett Packard Enterprise Development Lp Determining query join orders
US20250139092A1 (en) * 2023-10-26 2025-05-01 Oracle International Corporation Histogram-augment dynamic sampling for join cardinality estimation

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5379419A (en) * 1990-12-07 1995-01-03 Digital Equipment Corporation Methods and apparatus for accesssing non-relational data files using relational queries
US5345585A (en) * 1991-12-02 1994-09-06 International Business Machines Corporation Method for optimizing processing of join queries by determining optimal processing order and assigning optimal join methods to each of the join operations
US5412804A (en) * 1992-04-30 1995-05-02 Oracle Corporation Extending the semantics of the outer join operator for un-nesting queries to a data base
US5469568A (en) * 1993-01-07 1995-11-21 International Business Machines Corporation Method for choosing largest selectivities among eligible predicates of join equivalence classes for query optimization
US5664171A (en) * 1994-04-14 1997-09-02 International Business Machines Corporation System and method for query optimization using quantile values of a large unordered data set
DE19515020A1 (de) * 1994-07-01 1996-01-04 Hewlett Packard Co Verfahren und Vorrichtung zum Optimieren von Abfragen mit Gruppieren-nach-Operatoren
US5671403A (en) * 1994-12-30 1997-09-23 International Business Machines Corporation Iterative dynamic programming system for query optimization with bounded complexity
US5758335A (en) * 1996-09-27 1998-05-26 Bull Hn Information Systems Inc. Optimizing table join ordering using graph theory prior to query optimization

Also Published As

Publication number Publication date
CA2236494A1 (en) 1998-11-02
US6138111A (en) 2000-10-24
JPH117454A (ja) 1999-01-12
EP0875838B1 (de) 2007-08-01
DE69838158D1 (de) 2007-09-13
AU730251B2 (en) 2001-03-01
EP0875838A3 (de) 2000-12-27
BR9801531A (pt) 1999-03-30
AU6356898A (en) 1998-11-05
EP0875838A2 (de) 1998-11-04
JP4397978B2 (ja) 2010-01-13

Similar Documents

Publication Publication Date Title
DE69838158T2 (de) Auf die Anzahl von in den Tabellen gespeicherten Datensätzen basiertes Ordnen von Verbindungen
DE3855706T2 (de) Automatisierte Rechnung von Materialien
DE69329265T2 (de) Graphischer Datenbankzugriff
DE10028688B4 (de) Methode, System und Programm für eine Verbindungsoperation in einer mehrspaltigen Tabelle sowie in Satellitentabellen mit doppelten Werten
DE69126795T2 (de) Dateienverwaltungssystem mit graphischer benutzerschnittstelle zum aufstellen von fragen
DE69932344T2 (de) Zugriff zu hierarchischem datenspeicher via sql-eingabe
DE69602364T2 (de) Rechnersystem um semantische objektmodelle von existierenden relationellen datenbanksystemen herzustellen
DE60130475T2 (de) Durchführung von kalkulationen eines tabellenkalkulationstyps in einem datenbanksystem
DE69533193T2 (de) Paralleles verarbeitungssystem zum durchlaufen einer datenbank
DE69424586T2 (de) Verfahren und System zum formulieren interaktiver Abfragen
DE69615459T2 (de) Benutzerschnittstelle für ein volltext-dokumentensuchsystem
DE60121231T2 (de) Datenverarbeitungsverfahren
DE69904588T2 (de) Datenbankzugangswerkzeug
DE69509118T2 (de) Implementierungsunabhängige erweiterbare abfragearchitektur für systeme zur informationswiederauffindung
DE69933187T2 (de) Dokumentensuchverfahren und Dienst
DE69526168T2 (de) Verfahren und Gerät zur Klassifikation von Dokumentinformationen
DE68923569T2 (de) Verfahren und Apparat zum Formatieren eines Dokumentes.
DE4416332A1 (de) Verfahren und Vorrichtung zur Abfrageoptimierung in einem relationalen Datenbanksystem mit Fremdfunktionen
DE3901485A1 (de) Dokumenten-wiedergewinnungssystem
DE69935657T2 (de) Verfahren und gerät zum optimieren der querygenerierung durch selektives verwenden von zusätzen oder schlüsselwerten
DE10120870A1 (de) Navigieren in einem Index für den Zugriff auf eine mehrdimensionale Subjektdatenbank
DE19515020A1 (de) Verfahren und Vorrichtung zum Optimieren von Abfragen mit Gruppieren-nach-Operatoren
DE10103574A1 (de) Aggregierte Prädikate und Suche in einem Datenbankverwaltungssystem
DE69719641T2 (de) Ein Verfahren, um Informationen auf Bildschirmgeräten in verschiedenen Grössen zu präsentieren
DE10056763B4 (de) Generieren von Einschränkungsabfragen mit Hilfe von Tensordarstellungen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)
R082 Change of representative

Ref document number: 875838

Country of ref document: EP

Representative=s name: MUELLER-BORE & PARTNER PATENTANWAELTE, EUROPEA, DE