DE112021006377T5 - Terminieren von abfrageausführungsplänen in einer relationalen datenbank - Google Patents

Terminieren von abfrageausführungsplänen in einer relationalen datenbank Download PDF

Info

Publication number
DE112021006377T5
DE112021006377T5 DE112021006377.4T DE112021006377T DE112021006377T5 DE 112021006377 T5 DE112021006377 T5 DE 112021006377T5 DE 112021006377 T DE112021006377 T DE 112021006377T DE 112021006377 T5 DE112021006377 T5 DE 112021006377T5
Authority
DE
Germany
Prior art keywords
data
partition
query execution
query
rdbs
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.)
Pending
Application number
DE112021006377.4T
Other languages
English (en)
Inventor
Thomas Böhme
Oliver Schiller
James Finnie
Ingo Schuster
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
Publication of DE112021006377T5 publication Critical patent/DE112021006377T5/de
Pending legal-status Critical Current

Links

Images

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
    • 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/24539Query rewriting; Transformation using cached or materialised query results
    • 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/24532Query optimisation of parallel queries

Abstract

Ein Verfahren, ein Computerprogrammprodukt und ein System zum Terminieren eines ersten Abfrageausführungsplans zum Ausführen einer ersten Abfrage, um auf erste Datasets von Daten eines relationalen Datenbanksystems (RDBS) zuzugreifen, und eines zweiten Abfrageausführungsplans zum Ausführen einer zweiten Abfrage, um auf zweite Datasets der Daten zuzugreifen. Die Daten sind in Datenblöcke von Datasets der Daten aufgeteilt, wobei Metadaten des RDBS jeweilige Informationen über mindestens eine Eigenschaft der Datasets eines jeweiligen Datenblocks der Datenblöcke aufweisen. Das Terminieren kann auf der Grundlage einer Überprüfung, ob es eine gemeinsame Partition zwischen einer ersten Partition von Datenblöcken, die gegebenenfalls eine erste Bedingung gemäß der ersten Abfrage erfüllen, und einer zweiten Partition von Datenblöcken, die gegebenenfalls eine zweite Bedingung gemäß der zweiten Abfrage erfüllen, geben kann.

Description

  • HINTERGRUND
  • Die vorliegende Offenbarung betrifft das Gebiet der Datenbanktechnologie und, genauer gesagt, ein Verfahren zum Terminieren von Abfragen, um auf Datasets von Daten eines relationalen Datenbanksystems zuzugreifen.
  • Relationale Datenbanksysteme weisen Datentabellen auf, die miteinander verknüpft sind. Abfragen werden verwendet, um die Datasets auf der Grundlage von Kriterien abzurufen und zu aktualisieren, die in Form von Ausdrücken und Prädikaten formuliert werden. Die Abfragen können in Bezug auf die Prädikate durch ein Abfrageoptimierungsprogramm des relationalen Datenbanksystems optimiert werden. Zum Beispiel können Rechenkosten für ein Durchführen von verschiedenen Varianten, um die Abfragen auf dem Datenbanksystem auszuführen, in Abhängigkeit von den Prädikaten geschätzt werden, und die Abfragen können in Bezug auf eine Verringerung der Rechenkosten optimiert werden. Die optimierten Abfragen können dann in Abfrageausführungspläne umgesetzt werden. Die Abfrageausführungspläne können terminiert werden, indem ein Arbeitslastmanager des relationalen Datenbanksystems verwendet wird.
  • KURZDARSTELLUNG
  • Verschiedene Ausführungsformen stellen ein Computersystem und ein Verfahren bereit, wie durch den Gegenstand der unabhängigen Ansprüche beschrieben ist. Vorteilhafte Ausführungsformen sind in den abhängigen Ansprüchen beschrieben. Ausführungsformen der vorliegenden Offenbarung können frei miteinander kombiniert werden, sofern sie sich nicht gegenseitig ausschließen.
  • In einem Aspekt betrifft die Offenbarung ein Verfahren zum Terminieren eines Satzes von Abfrageausführungsplänen, wobei der Satz von Abfrageausführungsplänen mindestens einen ersten Abfrageausführungsplan zum Ausführen einer ersten Abfrage, um auf erste Datasets von Daten eines relationalen Datenbanksystems, RDBS, zuzugreifen, und einen zweiten Abfrageausführungsplan zum Ausführen einer zweiten Abfrage, um auf zweite Datasets der Daten zuzugreifen, aufweist, wobei die Daten in Datenblöcke von Datasets der Daten aufgeteilt sind, wobei Metadaten des RDBS eine jeweilige Information über mindestens eine Eigenschaft der Datasets eines jeweiligen Datenblocks der Datenblöcke aufweisen. Das Verfahren weist auf:
  • Feststellen einer ersten Partition der Datenblöcke, auf die möglicherweise zugegriffen wird, falls der erste Abfrageausführungsplan auf dem RDBS auf der Grundlage der Metadaten und einer Bedingung, welche die ersten Datasets gemäß der ersten Abfrage erfüllen müssen, ausgeführt wird;
  • Feststellen einer zweiten Partition der Datenblöcke, auf die möglicherweise zugegriffen wird, falls der zweite Abfrageausführungsplan auf dem RDBS auf der Grundlage der Metadaten und einer Bedingung, welche die zweiten Datasets gemäß der zweiten Abfrage erfüllen müssen, ausgeführt wird;
  • Durchführen einer Überprüfung, ob es eine gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition gibt;
  • Terminieren des ersten Abfrageausführungsplans und des zweiten Abfrageausführungsplans auf dem RDBS auf der Grundlage eines Ergebnisses der Überprüfung.
  • In einem weiteren Aspekt betrifft die Offenbarung ein Computerprogrammprodukt, das ein durch einen Computer lesbares Speichermedium aufweist, welches über damit verkörperten, durch einen Computer lesbaren Programmcode verfügt, wobei der durch einen Computer lesbare Programmcode so konfiguriert ist, dass er das Verfahren gemäß vorhergehenden Ausführungsformen ausführt.
  • In einem weiteren Aspekt betrifft die Offenbarung ein Computersystem zum Terminieren eines Satzes von Abfrageausführungsplänen, wobei der Satz von Abfrageausführungsplänen mindestens einen ersten Abfrageausführungsplan zum Ausführen einer ersten Abfrage, um auf erste Datasets von Daten eines relationalen Datenbanksystems, RDBS, zuzugreifen, und einen zweiten Abfrageausführungsplan zum Ausführen einer zweiten Abfrage, um auf zweite Datasets der Daten zuzugreifen, aufweist, wobei die Daten in Datenblöcke von Datasets der Daten aufgeteilt sind, wobei Metadaten des RDBS jeweilige Informationen über mindestens eine Eigenschaft der Datasets eines jeweiligen Datenblocks der Datenblöcke aufweisen. Das Computersystem kann so konfiguriert sein, dass es
    eine erste Partition der Datenblöcke feststellt, auf die möglicherweise zugegriffen wird, falls der erste Abfrageausführungsplan auf dem RDBS auf der Grundlage der Metadaten und einer Bedingung, welche die ersten Datasets gemäß der ersten Abfrage erfüllen müssen, ausgeführt wird;
    eine zweite Partition der Datenblöcke feststellt, auf die möglicherweise zugegriffen wird, falls der zweite Abfrageausführungsplan auf dem RDBS auf der Grundlage der Metadaten und einer Bedingung, welche die zweiten Datensätze gemäß der zweiten Abfrage erfüllen müssen, ausgeführt wird;
    eine Überprüfung, ob es eine gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition gibt, durchführt;
    den ersten Abfrageausführungsplan und den zweiten Abfrageausführungsplan auf dem RDBS auf der Grundlage eines Ergebnisses der Überprüfung terminiert.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die folgenden Ausführungsformen der Offenbarung werden lediglich beispielhalber unter Bezugnahme auf die Zeichnungen ausführlicher erklärt, bei denen:
    • 1 ein Computersystem gemäß dem vorliegenden Gegenstand veranschaulicht;
    • 2 ein mit dem Computersystem von 1 verbundenes Netzwerk darstellt;
    • 3 ein relationales Datenbanksystem darstellt;
    • 4 eine Datentabelle des relationalen Datenbanksystems von 3 darstellt, die eine Zusammensetzung einer ersten Partition von Datenblöcken und eine Zusammensetzung einer zweiten Partition von Datenblöcken gemäß einem ersten Anwendungsfall zeigt;
    • 5 eine Tabelle darstellt, die Metadaten von Datenblöcken der Datentabelle von 4 darstellt;
    • 6 einen Zeitplan zum Terminieren eines ersten Abfrageausführungsplans und eines zweiten Abfrageausführungsplans auf dem RDBS darstellt;
    • 7 eine Zusammensetzung einer ersten Partition von Datenblöcken und eine Zusammensetzung einer zweiten Partition von Datenblöcken gemäß einem zweiten Anwendungsfall darstellt;
    • 8 einen weiteren Zeitplan zum Terminieren eines ersten Abfrageausführungsplans und eines zweiten Abfrageausführungsplans auf dem RDBS darstellt;
    • 9 einen Zeitplan zum Terminieren eines ersten Abfrageausführungsplans und eines zweiten Abfrageausführungsplans auf dem RDBS gemäß einer weiteren Variante darstellt;
    • 10 eine Tabelle darstellt, die weitere Metadaten von Datenblöcken der Datentabelle von 7 angibt;
    • 11 eine Zusammensetzung einer ersten Partition von Datenblöcken und eine Zusammensetzung einer zweiten Partition von Datenblöcken gemäß einer weiteren Variante des ersten Anwendungsfalls darstellt;
    • 12 eine Zusammensetzung einer ersten Partition von Datenblöcken und eine Zusammensetzung einer zweiten Partition von Datenblöcken gemäß einer weiteren Variante des zweiten Anwendungsfalls darstellt;
    • 13 einen Ablaufplan eines durch einen Computer ausgeführten Verfahrens zum Terminieren eines ersten Abfrageausführungsplans und eines zweiten Abfrageausführungsplans auf dem RDBS darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die vorliegende Offenbarung betrifft das Gebiet der Datenbanktechnologie und, genauer gesagt, ein Verfahren zum Terminieren von Abfragen, um auf Datasets von Daten eines relationalen Datenbanksystems zuzugreifen. Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Offenbarung erfolgen zum Zweck der Veranschaulichung, sollen jedoch nicht erschöpfend oder auf die offenbarten Ausführungsformen beschränkt sein. Viele Modifikationen und Varianten sind für den Fachmann erkennbar, ohne vom Umfang und Wesen der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt befindlichen Technologien am besten zu erklären bzw. um anderen Fachleuten das Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.
  • Der Begriff „relationales Datenbanksystem (RDBS)“ in der Verwendung hierin ist auch als relationales Datenbankverwaltungssystem (RDBMS) bekannt. Zudem können die Begriffe „erster Abfrageausführungsplan“ und „zweiter Abfrageausführungsplan“ im Folgenden auch als erster Plan bzw. zweiter Plan bezeichnet sein. Überdies kann die gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition im Folgenden auch als gemeinsame Partition bezeichnet sein. Die Überprüfung, ob es die gemeinsame Partition gibt, kann auch als Überprüfung bezeichnet sein.
  • Die Bedingung, welche die ersten Datasets gemäß der ersten Abfrage erfüllen müssen, wird im Folgenden auch als erste Bedingung bezeichnet. Analog dazu wird die Bedingung, welche die zweiten Datasets gemäß der zweiten Abfrage erfüllen müssen, im Folgenden auch als zweite Bedingung bezeichnet. Der erste Plan umfasst Befehle, um auf die ersten Datasets zuzugreifen, d.h. sie zu lesen, und/oder um die ersten Datasets zu ändern. Ebenso umfasst der zweite Plan Befehle, um auf die zweiten Datasets zuzugreifen, d.h. sie zu lesen, und/oder um die zweiten Datasets zu ändern. Der erste und der zweite Plan können auf der Grundlage der ersten Abfrage bzw. der zweiten Abfrage unter Verwendung eines Abfragecompilers des RDBS erzeugt werden. Die erste und die zweite Abfrage umfasst eine erste Anweisung, welche die erste Bedingung aufweist, bzw. eine zweite Anweisung, welche die zweite Bedingung aufweist.
  • Ein Terminieren des ersten Plans und des zweiten Plans auf der Grundlage des Ergebnisses der Überprüfung hat die folgenden Vorteile. Erstens kann, wenn es keine gemeinsame Partition gibt, auf ein einzelnes Dataset der Daten nur zugegriffen werden, indem entweder der erste Plan oder indem der zweite Plan auf dem RDBS ausgeführt wird. Anders ausgedrückt, auf ein Dataset kann nicht das erste Mal zugegriffen werden, indem der erste Plan ausgeführt wird, und dann ein zweites Mal zugegriffen werden, indem der zweite Plan ausgeführt wird, oder umgekehrt. Daher kann eine Aussage, dass es keine gemeinsame Partition gibt, gleichbedeutend mit der Aussage sein, dass es kein Dataset gibt, auf das bei der Ausführung des ersten Plans zugegriffen werden kann und auf das auch bei der Ausführung des zweiten Plans zugegriffen werden kann. Das heißt, dass die Ausführung des ersten Plans und die Ausführung des zweiten Plans in Bezug auf die Datasets der Daten getrennt voneinander erfolgt, wenn es keine gemeinsame Partition gibt.
  • Zum Beispiel kann der erste Plan keine Aktualisierung von einem der Datasets der Daten veranlassen, das gelesen werden kann, indem der zweite Plan ausgeführt wird, oder umgekehrt. Aus diesem Grund kann ein Durchführen der Überprüfung, ob es die gemeinsame Partition gibt, bei Betrachtung der Datasets der Daten eine Trennung des ersten Plans in Bezug auf den zweiten Plan gewährleisten, wenn es keine gemeinsame Partition gibt. Dies kann Rechenkosten des RDBS verringern, wenn der erste und der zweite Plan parallel durchgeführt werden.
  • Zum Beispiel kann ein Sperrmechanismus des RDBS, um mindestens einen Teil der ersten Partition der Datenblöcke und/oder der zweiten Partition der Datenblöcke zu sperren, so dass auf diese Datenblöcke nur durch Ausführung eines einzelnen Abfrageausführungsplans zu einem gegebenen Zeitpunkt zugegriffen werden kann, eine andere Ausführung des ersten Plans und des zweiten Plans auf dem RDBS bewirken, wenn es keine gemeinsame Partition gibt. Der Sperrmechanismus kann zum Beispiel die erste Partition und/oder die zweite Partition von Datenblöcken bei paralleler Ausführung des ersten und des zweiten Plans nicht sperren, wenn es keine gemeinsame Partition gibt.
  • Jedoch kann der Sperrmechanismus die erste Partition und/oder die zweite Partition von Datenblöcken bei paralleler Ausführung des ersten und des zweiten Plans sperren, wenn es die gemeinsame Partition gibt. Daher kann eine erforderliche Rechenlast, um die erste Partition und/oder die zweite Partition von Datenblöcken zu sperren, verringert werden, wenn es keine gemeinsame Partition gibt. Dies kann vorteilhaft sein, wenn der erste Plan und der zweite Plan auf dieselbe Datentabelle des RDBS zugreifen.
  • Üblicherweise wird der Sperrmechanismus aktiviert, wenn der erste Plan und der zweite Plan auf dieselbe Datentabelle zugreifen. Jedoch können Ausführungsformen der vorliegenden Offenbarung diesen Nachteil überwinden, so dass es möglich ist, den Sperrmechanismus zu deaktivieren, wenn es keine gemeinsame Partition gibt, wenn der erste Plan und der zweite Plan auf dieselbe Datentabelle zugreifen. Wenn auf keine gemeinsamen Partitionen zugegriffen wird, ist eine Trennung des Zugriffs gewährleistet.
  • In einigen Ausführungsformen wird ein Feststellen der Datenblöcke, auf die durch die erste und die zweite Partition zugegriffen wird, auf der Grundlage der Metadaten durchgeführt. Zudem kann das Terminieren auf der Grundlage des Ergebnisses der Überprüfung durchgeführt werden. Informationen aus der Überprüfung über die Daten können auch für das Terminieren verwendet werden. Diese Informationen können verwendet werden, um Einschränkungen hinsichtlich der Ausführung des ersten und/oder des zweiten Plans zu verringern. Eine Verringerung der Einschränkungen kann zur Deaktivierung der Sperrung der ersten und/oder der zweiten Partition führen. Die Verringerung der Einschränkungen kann Rechenressourcen und Rechenzeit im Allgemeinen verringern.
  • Wenn es zwischen den Plänen keine gemeinsame Partition gibt, ist es überdies nicht notwendig, den ersten Plan und den zweiten Plan so zu terminieren, dass sich diese Pläne in Bezug auf ihre Ausführungszeit nicht überlappen. Normalerweise kann dies erfolgen, um zu verhindern, dass der Sperrmechanismus aktiviert wird, zum Beispiel, wenn der erste Plan und der zweite Plan auf dieselbe Datentabelle zugreifen. Daher kann eine Einschränkung in Bezug auf das Terminieren verringert oder verworfen werden, wenn es keine gemeinsame Partition gibt. In diesem Fall kann eine Optimierung des Terminierens des Satzes von Abfrageausführungsplänen als eine Anzahl von Einschränkungen vereinfacht werden, die als Randbedingungen betrachtet werden können, um das Terminieren der Pläne zu optimieren.
  • Auch kann, wenn es eine gemeinsame Partition gibt, ein Ergebnis des ersten Plans für den zweiten Plan verwendet werden, oder umgekehrt. Folglich kann die Anzahl der Datasets, auf die bei der Ausführung des ersten und des zweiten Plans zugegriffen wird, verringert werden. Dadurch werden die Rechenkosten möglicherweise verringert.
  • In einigen Ausführungsformen wird festgestellt, ob die erste Partition ein Verwerfen einer ersten ergänzenden Partition von Datenblöcken auf der Grundlage der Metadaten aufweist, wobei eine erste Bedingung dergestalt ist, dass erste Datasets gemäß der ersten Abfrage erfüllt werden müssen. Die erste ergänzende Partition der Datenblöcke kann Datenblöcke von Daten darstellen, auf die nicht zugegriffen wird, wenn der erste Abfrageausführungsplan auf dem RDBS ausgeführt wird. Überdies wird in einigen Ausführungsformen festgestellt, ob die zweite Partition ein Verwerfen einer zweiten ergänzenden Partition der Datenblöcke unter Verwendung der Metadaten und der zweiten Bedingung, welche die zweiten Datasets gemäß der zweiten Abfrage erfüllen müssen, umfasst. Die zweite ergänzende Partition von Datenblöcken kann Datenblöcke von Daten darstellen, auf die nicht zugegriffen wird, falls der zweite Abfrageausführungsplan auf dem RDBS ausgeführt wird. Die erste ergänzende Partition wird als Ergänzung der ersten Partition betrachtet, und umgekehrt. Das bedeutet, dass die erste Partition und die erste ergänzende Partition disjunkt sind und die Daten zusammen erstellen können. Analog dazu wird die zweite ergänzende Partition als eine Ergänzung der zweiten Partition betrachtet, und umgekehrt. Das bedeutet, dass die zweite Partition und die zweite ergänzende Partition disjunkt sind und die Daten ebenfalls zusammen erstellen.
  • Ein Feststellen, ob die erste Partition die erste ergänzende Partition verwirft, ist vorteilhaft, da nicht alle Datenblöcke, auf die bei der Ausführung des ersten Plans nicht zugegriffen wird, gefunden werden müssen, um die erste ergänzende Partition zu erstellen. Wird hingegen die erste ergänzende Partition nicht festgestellt, indem die erste ergänzende Partition verworfen wird, müssen alle möglichen Datenblöcke, auf die möglicherweise zugegriffen wird, falls der erste Plan ausgeführt wird, gefunden werden, um sicher anzugeben, dass es keine gemeinsame Partition gibt, falls das Ergebnis der Überprüfung dies nahelegt. Dazu müssen die Metadaten von allen jeweiligen Datenblöcken der Daten mit der ersten Bedingung abgeglichen werden. Diese Art von Routine abzuschließen, kann länger dauern, insbesondere, wenn die Datenblöcke sehr klein und zahlreich sind.
  • Jedoch kann die Erzeugung der ersten ergänzenden Partition jederzeit abgebrochen werden und muss nicht abgeschlossen werden. In diesem Fall, wenn die erste Partition als Ergänzung der ersten ergänzenden Partition festgestellt wird, kann das Ergebnis der Überprüfung als sicher betrachtet werden, wenn das Ergebnis so ist, dass es keine gemeinsame Partition gibt. Folglich kann diese Ausführungsform ein Erzeugen der ersten Partition beschleunigen. Ebenso kann das Feststellen der zweiten Partition durch Verwerfen der zweiten ergänzenden Partition aus demselben Grund, der auf die zweite Partition, die zweite Bedingung und die zweite ergänzende Partition angewendet wird, zu den gleichen Vorteilen führen. Die Metadaten können im Vergleich mit einem Index zum Beispiel, der jedes Dataset der Daten indexiert, als weitaus kompaktere Informationen über die Daten betrachtet werden. Solche kompakten Informationen sind für eine Überprüfung gegebenenfalls nicht besonders geeignet, wenn einer der Datasets der Daten die erste oder die zweite Bedingung erfüllen kann. Jedoch können diese kompakten Informationen in Form der Metadaten sehr nützlich sein, um die Datenblöcke von Datasets zu verwerfen, auf die nicht zugegriffen werden kann, um die erste oder zweite Bedingung für diese Datasets zu testen. Dieser Effekt kann zum Terminieren verwendet werden.
  • In einigen Ausführungsformen umfasst das Verfahren auch ein Terminieren eines ersten Abfrageausführungsplans und eines zweiten Abfrageausführungsplans dergestalt, dass ein Ergebnis des ersten Abfrageausführungsplans in einem Cache-Speicher des RDBS zur Verwendung des zweiten Abfrageausführungsplans zur Verfügung steht, wenn es eine gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition gibt. Zum Beispiel können der erste Plan und der zweite Plan so terminiert werden, dass mindestens ein Teil des Ergebnisses des ersten Plans in dem Cache-Speicher gespeichert ist, wenn der zweite Plan auf dem RDBS ausgeführt wird, oder umgekehrt, wenn es die gemeinsame Partition gibt. Diese Ausführungsform kann sicherstellen, dass mindestens ein Teil des Ergebnisses des ersten Plans für die Ausführung des zweiten Plans verwendet werden kann, oder umgekehrt, wenn es die gemeinsame Partition gibt. Das Terminieren kann als Funktion eines aktuellen, in dem Cache-Speicher verfügbaren Speicherbereichs und einer geschätzten erforderlichen Größe des Caches, um die Ergebnisse oder den Teil der Ergebnisse des ersten Plans oder des zweiten Plans zu speichern, durchgeführt werden.
  • In einigen Ausführungsformen umfasst das Verfahren auch ein Aktivieren des Sperrmechanismus des RDBS, um die Datenblöcke der gemeinsamen Partition zu sperren, so dass auf diese Datenblöcke nur durch Ausführung eines einzelnen Abfrageausführungsplans zu einem gegebenen Zeitpunkt zugegriffen werden kann. Der Sperrmechanismus kann aktiviert werden, wenn es die gemeinsame Partition gibt. Bei dem einzelnen Ausführungsplan kann es sich entweder um den ersten Plan oder den zweiten Plan handeln. Diese Variante stellt die Trennung der Daten sicher und wird bei Ausführung des ersten und des zweiten Plans beibehalten. Der Begriff „Trennung der Daten“ in der Verwendung hierin bedeutet, dass gleichzeitige Ausführungen der Abfrageausführungspläne des Satzes die Daten in demselben Zustand belassen, der bei sequenzieller Ausführung dieser Pläne erreicht worden wäre.
  • In einigen Ausführungsformen umfasst das Verfahren auch ein Terminieren des ersten Abfrageausführungsplans und des zweiten Abfrageausführungsplans dergestalt, dass der erste Abfrageausführungsplan und der zweite Abfrageausführungsplan parallel auf dem RDBS ausgeführt werden, wenn es keine gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition gibt. Eine parallele Ausführung des ersten und des zweiten Plans kann die Ausführung des Satzes von Abfrageausführungsplänen beschleunigen. Falls es die gemeinsame Partition nicht gibt, können der erste und der zweite Plan parallel ausgeführt werden, und die erforderliche Rechenlast, um die erste Partition und/oder die zweite Partition von Datenblöcken zu sperren, kann sehr gering oder gar null sein. Daher kann eine gewonnene Beschleunigung der Ausführung des Satzes von Abfrageausführungsplänen durch den Sperrmechanismus nicht verschlechtert werden. Wenn es die gemeinsame Partition nicht gibt, d.h., die Größe der gemeinsamen Partition ist null, werden der erste und der zweite Plan parallel ausgeführt, ohne einen Verlust der Trennung der Daten zu riskieren. In den meisten Fällen wird der Sperrmechanismus für die erste und/oder die zweite Partition nicht aktiviert, wenn es keine gemeinsame Partition gibt.
  • In einigen Ausführungsformen umfasst das Verfahren ein Deaktivieren des Sperrmechanismus des RDBS, um mindestens einen Teil der ersten Partition der Datenblöcke und der zweiten Partition der Datenblöcke zu sperren. Der Sperrmechanismus stellt sicher, dass auf diese Datenblöcke nur durch die Ausführung eines einzelnen Abfrageausführungsplans zu einem gegebenen Zeitpunkt zugegriffen wird. Gemäß Ausführungsformen kann der Sperrmechanismus deaktiviert werden, wenn es keine gemeinsame Partition gibt. Das Deaktivieren des Sperrmechanismus kann durchgeführt werden, wenn der erste Plan und der zweite Plan parallel ausgeführt werden. Je nach Sperrmechanismus kann der Sperrmechanismus bei der Ausführung des ersten und des zweiten Plans auch dann Rechenressourcen zuordnen, wenn es keine gemeinsame Partition gibt. Zum Beispiel umfasst der Sperrmechanismus eine Funktion, um zu prüfen, ob es die gemeinsame Partition gibt. In diesem Fall kann ein Deaktivieren des Sperrmechanismus die Rechenkosten verringern, wenn es keine gemeinsame Partition gibt.
  • In einigen Ausführungsformen handelt es sich bei Informationen hinsichtlich der Eigenschaft der Datasets des jeweiligen Datenblocks um einen Bereich, in dem Datenwerte der Datasets des jeweiligen Datenblocks liegen. Der Bereich kann durch einen minimalen Datenwert in dem jeweiligen Datenblock und einen maximalen Datenwert in dem jeweiligen Datenblock definiert werden. Die Verwendung des Bereichs als die jeweiligen Informationen über die Eigenschaft der Datasets des jeweiligen Datenblocks, d.h. die Verwendung des Bereichs als Metadaten, hat den Vorteil, dass mit nur zwei Werten, dem minimalen Datenwert und dem maximalen Datenwert, wichtige Informationen dieser Datasets bereitgestellt werden, was eine Ausführungszeit des ersten oder des zweiten Plans verringern kann. Zum Beispiel werden ein oder mehrere jeweilige Datenblöcke auf der Grundlage des Bereichs verworfen, wenn die Datasets dieser Blöcke nicht der ersten oder zweiten Bedingung entsprechen. Der Bereich, in dem die Datenwerte der Datasets des jeweiligen Datenblocks liegen, kann eine Information der kompaktesten Informationen dieser Datasets darstellen und auch zur Verringerung der Ausführungszeit des ersten und zweiten Plans beitragen.
  • In einigen Ausführungsformen werden die Daten des RDBS unter Verwendung einer Datentabelle gespeichert. Der Bereich wird durch einen minimalen Datenwert in einer Spalte der Datentabelle in ihrem jeweiligen Datenblock und einen maximalen Wert in der Spalte der Datentabelle in ihrem jeweiligen Datenblock definiert. Der jeweilige Datenblock kann einen jeweiligen Block von Zeilen der Datentabelle angeben. Wenn sich der Bereich auf Datenwerte der Spalte der Tabelle bezieht, kann ein Feststellen der ersten und zweiten Partition, insbesondere ein Verwerfen der ersten und der zweiten ergänzenden Partition, auf einer feineren Ebene durchgeführt werden. Dies kann zu einer Verstärkung der ersten und/oder der zweiten ergänzenden Partition und zu einer Verringerung der Größe der ersten und/oder der zweiten Partition führen. Somit können die Rechenkosten für ein Durchführen des ersten und/oder des zweiten Plans verringert werden.
  • In einigen Ausführungsformen kann die Eigenschaft der Datasets eine Verteilung von Datenwerten innerhalb des jeweiligen Datenblocks sein. Die jeweiligen Informationen über die Eigenschaft der Datasets des jeweiligen Datenblocks können die Verteilung der Datenwerte beschreiben. Die Verteilung der Datenwerte innerhalb des jeweiligen Datenblocks kann mehr Informationen über die Datasets des jeweiligen Blocks enthalten und eine Feststellung der ersten und der zweiten Partition ermöglichen, insbesondere während der Ausführung des Verwerfens der ersten und der zweiten ergänzenden Partition. Aus demselben vorstehend erwähnten Grund kann dies die Rechenkosten für ein Durchführen des ersten und/oder des zweiten Plans verringern. Die die Verteilung beschreibenden Informationen umfassen eine Anzahl von Intervallen, welche den vorstehend erwähnten Bereich in Teile gleicher Länge teilen. Die die Verteilung beschreibenden Informationen können des Weiteren eine jeweilige Anzahl von Datasets aufweisen, die jedem Intervall entsprechen, wobei die jeweilige Anzahl von Datasets die Anzahl von Datasets des jeweiligen Datenblocks angibt, der Datenwerte aufweist, welche in dem jeweiligen Intervall liegen. Alternativ oder zusätzlich umfassen die die Verteilung beschreibenden Informationen eine Art der Verteilung der Datenwerte der Datasets.
  • In einigen Ausführungsformen werden die Daten des RDBS unter Verwendung einer Datentabelle mit einer Verteilung gespeichert, die sich auf eine Verteilung der Datenwerte in einer Spalte der Datentabelle in jedem jeweiligen Datenblock bezieht. Die jeweiligen Informationen über die Eigenschaft der Datasets des jeweiligen Datenblocks beschreiben die Verteilung der Datenwerte in der Spalte der Datentabelle innerhalb des jeweiligen Datenblocks. Der jeweilige Datenblock kann einen jeweiligen Block von Zeilen der Datentabelle angeben. Dies kann den Grad der Verfeinerung beim Durchführen des ersten und/oder des zweiten Plans erhöhen. Ebenso kann eine Steigerung der Verfeinerung die Rechenkosten für ein Durchführen des ersten und/oder des zweiten Plans verringern.
  • In einigen Ausführungsformen wird die Verteilung durch einen Dichtevektor dargestellt. Der Vektor kann eine kompakte Form der jeweiligen Anzahl von Datasets darstellen, die jedem Intervall entsprechen.
  • In einigen Ausführungsformen kann einer der beiden Abfrageausführungspläne, der erste oder der zweite Abfrageausführungsplan, zu einem aktuellen Zeitpunkt ausgeführt werden und der andere der beiden Abfrageausführungspläne kann so terminiert werden, dass er zu einem zukünftigen Zeitpunkt gestartet wird. Dies beschreibt die Verwendung des vorgestellten Verfahrens, falls einer der Abfrageausführungspläne, der erste oder der zweite Plan, aktuell auf dem RDBS ausgeführt wird und der andere aktuell nicht ausgeführt wird, aber für eine zukünftige Ausführung terminiert ist. Daher sind die Ausführungsformen der Offenbarung nicht auf eine Anwendung beschränkt, bei der der erste Plan und der zweite Plan in der Zukunft ausgeführt werden, wenn man den aktuellen Zeitpunkt als einen Moment betrachtet, in dem das Terminieren durchgeführt wird.
  • In einigen Ausführungsformen werden der erste Abfrageausführungsplan und der zweite Abfrageausführungsplan so terminiert, dass sie unmittelbar nacheinander ausgeführt werden. Dies kann die Wahrscheinlichkeit erhöhen, dass das Ergebnis des ersten Plans in dem Cache-Speicher des RDBS zur Verwendung des zweiten Plans zur Verfügung steht, oder umgekehrt. Diese Ausführungsform ist vorteilhaft, wenn es eine gemeinsame Partition gibt.
  • In einigen Ausführungsformen umfasst das Verfahren ein Empfangen der Metadaten von einem Abfrageoptimierungsprogramm des RDBS. Das Abfrageoptimierungsprogramm kann die Metadaten zu seinem eigenen Zweck nutzen, nämlich zur Optimierung des ersten und/oder des zweiten Plans. Aus diesem Grund hat das Abfrageoptimierungsprogramm die Metadaten, die sich auf den jeweiligen Datenblock der Datenblöcke aus einer Metadaten-Datenbank beziehen, möglicherweise schon in einen Cache-Speicher des Abfrageoptimierungsprogramms geladen. Ein Arbeitslastmanager des RDBS kann das Terminieren durchführen, indem er die Metadaten aus dem Cache-Speicher des Abfrageoptimierungsprogramms liest. Dies geht gegebenenfalls schneller vonstatten, als wenn man die Metadaten erneut aus der Metadaten-Datenbank liest.
  • In einigen Ausführungsformen umfasst das Verfahren ein Empfangen von Informationen zur Angabe der ersten Partition und der zweiten Partition von dem Abfrageoptimierungsprogramm des RDBS. Das Abfrageoptimierungsprogramm kann die erste und die zweite Anweisung der ersten bzw. der zweiten Abfrage mit den Metadaten kreuzen. Dabei kann das Abfrageoptimierungsprogramm die Informationen zur Angabe der ersten Partition und der zweiten Partition abrufen. Anders ausgedrückt, dies beschreibt eine effiziente Verwendung der durch das Abfrageoptimierungsprogramm bereits berechneten Informationen.
  • In einigen Ausführungsformen umfasst das Verfahren ein Setzen von Randbedingungen für ein Ausführen des Abfrageoptimierungsprogramms des RDBS dergestalt, dass die gemeinsame Partition nichtig ist. Wenn das Abfrageoptimierungsprogramm den ersten und den zweiten Plan so erzeugt, dass es keine gemeinsame Partition gibt, können sich die vorstehend erwähnten Vorteile ergeben. Es kann vorkommen, dass der erste und/oder der zweite Plan weniger effizient ist, wenn er als ein einzelner Abfrageausführungsplan als solcher betrachtet wird. Jedoch kann die Verringerung der Rechenlast, wenn die gemeinsame Partition nichtig ist, eine solche Effizienzminderung überwinden.
  • Ausführungsformen der vorliegenden Offenbarung können unter Verwendung einer Datenverarbeitungseinheit ausgeführt werden, die auch als Computersystem, als Client oder Server bezeichnet werden kann. Unter Bezugnahme auf 1 ist eine schematische Darstellung eines Beispiels eines Computersystems 10 gezeigt. Bei dem Computersystem 10 kann es sich lediglich um ein Beispiel eines geeigneten Computersystems handeln und es soll gegebenenfalls keine Einschränkung hinsichtlich des Nutzungsumfangs oder der Funktionalität von Ausführungsformen der hierin beschriebenen Offenbarung bedeuten. Ungeachtet dessen kann das Computersystem 10 ausgeführt werden und/oder jedwede der vorstehend dargelegten Funktionalität durchführen.
  • Das Computersystem 10 umfasst ein Computersystem/einen Server 12, das bzw. der mit zahlreichen anderen Umgebungen oder Konfigurationen eines Universal- oder Spezial-Datenverarbeitungssystems betrieben werden kann. Zu Beispielen von hinlänglich bekannten Datenverarbeitungssystemen, -umgebungen und/oder -konfigurationen, die zur Verwendung mit dem Computersystem/Server 12 geeignet sein können, gehören, ohne darauf beschränkt zu sein, ein Stapelspeicher 303 eines in 3 gezeigten relationalen Datenbanksystems 300, RDBS 300, ein Abfragecompiler 302 des RDBS 300, Personal Computer-Systeme, Server-Computersysteme, Thin Clients, Thick Clients, Handheld- oder Laptop-Einheiten, Mehrprozessorsysteme, auf einem Mikroprozessor beruhende Systeme, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Datenverarbeitungsumgebungen, die beliebige der vorstehenden Systeme oder Einheiten umfassen, und dergleichen.
  • In einem Beispiel kann das Computersystem/der Server 12 in Form eines Arbeitslastmanagers 301 des in 3 gezeigten RDBS 300 ausgeführt sein. Das RDBS 300 umfasst den Abfragecompiler 302, um Abfragen, wie beispielsweise eine erste Abfrage 311 und eine zweite Abfrage 312, in Abfrageausführungspläne, wie beispielsweise einen ersten Abfrageausführungsplan 321, der im Folgenden auch als erster Plan 321 bezeichnet wird, und einen zweiten Abfrageausführungsplan 322, der im Folgenden auch als zweiter Plan 322 bezeichnet wird, zu kompilieren.
  • Das Computersystem/der Server 12 kann in dem allgemeinen Kontext von durch ein Computersystem ausführbaren Anweisungen, wie beispielsweise Programmmodulen, die durch ein Computersystem ausgeführt werden, beschrieben werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und so weiter umfassen, die bestimmte Tasks durchführen oder bestimmte abstrakte Datentypen ausführen. Das Computersystem/der Server 12 kann in verteilten Datenverarbeitungsumgebungen in die Praxis umgesetzt werden, in denen Tasks durch ferne Verarbeitungseinheiten durchgeführt werden, die durch ein Übertragungsnetzwerk verbunden sind. In einer verteilten Datenverarbeitungsumgebung können sich Programmmodule sowohl in lokalen als auch in fernen Speichermedien eines Computersystems, zu denen auch Hauptspeichereinheiten gehören, befinden. Ein Beispiel für die fernen Verarbeitungseinheiten kann der Abfragecompiler 302 sein, der Aufgaben für den Arbeitslastmanager 301 durchführen kann.
  • Wie in 1 gezeigt ist, ist das Computersystem/der Server 12 in dem Computersystem 10 in Form einer Universal-Datenverarbeitungseinheit gezeigt. Zu den Komponenten des Computersystems/Servers 12 können, ohne darauf beschränkt zu sein, ein oder mehrere Prozessoren oder Verarbeitungseinheiten 16, ein Systemspeicher 28 und ein Bus 18 gehören, der verschiedene Systemkomponenten, darunter den Systemspeicher 28, mit dem Prozessor 16 verbindet. Der Bus 18 stellt eine oder mehrere von beliebigen Busstrukturen von mehreren Arten von Busstrukturen dar, darunter einen Speicherbus oder einen Speichercontroller, einen peripheren Bus, einen Accelerated Graphics Port und einen Prozessor- oder lokalen Bus, der beliebige einer Vielfalt an Busarchitekturen verwendet. Beispielhaft, und nicht als Einschränkung, gehören zu solchen Architekturen der Bus „Industry Standard Architecture (ISA)“, der Bus „Micro Channel Architecture (MCA)“, der Bus „Enhanced ISA (EISA)“, der lokale Bus „Video Electronics Standards Association (VESA)“, der Bus „Peripheral Component Interconnect (PCI)“ und der Bus „Peripheral Component Interconnect Express (PCIe)“.
  • Das Computersystem/der Server 12 umfasst üblicherweise eine Vielfalt an durch ein Computersystem lesbaren Datenträgern. Bei diesen Datenträgern kann es sich um jedwede verfügbaren Datenträger handeln, auf die durch das Computersystem/den Server 12 zugegriffen werden kann, und zu ihnen gehören sowohl flüchtige und nicht flüchtige als auch austauschbare und nicht austauschbare Datenträger.
  • Der Systemspeicher 28 kann durch ein Computersystem lesbare Datenträger in Form von flüchtigem Speicher, wie beispielsweise einen Direktzugriffsspeicher (RAM) 30, ein Solid-State-Laufwerk (SSD) und/oder einen Cache-Speicher 32, umfassen. Das Computersystem/der Server 12 kann des Weiteren weitere auswechselbare/nicht auswechselbare, flüchtige/nicht flüchtige Speichermedien eines Computersystems umfassen. Lediglich als Beispiel kann ein Speichersystem 34 für das Lesen von und das Schreiben auf einen nicht austauschbaren, nicht flüchtigen Magnetdatenträger (nicht gezeigt und üblicherweise als „Festplattenlaufwerk“ bezeichnet) bereitgestellt werden. Obgleich nicht gezeigt, können ein Magnetplattenlaufwerk für das Lesen von und das Schreiben auf eine austauschbare, nicht flüchtige Magnetplatte (z.B. eine „Diskette“) und ein optisches Plattenlaufwerk für das Lesen von oder das Schreiben auf eine austauschbare, nicht flüchtige optische Platte, wie beispielsweise ein CD-ROM, DVD-ROM oder andere optische Datenträger, bereitgestellt sein. In diesen Fällen kann jedes Laufwerk durch eine oder mehrere Datenträgerschnittstellen mit dem Bus 18 verbunden sein. Wie weiter dargestellt und nachstehend beschrieben wird, kann der Speicher 28 mindestens ein Programmprodukt umfassen, das über einen Satz (z.B. zumindest einen) von Programmmodulen verfügt, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Offenbarung ausführen.
  • Ein Programm/Dienstprogramm 40, das über einen Satz (zumindest einen) von Programmmodulen 50 verfügt, kann beispielhaft, und nicht als Einschränkung, im Speicher 28 gespeichert sein, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Das Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine Kombination daraus können jeweils eine Ausführung einer Netzwerkumgebung umfassen. Die Programmmodule 50 können im Allgemeinen so konfiguriert sein, dass sie die Funktionen und/oder die Vorgehensweisen von Ausführungsformen der Offenbarung ausführen, die hierin beschrieben sind.
  • Der Begriff „Programm“ oder „Programmmodul“ in der Verwendung hierin bezieht sich auf einen Satz von Anweisungen, der Befehle enthält, um durch den Prozessor 16 durchgeführte Aktionen hervorzurufen, wenn der Prozessor 16 die Befehle lesen kann. Der Satz von Anweisungen kann in Form eines durch einen Computer lesbaren Programms, einer Routine, Unterroutine oder als Teil einer Bibliothek vorliegen, das/die/der durch den Prozessor 16 ausgeführt und/oder durch ein weiteres, durch den Prozessor 16 ausgeführtes Programm aufgerufen werden kann. Vorzugsweise kann es sich bei den Programmmodulen 50 um ausführbare Programme handeln, die gemäß einem Typ einer Hardware-Plattform des Computersystems/Servers 12 kompiliert werden.
  • Das Computersystem/der Server 12 kann auch mit einer oder mehreren externen Einheiten 14 wie beispielsweise einer Tastatur, einer Zeigereinheit, einem Bildschirm 24 usw.; mit einer oder mehreren Einheiten, die es einem Benutzer ermöglicht/ermöglichen, mit dem Computersystem/Server 12 zu interagieren; und/oder beliebigen Einheiten (z.B. Netzwerkkarte, Modem usw.), die dem Computersystem/Server 12 einen Datenaustausch mit einer oder mehreren anderen Datenverarbeitungseinheiten ermöglichen, Daten austauschen. Ein solcher Datenaustausch kann über Eingabe-/Ausgabe-(E/A-)Schnittstellen 22 erfolgen. Dennoch kann das Computersystem/der Server 12 mit einem oder mehreren Netzwerken wie zum Beispiel einem lokalen Netz (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netz (z.B. dem Internet) über einen Netzwerkadapter 20 Daten austauschen. Wie dargestellt ist, kann der Netzwerkadapter 20 mit den anderen Komponenten des Computersystems/Servers 12 über den Bus 18 Daten austauschen. Es sollte klar sein, dass auch andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 12 verwendet werden könnten, obgleich diese nicht gezeigt sind. Zu Beispielen gehören, ohne darauf beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Anordnungen von Plattenlaufwerken, RAID-Systeme, Bandlaufwerke sowie Speichersysteme zur Datenarchivierung usw.
  • Ein Computersystem, wie beispielsweise das in 1 gezeigte Computersystem 10, kann zur Durchführung von hier offenbarten Operationen verwendet werden, wie beispielsweise einer ersten, zweiten, dritten, vierten, fünften und sechsten Operation. Zum Beispiel kann der Prozessor 16 die erste, zweite, dritte, vierte, fünfte und sechste Operation durchführen.
  • Das Computersystem 10 kann so konfiguriert sein, dass es einen Satz von Abfrageausführungsplänen 331 von 3 terminiert. Der Satz von Abfrageausführungsplänen 331 umfasst mindestens den ersten Abfrageausführungsplan 321 zur Ausführung der ersten Abfrage 311, um auf erste Datasets 411 von Daten 400 des RDBS in 4 zuzugreifen. Überdies umfasst der Satz 331 den zweiten Abfrageausführungsplan 322 zur Ausführung der zweiten Abfrage 312, um auf zweite Datasets 412 der Daten 400 zuzugreifen. Die Daten 400 können in Datenblöcke 410 von Datasets der Daten 400 aufgeteilt sein. Metadaten 304 des RDBS 300 umfassen eine jeweilige Information über mindestens eine Eigenschaft der Datasets von jeweiligen Datenblöcken 410. Die Datenblöcke 410 können zum Beispiel einen ersten Datenblock 410-1, einen zweiten Datenblock 410-2, einen dritten Datenblock 410-3, einen vierten Datenblock 410-4, einen fünften Datenblock 410-5 und einen sechsten Datenblock 410-6 aufweisen. Die Datasets der Datenblöcke 410 sind in 4 in Form von Kästchen angegeben.
  • Die erste Operation umfasst ein Feststellen einer ersten Partition 401 der Datenblöcke 410, auf die möglicherweise zugegriffen wird, falls der erste Abfrageausführungsplan 321 auf dem RDBS 300 auf der Grundlage der Metadaten 304 und einer Bedingung ausgeführt wird, welche die ersten Datasets 411 gemäß der ersten Abfrage 311 erfüllen müssen, die im Folgenden als die erste Bedingung bezeichnet wird.
  • Die zweite Operation umfasst ein Feststellen einer zweiten Partition 402 der Datenblöcke 410, auf die möglicherweise zugegriffen wird, falls der zweite Abfrageausführungsplan 322 auf dem RDBS 300 auf der Grundlage der Metadaten 304 und einer Bedingung ausgeführt wird, welche die zweiten Datasets 412 gemäß der zweiten Abfrage 312 erfüllen müssen, die im Folgenden als die zweite Bedingung bezeichnet wird.
  • Die dritte Operation umfasst ein Durchführen einer Überprüfung, ob es eine gemeinsame Partition von Datenblöcken der ersten Partition 401 und der zweiten Partition 402 gibt.
  • Diese vierte Operation umfasst ein Terminieren des ersten Abfrageausführungsplans 321 und des zweiten Abfrageausführungsplans 322 auf dem RDBS 300 auf der Grundlage eines Ergebnisses der Überprüfung.
  • Die fünfte Operation umfasst ein Feststellen der ersten Partition 401, indem eine erste ergänzende Partition 701 der Datenblöcke 410 auf der Grundlage der Metadaten 304 und der ersten Bedingung verworfen wird.
  • Die sechste Operation umfasst ein Feststellen der zweiten Partition 402, indem eine zweite ergänzende Partition 702 der Datenblöcke 410 auf der Grundlage der Metadaten 304 und der zweiten Bedingung verworfen wird.
  • Der Prozessor 16 kann die erste, zweite, dritte, vierte, fünfte und sechste Operation durchführen, indem er ein erstes Programmmodul 41, ein zweites Programmmodul 42, ein drittes Programmmodul 43, ein viertes Programmmodul 44, ein fünftes Programmmodul 45 bzw. ein sechstes Programmmodule 46 ausführt. Der erste Prozessor 102 kann ein Hauptprogramm 51 ausführen. Das Hauptprogramm 51 kann eine Ausführung der Programmmodule 41, 42, 43, 44, 45, 46 auf dem Prozessor 16 starten.
  • Bei dem Computersystem 10 kann es sich um einen eigenständigen Computer ohne Netzkonnektivität handeln, der zu verarbeitende Daten, wie beispielsweise den ersten Plan 321 und den zweiten Plan 322, durch eine lokale Schnittstelle empfangen kann. Eine solche Operation kann jedoch ebenso unter Verwendung eines Computersystems durchgeführt werden, das mit einem Netzwerk, wie beispielsweise einem Übertragungsnetzwerk und/oder einem Datenverarbeitungsnetzwerk, verbunden ist.
  • 2 zeigt eine beispielhafte Datenverarbeitungsumgebung, in der ein Computersystem, wie beispielsweise das Computersystem 10, unter Verwendung des Netzwerkadapters 20 mit einem Netzwerk 200 verbunden ist. Das RDBS 300 umfasst das Netzwerk 200 und kann auch als ein Computersystem, wie beispielsweise das Computersystem 10, betrachtet werden. Das RDBS 300 und vorzugsweise Komponenten des RDBS 300, wie beispielsweise der Abfragecompiler 302, umfassen Komponenten, die ähnlich den Komponenten des Computersystems 10 sind, wie beispielsweise einen oder mehrere Prozessoren oder Verarbeitungseinheiten wie den Prozessor 16, einen Systemspeicher wie beispielsweise den Systemspeicher 28, und einen Bus wie beispielsweise den Bus 18, der verschiedene Systemkomponenten verbindet. Ohne Einschränkung kann das Netzwerk 200 ein Übertragungsnetzwerk, wie beispielsweise das Internet, ein lokales Netz (LAN, local area network), ein drahtloses Netz, wie beispielsweise ein mobiles Übertragungsnetzwerk, und dergleichen sein. Das Netzwerk 200 umfasst ein Datenverarbeitungsnetzwerk wie beispielsweise ein Cloud-Computing-Netzwerk. Das Computersystem 10 kann zu verarbeitende Daten, wie beispielsweise den ersten Plan 321 und den zweiten Plan 322, von dem Netzwerk 200 empfangen und/oder einer anderen Datenverarbeitungseinheit, die über das Netzwerk 200 mit dem Computersystem 10 verbunden ist, ein Berechnungsergebnis, wie beispielsweise einen Zeitplan 600, der eine Reihenfolge der Ausführung von mindestens dem ersten Plan 321 und dem zweiten Plan 322 aufweist, bereitstellen.
  • Das Computersystem 10 kann als Reaktion auf eine über das Netzwerk 200 empfangene Anforderung hierin beschriebene Operationen, wie beispielsweise die erste, zweite, dritte, vierte, fünfte und sechste Operation, ganz oder teilweise durchführen. Im Einzelnen kann das Computersystem 10 diese Operationen in einer verteilten Berechnung zusammen mit einem oder mehreren weiteren Computersystemen durchführen, die über das Netzwerk 200 mit dem Computersystem 10 verbunden sein können. Zu diesem Zweck können das Datenverarbeitungssystem 10 und/oder beliebige weitere beteiligte Computersysteme unter Verwendung des Netzwerks 200 auf weitere Datenverarbeitungsressourcen, wie beispielsweise einen dedizierten oder gemeinsam genutzten Hauptspeicher, zugreifen.
  • Gemäß einem in 4 gezeigten Beispiel können die Daten 400 in Form einer Datentabelle 420 gespeichert sein. Die Datentabelle 420 umfasst Zeilen und Spalten 430. Die Zeilen können jeweils ein einzelnes Dataset, das oftmals auch als Datensatz bezeichnet wird, der Daten 400 angeben. Daher kann sich, dem senkrechten Pfeil 421 in 4 folgend, die Anzahl der Zeilen mit jedem Dataset um eins erhöhen. Jedoch darf die Tabelle 420 in dem Beispiel von 4 keinen Index der Zeilen haben. Jede der Spalten 430 kann ein anderes Merkmal angeben. Zum Beispiel kann in Bezug auf eine jeweilige Zeile eine erste Spalte 431 ein Geburtsdatum einer jeweiligen Person angeben, eine zweite Spalte 432 kann einen Nachnamen der jeweiligen Person angeben, eine dritte Spalte 433 einen Vornamen der jeweiligen Person und eine vierte Spalte 434 ein Saldo eines Guthabenkontos der jeweiligen Person. Somit kann die Tabelle 420 gemäß diesem Beispiel eine Bankkonto-Datenbank darstellen. Jedes Dataset umfasst eine Anzahl von Einträgen, die mit der Anzahl der Spalten 430 übereinstimmen. Jeder Eintrag von einem der Datasets ist in 4 in Form eines Kästchens angegeben. Das Geburtsdatum der jeweiligen Person kann durch einen Geburtsmonat, gefolgt von einem Tag der Geburt der jeweiligen Person angegeben werden.
  • Im Folgenden kann ein Beispiel aufgezeigt werden, bei dem die jeweiligen Informationen über die Eigenschaft der Datasets der jeweiligen Datenblöcke 410 ein Bereich des jeweiligen Datenblocks 410 sein können, welcher einen Bereich angibt, in dem Datenwerte der Datasets des jeweiligen Datenblocks 410 liegen. Der jeweilige Bereich kann durch einen jeweiligen minimalen Datenwert in dem jeweiligen Datenblock 410-1 und einen jeweiligen maximalen Datenwert in dem jeweiligen Datenblock 410-N definiert werden.
  • Überdies kann das Beispiel gemäß den vorgelegten Figuren eine Variante darstellen, bei der der Bereich des jeweiligen Datenblocks 410-N durch einen jeweiligen minimalen Datenwert der ersten Spalte 431 der Datentabelle 420 innerhalb des jeweiligen Datenblocks 410-N und einen jeweiligen maximalen Datenwert der ersten Spalte 431 der Datentabelle 420 innerhalb des jeweiligen Datenblocks 410-N definiert wird. Der jeweilige Datenblock 410-N kann einen jeweiligen Block von Zeilen der Datentabelle 420 angeben, d.h., gemäß dem Beispiel, einen jeweiligen Block von Datensätzen der Datentabelle 420.
  • Die Metadaten 304 umfassen die Bereiche der jeweiligen Datenblöcke 410-. Die Metadaten 304 können in Form einer Tabelle gespeichert sein und umfassen Werte, die in der in 5 gezeigten Tabelle 500 angegeben sind. Gemäß der Datentabelle 420, die sechs Datenblöcke aufweist, umfasst die Tabelle 500 sechs Zeilen. In der jeweiligen Zeile der Tabelle 500 können das durch die Datasets des jeweiligen Datenblocks 410-N angegebene früheste Geburtsdatum und das späteste Geburtsdatum gespeichert sein. Der Einfachheit halber werden nur ein Monat und ein Tag der Geburtsdaten betrachtet. Die durch die Tabelle 500 angegebenen Metadaten 304 können einem Beispiel entsprechen, bei dem die Datasets in Bezug auf die Datenwerte der ersten Spalte 431, folglich das Geburtsdatum der Personen, geordnet werden. Jedoch ist dies in weiteren Anwendungen möglicherweise nicht der Fall. Im Allgemeinen dient die vorstehend gezeigte Auswahl des Typs der Daten, wie beispielsweise des Geburtsdatums und der Namen, nur dazu, das vorgestellte Verfahren auf einfache Weise zu erklären. Natürlich können, in Bezug auf andere mögliche Anwendungen, die Daten 400 auf technische Datenwerte ausgerichtet sein, wie beispielsweise Koeffizienten einer Materialeigenschaft oder Daten zur Angabe von chemischen Elementen, deren Verhalten oder chemische Reaktionen.
  • Eine erste einfache Anwendung des vorgestellten Verfahrens kann auf eine Lotterie einschließlich der Verwendung eines Zufallszahlengenerators ausgerichtet sein. Der Zufallszahlengenerator kann Datenwerte erzeugen, um den ersten Satz von zufälligen Geburtsdaten anzugeben. Der erste Satz umfasst das erste Geburtsdatum und das zweite Geburtsdatum. Die Person, deren Geburtsdatum gleich einem der zufälligen Geburtsdaten des ersten Satzes ist, kann 100$ gewinnen. Die erste Abfrage 311, um den Gewinn auf den Guthabenkonten der Personen unter Berücksichtigung des ersten Satzes von zufälligen Geburtsdaten zu realisieren, kann in der SQL-Sprache wie folgt formuliert werden:
    • "Aktualisiere Datentabelle 420
    • Setze Saldo des Guthabenkontos = Saldo des Guthabenkontos + 100$
    • Wobei Geburtsdatum = ‚erstes Geburtsdatum‘ ODER ‚zweites Geburtsdatum‘"
    • Ein erstes Prädikat, "Geburtsdatum = ‚erstes Geburtsdatum‘ ODER ‚zweites Geburtsdatum‘ ", kann die erste Bedingung darstellen, welche die ersten Datasets 411 gemäß der ersten Abfrage 311 erfüllen müssen.
  • Die Lotterie kann ein Erstellen eines zweiten Satzes von zufälligen Geburtsdaten unter Verwendung des Zufallszahlengenerators einschließen. Der zweite Satz umfasst ein drittes Geburtsdatum und ein viertes Geburtsdatum. Die Person, deren Geburtsdatum gleich einem der zufälligen Geburtsdaten des zweiten Satzes ist, kann 100$ gewinnen. Die zweite Abfrage 312, um den Gewinn auf den Guthabenkonten der Personen unter Berücksichtigung des zweiten Satzes von zufälligen Geburtsdaten zu realisieren, kann in der SQL-Sprache wie folgt formuliert werden:
    • "Aktualisiere Datentabelle 420
    • Setze Saldo des Guthabenkontos = Saldo des Guthabenkontos + 100$
    • Wobei Geburtsdatum = ‚drittes Geburtsdatum‘ ODER ‚viertes Geburtsdatum‘"
  • Ein zweites Prädikat, "Geburtsdatum = ‚drittes Geburtsdatum‘ ODER ‚viertes Geburtsdatum‘ ", kann die zweite Bedingung darstellen, welche die zweiten Datasets 412 gemäß der ersten Abfrage 311 erfüllen müssen.
  • Der Abfragecompiler kann die erste und die zweite Abfrage 311, 312 in den ersten Plan 321 bzw. den zweiten Plan 322 kompilieren. Der erste Plan 321 umfasst Werte zur Angabe des ersten und des zweiten zufälligen Geburtsdatums und ein erstes ausführbares Programm, das Anweisungen zur Aktualisierung der Datasets enthält, welche die erste Bedingung erfüllen, d.h. der ersten Datasets 411. Zu diesen Anweisungen gehören zum Beispiel ein erster Ladebefehl, um alle Datasets der ersten Partition 401 zu laden, und ein erster Vergleichsbefehl, um einen Vergleich zu starten, um die erste Bedingung für die Datasets der Datenblöcke der ersten Partition 401 zu testen.
  • Ebenso umfasst der zweite Plan 322 Werte zur Angabe des dritten und des vierten zufälligen Geburtsdatums und ein zweites ausführbares Programm, das Anweisungen zur Aktualisierung der Datasets enthält, welche die zweite Bedingung erfüllen, d.h. der zweiten Datasets 412. Zu diesen Anweisungen gehören zum Beispiel ein zweiter Ladebefehl, um alle Datasets der zweiten Partition 402 zu laden, und ein zweiter Vergleichsbefehl, um einen Vergleich zu starten, um die zweite Bedingung für die Datasets der Datenblöcke der zweiten Partition 402 zu testen.
  • In einem ersten Anwendungsfall des vorgestellten Verfahrens ist das erste zufällige Geburtsdatum der „02.02.“, das zweite zufällige Geburtsdatum ist der „01.07.“, das dritte zufällige Geburtsdatum ist der „02.10.“ und das vierte zufällige Geburtsdatum ist der „10.12.“.
  • Der Abfragecompiler 302 kann den ersten Ladebefehl erzeugen, um alle Datasets der ersten Partition 401 unter Verwendung der Metadaten 304, in diesem Fall der Tabelle 500, in einem anderen Fall der Tabelle 1000, des ersten und des zweiten zufälligen Geburtsdatums und des ersten Prädikats zu laden. Der Abfragecompiler 302 kann folgern, dass die ersten Datasets 411 nur in dem ersten Datenblock 410-1 und dem dritten Datenblock 410-3 unter Verwendung des ersten und des zweiten zufälligen Geburtsdatums und der Metadaten 304 gespeichert werden können. Analog dazu kann der Abfragecompiler 302 den zweiten Ladebefehl erzeugen, um alle Datasets der zweiten Partition 402 unter Verwendung der Metadaten 304, des dritten und des vierten zufälligen Geburtsdatums und des zweiten Prädikats zu laden. Der Abfragecompiler 302 kann folgern, dass die zweiten Datasets 412 nur in dem fünften Datenblock 410-5 und dem sechsten Datenblock 410-6 unter Verwendung des dritten und des vierten zufälligen Geburtsdatums und der Metadaten 304 gespeichert werden können. Der erste Plan 321 und der zweite Plan 322 können von dem Abfragecompiler 302 an den Stapelspeicher 303 übertragen werden.
  • Gemäß dem ersten Anwendungsfall umfasst die erste Partition 401 von Datasets, auf die möglicherweise zugegriffen wird, falls der erste Plan 321 ausgeführt wird, den ersten Datenblock 410-1 und den dritten Datenblock 410-3. Überdies, bei Betrachtung des ersten Anwendungsfalls, umfasst die zweite Partition 402 von Datasets, auf die möglicherweise zugegriffen wird, falls der zweite Plan 322 ausgeführt wird, den fünften Datenblock 410-5 und den sechsten Datenblock 410-6. Daher kann der erste Anwendungsfall einen Fall darstellen, bei dem die erste Partition 401 und die zweite Partition 402 disjunkt sind. 4 zeigt eine mögliche Verteilung der ersten Datasets 411 und der zweiten Datasets 412 und eine mögliche Zusammensetzung der ersten Partition 401 und der zweiten Partition 402 für den ersten Anwendungsfall.
  • Der Arbeitslastmanager 301 kann Informationen zur Angabe der ersten Partition 401 und der zweiten Partition 402 von dem Abfrageoptimierungsprogramm 302 empfangen. In diesem Beispiel kann das Feststellen der ersten und der zweiten Partition 401, 402 durch eine ferne Einheit, hier den Abfragecompiler 302, in Bezug auf den Arbeitslastmanager 301 durchgeführt werden. Der Arbeitslastmanager 301 kann die Überprüfung, ob es eine gemeinsame Partition von Datenblöcken der ersten Partition 401 und der zweiten Partition 402 gibt, durchführen. Bei Betrachtung des ersten Anwendungsfalls kann ein Ergebnis dieser Überprüfung sein, dass es keine gemeinsame Partition gibt. In diesem Fall kann der Arbeitslastmanager 301 den ersten Plan 321 und den zweiten Plan 322 so terminieren, dass der erste Plan 321 und der zweite Plan 322 parallel auf dem RDBS 300 ausgeführt werden. Um dies zu realisieren, kann der Arbeitslastmanager 301 einen Zeitplan 600 so erzeugen, dass der erste Plan 321 und der zweite Plan 322 für eine parallele Ausführung terminiert werden, wie in 6 gezeigt ist. Der Zeitplan 600 kann feststellen, welche Datenverarbeitungseinheit eines Racks von Datenverarbeitungseinheiten 340 des RDBS 300 welchen Ausführungsplan des Satzes 331 von Ausführungsplänen ausführen kann. Das Rack 340 umfasst zum Beispiel eine erste Datenverarbeitungseinheit 341, eine zweite Datenverarbeitungseinheit 342, eine dritte Datenverarbeitungseinheit 343, eine vierte Datenverarbeitungseinheit 344 und eine fünfte Datenverarbeitungseinheit 345. Der Zeitplan umfasst eine Warteschlange für jede Datenverarbeitungseinheit des Racks 340, d.h., eine erste Warteschlange 601 für die erste Datenverarbeitungseinheit 341, eine zweite Warteschlange 602 für die zweite Datenverarbeitungseinheit 342 usw.
  • Der erste und der zweite Plan 321, 322 können als Datenverarbeitungsjobs für die Datenverarbeitungseinheiten betrachtet werden und sind in 6 in Form von Kästchen gezeigt. Unbeschriftete Kästchen in 6 können weitere Datenverarbeitungsjobs angeben, die ebenfalls durch den Arbeitslastmanager 301 terminiert werden können. In dem ersten Anwendungsfall kann der Zeitplan 600 feststellen, dass der erste Plan 321 durch die erste Datenverarbeitungseinheit 341 und der zweite Plan 322 durch die zweite Datenverarbeitungseinheit 342 ausgeführt wird, wobei beide Pläne 321, 322 mindestens teilweise parallel terminiert werden. Daher ist der Zeitplan 600 für den ersten Anwendungsfall so ausgelegt, dass es eine zeitliche Überlappung des ersten Plans 321 und des zweiten Plans 322 gibt. In einem Beispiel können der erste Plan 321 und der zweite Plan 322 so terminiert werden, dass sie gleichzeitig starten.
  • Die linken Teile von einer der jeweiligen Warteschlangen geben einen aktuellen Datenverarbeitungsjob an, der auf der jeweiligen Datenverarbeitungseinheit ausgeführt wird, welche dieser jeweiligen Warteschlange zugewiesen ist. Die Warteschlangen erstrecken sich von links nach rechts und zeigen durch die jeweiligen Datenverarbeitungseinheiten in zeitlicher Reihenfolge auszuführende Jobs, wobei der jeweilige letzte Job einer jeden Datenverarbeitungseinheit auf der rechten Seite einer jeden jeweiligen Warteschlange gezeigt ist.
  • Die Datenverarbeitungseinheiten des Racks 340 können auf einen Datenbankserver 306 des RDBS 300 zugreifen, der verschiedene Datentabellen umfasst, welche die Datentabelle 420 zur Ausführung der Ausführungspläne des Satzes 331, darunter den ersten Plan 321 und den zweiten Plan 322, aufweisen.
  • In einem Beispiel kann der Arbeitslastmanager 301 Informationen, ob die erste Partition 401 und die zweite Partition 402 disjunkt sind oder nicht, von dem Abfrageoptimierungsprogramms 302 empfangen. In diesem Beispiel führt der Arbeitslastmanager 301 gegebenenfalls nur die Erzeugung des Zeitplans 600 durch, und der Abfragecompiler 302 führt gegebenenfalls die anderen Schritte des vorgestellten Verfahrens durch.
  • In dem ersten Anwendungsfall kann der Arbeitslastmanager 301 einen Sperrmechanismus des RDBS deaktivieren. Der Sperrmechanismus kann so konfiguriert sein, dass er mindestens einen Teil der ersten Partition 401 der Datenblöcke und/oder der zweiten Partition 402 der Datenblöcke sperrt. Ein Sperren dieser Datenblöcke kann bewirken, dass auf diese Datenblöcke nur durch Ausführung eines einzelnen Abfrageausführungsplans, zum Beispiel des ersten Plans 321 oder des zweiten Plans 322, zu einem gegebenen Zeitpunkt zugegriffen werden kann.
  • In einem zweiten Anwendungsfall des vorgestellten Verfahrens ist das erste zufällige Geburtsdatum der „02.02.“, das zweite zufällige Geburtsdatum ist der „01.07.“, das dritte zufällige Geburtsdatum ist der „10.07.“ und das vierte zufällige Geburtsdatum ist der „10.12.“.
  • Gemäß dem zweiten Anwendungsfall umfasst die erste Partition 401 von Datasets, auf die möglicherweise zugegriffen wird, falls der erste Plan 321 ausgeführt wird, den ersten Datenblock 410-1 und den dritten Datenblock 410-3. Überdies, bei Betrachtung des ersten Anwendungsfalls, umfasst die zweite Partition 402 von Datasets, auf die möglicherweise zugegriffen wird, falls der zweite Plan 322 ausgeführt wird, den dritten Datenblock 410-3 und den sechsten Datenblock 410-6. Daher kann der zweite Anwendungsfall einen Fall darstellen, bei dem die erste Partition 401 und die zweite Partition 402 nicht disjunkt sind. 7 zeigt eine mögliche Verteilung der ersten Datasets 411 und der zweiten Datasets 412 und eine mögliche Zusammensetzung der ersten Partition 401 und der zweiten Partition 402 für den zweiten Anwendungsfall.
  • Ähnlich wie bei dem ersten Anwendungsfall kann der Arbeitslastmanager 301 die Überprüfung, ob es eine gemeinsame Partition von Datenblöcken der ersten Partition 401 und der zweiten Partition 402 in dem zweiten Anwendungsfall gibt, durchführen. Bei Betrachtung des zweiten Anwendungsfalls kann ein Ergebnis dieser Überprüfung sein, dass es eine gemeinsame Partition gibt. Die gemeinsame Partition umfasst den dritten Datenblock 410-3. In diesem Fall kann der Arbeitslastmanager 301 gemäß einer ersten Variante den ersten Plan 321 und den zweiten Plan 322 so terminieren, dass ein Ergebnis des ersten Plans 321 in einem Cache-Speicher des RDBS 300 zur Verwendung des zweiten Plans 322 zur Verfügung steht. Eine Möglichkeit, dies zu realisieren, kann darin bestehen, dass der Arbeitslastmanager 301 den Zeitplan 600 so erzeugt, dass der zweite Plan 322 in derselben Warteschlange, zum Beispiel, gemäß einem ersten Beispiel der ersten Variante, in der ersten Warteschlange 601, wie der erste Plan 321 terminiert wird. Dies kann es ermöglichen, dass die Datasets der Datenblöcke der ersten Partition 401 in dem Cache der ersten Datenverarbeitungseinheit 341 gespeichert werden können, nachdem die erste Datenverarbeitungseinheit 341 den ersten Plan 321 ausgeführt hat und wenn die erste Datenverarbeitungseinheit 341 den zweiten Plan 322 ausführt. 8 zeigt den durch den Arbeitslastmanager 301 erzeugten Zeitplan 600 gemäß dem ersten Beispiel der ersten Variante des zweiten Anwendungsfalls.
  • Wenn beide Pläne 321, 322 in der zweiten Warteschlange 602 terminiert werden, kann dies analog dazu ermöglichen, dass die Datasets der Datenblöcke der ersten Partition 401 in dem Cache der zweiten Datenverarbeitungseinheit 342 gespeichert werden können, nachdem die zweite Datenverarbeitungseinheit 342 den ersten Plan 321 ausgeführt hat und wenn die zweite Datenverarbeitungseinheit 342 den zweiten Plan 322 ausführt.
  • Gemäß einem zweiten Beispiel der ersten Variante des zweiten Anwendungsfalls kann der Arbeitslastmanager 301 den ersten Plan 321 und den zweiten Plan 322 so terminieren, dass der erste Plan 321 und der zweite Plan 322 für eine unmittelbar nacheinander stattfindende Ausführung terminiert werden. Eine Möglichkeit, dies zu realisieren, kann darin bestehen, dass der Arbeitslastmanager 301 den Zeitplan 600 so erzeugt, dass der zweite Plan 322 in derselben Warteschlange, zum Beispiel in der ersten Warteschlange 601, wie der erste Plan 321 terminiert wird und dabei direkt auf den ersten Plan 321 folgt. 9 zeigt den durch den Arbeitslastmanager 301 erzeugten Zeitplan 600 gemäß dem zweiten Beispiel der ersten Variante des zweiten Anwendungsfalls. Überdies zeigt 9 ein Beispiel des Zeitplans 600, bei dem der erste Plan 321 zu einem aktuellen Zeitpunkt ausgeführt wird und der zweite Plan 322 so terminiert wird, dass er zu einem zukünftigen Zeitpunkt gestartet wird. Um gemäß einem weiteren Beispiel eine Anwendung des zweiten Beispiels der ersten Variante des zweiten Anwendungsfalls darzustellen, muss der erste Plan 321 jedoch nicht unbedingt zu dem aktuellen Zeitpunkt ausgeführt werden.
  • Im Allgemeinen, bei Betrachtung aller vorstehenden Anwendungsfälle, Varianten und Beispiele, kann der Arbeitslastmanager 301 in einem Beispiel den Zeitplan 600 an einen Jobmanager am Rack 340 senden. In einem weiteren Beispiel kann der Arbeitslastmanager 301 die Datenverarbeitungsjobs, zum Beispiel den ersten Plan 321 und/oder den zweiten Plan 322 im Rack 340 unter Verwendung des Zeitplans 600 starten. In einem Beispiel umfasst das Rack 340 den Arbeitslastmanager 301. In diesem Fall kann der Arbeitslastmanager 301 die Datenverarbeitungsjobs in dem Rack 340 steuern und protokollieren.
  • Im Folgenden kann eine weitere Variante beschrieben werden, bei der die Datasets nicht, wie vorstehend erwähnt, nach dem Geburtsdatum geordnet sind. In diesem Fall können die Metadaten 304 in Bezug auf die erste Spalte Werte enthalten, die in der in 10 gezeigten Tabelle 1000 angegeben sind. Gemäß der Datentabelle 420, die sechs Datenblöcke aufweist, umfasst die Tabelle 1000 sechs Zeilen. In der jeweiligen Zeile der Tabelle 500 können das durch die Datasets des jeweiligen Datenblocks 410-N angegebene früheste Geburtsdatum und das späteste Geburtsdatum gespeichert werden.
  • Bei der weiteren Variante und gemäß dem ersten Anwendungsfall, d.h., das erste zufällige Geburtsdatum ist der „02.02.“, das zweite zufällige Geburtsdatum ist der „01.07.“, das dritte zufällige Geburtsdatum ist der „02.10.“ und das vierte zufällige Geburtsdatum ist der „10.12.“, umfasst die erste Partition 401 von Datasets, auf die möglicherweise zugegriffen wird, falls der erste Plan 321 ausgeführt wird, den ersten Datenblock 410-1, den zweiten Datenblock 410-2 und den dritten Datenblock 410-3. Überdies, bei Betrachtung der weiteren Variante und des ersten Anwendungsfalls, umfasst die zweite Partition 402 von Datasets, auf die möglicherweise zugegriffen wird, falls der zweite Plan 322 ausgeführt wird, den vierten Datenblock 410-4, den fünften Datenblock 410-5 und den sechsten Datenblock 410-6. Bei Betrachtung der weiteren Variante kann daher der erste Anwendungsfall auch einen Fall darstellen, bei dem die erste Partition 401 und die zweite Partition 402 disjunkt sind. 11 zeigt eine mögliche Verteilung der ersten Datasets 411 und der zweiten Datasets 412 und eine mögliche Zusammensetzung der ersten Partition 401 und der zweiten Partition 402 bei Betrachtung der weiteren Variante und des ersten Anwendungsfalls.
  • Bei der weiteren Variante umfasst das Feststellen der ersten Partition 401 ein Verwerfen der ersten ergänzenden Partition 701 der Datenblöcke 410 auf der Grundlage der Metadaten 304 und der ersten Bedingung. Die erste ergänzende Partition 701 kann Datenblöcke der Datenblöcke 410 darstellen, auf die nicht zugegriffen wird, falls der erste Plan 321 auf dem RDBS 300 ausgeführt wird. Überdies umfasst das Feststellen der zweiten Partition 402 ein Verwerfen der zweiten ergänzenden Partition 702 der Datenblöcke 410 auf der Grundlage der Metadaten 304 und der zweiten Bedingung. Die zweite ergänzende Partition 702 kann Datenblöcke der Datenblöcke 410 darstellen, auf die nicht zugegriffen wird, falls der zweite Plan 322 auf dem RDBS 300 ausgeführt wird.
  • Der Arbeitslastmanager 301 oder der Abfragecompiler 302 kann das Verwerfen der ersten ergänzenden Partition 701 unter Verwendung der durch die Tabelle 1000 angegebenen Metadaten 304, des ersten und des zweiten zufälligen Geburtsdatums und des ersten Prädikats durchführen. Ebenso kann der Arbeitslastmanager 301 oder der Abfragecompiler 302 das Verwerfen der zweiten ergänzenden Partition 702 unter Verwendung der durch die Tabelle 1000 angegebenen Metadaten 304, des dritten und des vierten zufälligen Geburtsdatums und des zweiten Prädikats durchführen. Wenn zum Beispiel das erste und das zweite zufällige Geburtsdatum nicht in dem Bereich des jeweiligen, durch die Tabelle 1000 angegebenen Datenblocks 410-N liegen, kann dieser Datenblock 410-N verworfen werden, um die erste Partition 401 festzustellen. Gemäß dem ersten Anwendungsfall umfasst die erste ergänzende Partition 701 den vierten Datenblock 410-4, den fünften Datenblock 410-5 und den sechsten Datenblock 410-6. Die erste Partition 401 kann dann als ein Satz von Datenblöcken festgestellt werden, der die Datenblöcke 410 ohne die erste ergänzende Partition 701 umfasst. Analog dazu kann die zweite ergänzende Partition 702 festgestellt werden und die zweite Partition 402 auf der Grundlage der zweiten ergänzenden Partition 702.
  • Wie bei der weiteren Variante des ersten Anwendungsfalls - die erste Partition 401 und die zweite Partition 402 sind disjunkt, d.h., es gibt keine gemeinsame Partition der ersten Partition 401 und der zweiten Partition 402, kann der Arbeitslastmanager 301 das Terminieren ähnlich wie bei der Variante des ersten Anwendungsfalls durchführen, bei dem die Datasets in Bezug auf das Geburtsdatum geordnet sind.
  • Bei Betrachtung der weiteren Variante und des zweiten Anwendungsfalls, d.h., das erste zufällige Geburtsdatum ist der „02.02.“, das zweite zufällige Geburtsdatum ist der „01.07.“, das dritte zufällige Geburtsdatum ist der „10.07.“ und das vierte zufällige Geburtsdatum ist der „10.12.“, umfasst die erste Partition 401 von Datasets, auf die möglicherweise zugegriffen wird, falls der erste Plan 321 ausgeführt wird, den ersten Datenblock 410-1, den zweiten Datenblock 410-2 und den dritten Datenblock 410-3. Überdies, bei Betrachtung der weiteren Variante und des zweiten Anwendungsfalls, umfasst die zweite Partition 402 von Datasets, auf die möglicherweise zugegriffen wird, falls der zweite Plan 322 ausgeführt wird, alle Datenblöcke 410. Daher kann, bei Betrachtung der weiteren Variante, der zweite Anwendungsfall auch einen Fall darstellen, bei dem die erste Partition 401 und die zweite Partition 402 nicht disjunkt sind. 12 zeigt eine mögliche Verteilung der ersten Datasets 411 und der zweiten Datasets 412 und eine mögliche Zusammensetzung der ersten Partition 401 und der zweiten Partition 402 bei Betrachtung der weiteren Variante und des zweiten Anwendungsfalls.
  • Wie bei der weiteren Variante des zweiten Anwendungsfalls - die erste Partition 401 und die zweite Partition 402 sind nicht disjunkt, d.h., es gibt eine gemeinsame Partition der ersten Partition 401 und der zweiten Partition 402, kann der Arbeitslastmanager 301 das Terminieren ähnlich wie bei der Variante des zweiten Anwendungsfalls durchführen, bei dem die Datasets in Bezug auf das Geburtsdatum geordnet sind.
  • 13 zeigt einen Ablaufplan eines durch einen Computer ausgeführten Verfahrens zum Terminieren des Satzes 331 von Abfrageausführungsplänen.
  • Im Schritt 1001 kann die erste Partition 401 der Datenblöcke, auf die möglicherweise zugegriffen wird, falls der erste Abfrageausführungsplan 321 auf dem RDBS 300 ausgeführt wird, auf der Grundlage der Metadaten 304 und der ersten Bedingung festgestellt werden.
  • Im Schritt 1002 kann die zweite Partition 402 der Datenblöcke, auf die möglicherweise zugegriffen wird, falls der zweite Abfrageausführungsplan 322 auf dem RDBS 300 ausgeführt wird, auf der Grundlage der Metadaten 304 und der zweiten Bedingung festgestellt werden.
  • Im Schritt 1003 kann die Überprüfung, ob es eine gemeinsame Partition von Datenblöcken der ersten Partition 401 und der zweiten Partition 402 gibt, durchgeführt werden.
  • Im Schritt 1004 können der erste Abfrageausführungsplan 321 und der zweite Abfrageausführungsplan 322 auf dem RDBS 300 auf der Grundlage eines Ergebnisses der Überprüfung terminiert werden.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen Integrationsstufe technischer Details handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen darauf umfassen, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden
  • Offenbarung auszuführen. Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine auswechselbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein auswechselbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übermittelte elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk umfasst Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Offenbarung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für eine integrierte Schaltung oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch einen beliebigen Typ Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel durch das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field-programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Offenbarung durchzuführen.
  • Aspekte der vorliegenden Offenbarung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Offenbarung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung. In diesem Zusammenhang kann jeder Block in dem Ablaufplan oder in den Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, das bzw. der eine oder mehrere ausführbare Anweisungen zur Ausführung der festgelegten logischen Funktion(en) aufweist. In einigen alternativen Ausführungen können die in den Blöcken angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit als ein Schritt durchgeführt, gleichzeitig ausgeführt, im Wesentlichen gleichzeitig ausgeführt, in einer sich teilweise oder ganz zeitlich überlappenden Weise ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Im Folgenden wird die Offenbarung nochmals durch eine Auflistung von Klauseln beschrieben, die mehrere mögliche, nicht ausschließliche Kombinationen von hierin offenbarten Merkmalen hervorheben:
  • Ein durch einen Computer ausgeführtes Verfahren zum Terminieren eines Satzes von Abfrageausführungsplänen, wobei der Satz von Abfrageausführungsplänen mindestens einen ersten Abfrageausführungsplan zum Ausführen einer ersten Abfrage, um auf erste Datasets von Daten eines relationalen Datenbanksystems, RDBS, zuzugreifen, und einen zweiten Abfrageausführungsplan zum Ausführen einer zweiten Abfrage, um auf zweite Datasets der Daten zuzugreifen, aufweist, wobei die Daten in Datenblöcke von Datasets der Daten aufgeteilt sind, wobei Metadaten des RDBS eine jeweilige Information über mindestens eine Eigenschaft der Datasets eines jeweiligen Datenblocks der Datenblöcke aufweisen, wobei das Verfahren umfasst:
  • Feststellen einer ersten Partition der Datenblöcke, auf die möglicherweise zugegriffen wird, falls der erste Abfrageausführungsplan auf dem RDBS auf der Grundlage der Metadaten und einer Bedingung, welche die ersten Datasets gemäß der ersten Abfrage erfüllen müssen, ausgeführt wird;
  • Feststellen einer zweiten Partition der Datenblöcke, auf die möglicherweise zugegriffen wird, falls der zweite Abfrageausführungsplan auf dem RDBS auf der Grundlage der Metadaten und einer Bedingung, welche die zweiten Datasets gemäß der zweiten Abfrage erfüllen müssen, ausgeführt wird;
  • Durchführen einer Überprüfung, ob es eine gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition gibt;
  • Terminieren des ersten Abfrageausführungsplans und des zweiten Abfrageausführungsplans auf dem RDBS auf der Grundlage eines Ergebnisses der Überprüfung.
  • Verfahren nach Klausel 1, wobei das Feststellen der ersten Partition ein Verwerfen einer ersten ergänzenden Partition der Datenblöcke auf der Grundlage der Metadaten und der Bedingung, welche die ersten Datasets gemäß der ersten Abfrage erfüllen müssen, aufweist, wobei die erste ergänzende Partition der Datenblöcke Datenblöcke der Daten darstellt, auf die nicht zugegriffen wird, falls der erste Abfrageausführungsplan auf dem RDBS ausgeführt wird, und wobei das Feststellen der zweiten Partition ein Verwerfen einer zweiten ergänzenden Partition der Datenblöcke unter Verwendung der Metadaten und der Bedingung, welche die zweiten Datasets gemäß der zweiten Abfrage erfüllen müssen, aufweist, wobei die zweite ergänzende Partition der Datenblöcke Datenblöcke der Daten darstellt, auf die nicht zugegriffen wird, falls der zweite Abfrageausführungsplan auf dem RDBS ausgeführt wird.
  • Verfahren nach Klausel 1 oder 2, wobei das Verfahren des Weiteren ein Terminieren des ersten Abfrageausführungsplans und des zweiten Abfrageausführungsplans dergestalt umfasst, dass der erste Abfrageausführungsplan und der zweite Abfrageausführungsplan parallel auf dem RDBS ausgeführt werden, wenn es keine gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition gibt.
  • Verfahren nach Klausel 1 oder 2, wobei das Verfahren des Weiteren ein Terminieren des ersten Abfrageausführungsplans und des zweiten Abfrageausführungsplans dergestalt umfasst, dass ein Ergebnis des ersten Abfrageausführungsplans in einem Cache-Speicher des RDBS zu einer Verwendung des zweiten Abfrageausführungsplan zur Verfügung steht, wenn es eine gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition gibt.
  • Verfahren nach Klausel 1, 2 oder 3, wobei das Verfahren des Weiteren ein Deaktivieren eines Sperrmechanismus des RDBS umfasst, um mindestens einen Teil der ersten Partition der Datenblöcke und der zweiten Partition der Datenblöcke zu sperren, wobei der Sperrmechanismus bewirkt, dass auf diese Datenblöcke nur durch eine Ausführung eines einzelnen Abfrageausführungsplans zu einem gegebenen Zeitpunkt zugegriffen werden kann, wobei der Sperrmechanismus deaktiviert wird, wenn es keine gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition gibt.
  • Verfahren nach Klausel 1, 2 oder 4, wobei das Verfahren des Weiteren ein Aktivieren eines Sperrmechanismus des RDBS umfasst, um die Datenblöcke der gemeinsamen Partition zu sperren, so dass auf diese Datenblöcke nur durch eine Ausführung eines einzelnen Abfrageausführungsplans zu einem gegebenen Zeitpunkt zugegriffen werden kann, wobei der Sperrmechanismus aktiviert wird, wenn es eine gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition gibt.
  • Verfahren nach einer der vorstehenden Klauseln, wobei die jeweiligen Informationen über die Eigenschaft der Datasets des jeweiligen Datenblocks ein Bereich ist, in dem Datenwerte der Datasets des jeweiligen Datenblocks liegen, wobei der Bereich durch einen minimalen Datenwert in dem jeweiligen Datenblock und einen maximalen Datenwert in dem jeweiligen Datenblock definiert wird.
  • Verfahren nach Klausel 7, wobei die Daten des RDBS in dem RDBS durch Verwendung einer Datentabelle gespeichert werden und der Bereich durch einen minimalen Datenwert in einer Spalte der Datentabelle in dem jeweiligen Datenblock und einen maximalen Datenwert in der Spalte der Datentabelle in dem jeweiligen Datenblock definiert wird, wobei der jeweilige Datenblock einen jeweiligen Block von Zeilen der Datentabelle angibt.
  • Verfahren nach einer der vorhergehenden Klauseln 1 bis 6, wobei die Eigenschaft der Datasets eine Verteilung von Datenwerten der Datasets innerhalb des jeweiligen Datenblocks ist und die jeweiligen Informationen über die Eigenschaft der Datasets des jeweiligen Datenblocks die Verteilung der Datenwerte beschreiben.
  • Verfahren nach Klausel 9, wobei die Daten des RDBS in dem RDBS durch Verwendung einer Datentabelle gespeichert werden und sich die Verteilung auf eine Verteilung der Datenwerte in einer Spalte der Datentabelle in dem jeweiligen Datenblock bezieht und die jeweiligen Informationen über die Eigenschaft der Datasets des jeweiligen Datenblocks die Verteilung der Datenwerte in der Spalte der Datentabelle innerhalb des jeweiligen Datenblocks beschreiben, wobei der jeweilige Datenblock einen jeweiligen Block von Zeilen der Datentabelle angibt.
  • Verfahren nach Klausel 9 oder 10, wobei die Verteilung durch einen Dichtevektor dargestellt wird.
  • Verfahren nach einer der vorhergehenden Klauseln, wobei einer der beiden Abfrageausführungspläne, der erste oder der zweite Abfrageausführungsplan, zu einem aktuellen Zeitpunkt ausgeführt wird und der andere der beiden Abfrageausführungspläne so terminiert wird, dass er zu einem zukünftigen Zeitpunkt gestartet wird.
  • Verfahren nach Klausel 1, 2, 4, 6, 7, 8, 9, 10, 11 oder 12, wobei der erste Abfrageausführungsplan und der zweite Abfrageausführungsplan für eine unmittelbar nacheinander stattfindende Ausführung terminiert werden.
  • Verfahren nach einer der vorhergehenden Klauseln, wobei das Verfahren des Weiteren ein Empfangen der Metadaten von einem Abfrageoptimierungsprogramm des RDBS umfasst.
  • Verfahren nach einer der vorhergehenden Klauseln, wobei das Verfahren des Weiteren ein Empfangen von Informationen zur Angabe der ersten Partition und der zweiten Partition von einem Abfrageoptimierungsprogramm des RDBS umfasst.
  • Verfahren nach einer der vorhergehenden Klauseln, wobei das Verfahren des Weiteren ein Setzen von Randbedingungen für ein Ausführen eines Abfrageoptimierungsprogramms des RDBS dergestalt, dass die gemeinsame Partition nichtig ist, umfasst.
  • Computerprogrammprodukt, das ein durch einen Computer lesbares Speichermedium aufweist, welches über damit verkörperten, durch einen Computer lesbaren Programmcode verfügt, wobei der durch einen Computer lesbare Programmcode so konfiguriert ist, dass er das Verfahren gemäß einer der vorhergehenden Klauseln ausführt.
  • Computersystem zum Terminieren eines Satzes von Abfrageausführungsplänen, wobei der Satz von Abfrageausführungsplänen mindestens einen ersten Abfrageausführungsplan zum Ausführen einer ersten Abfrage, um auf erste Datasets von Daten eines relationalen Datenbanksystems, RDBS, zuzugreifen, und einen zweiten Abfrageausführungsplan zum Ausführen einer zweiten Abfrage, um auf zweite Datasets der Daten zuzugreifen, aufweist, wobei die Daten in Datenblöcke von Datasets der Daten aufgeteilt sind, wobei Metadaten des RDBS eine jeweilige Information über mindestens eine Eigenschaft der Datasets eines jeweiligen Datenblocks der Datenblöcke aufweisen, wobei das Computersystem so konfiguriert ist, dass es: eine erste Partition der Datenblöcke feststellt, auf die möglicherweise zugegriffen wird, falls der erste Abfrageausführungsplan auf dem RDBS auf der Grundlage der Metadaten und einer Bedingung, welche die ersten Datasets gemäß der ersten Abfrage erfüllen müssen, ausgeführt wird; eine zweite Partition der Datenblöcke feststellt, auf die möglicherweise zugegriffen wird, falls der zweite Abfrageausführungsplan auf dem RDBS auf der Grundlage der Metadaten und einer Bedingung, welche die zweiten Datasets gemäß der zweiten Abfrage erfüllen müssen, ausgeführt wird; eine Überprüfung, ob es eine gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition gibt, durchführt; den ersten Abfrageausführungsplan und den zweiten Abfrageausführungsplan auf dem RDBS auf der Grundlage eines Ergebnisses der Überprüfung terminiert.

Claims (20)

  1. Durch einen Computer ausgeführtes Verfahren zum Terminieren eines Satzes von Abfrageausführungsplänen, wobei der Satz von Abfrageausführungsplänen mindestens einen ersten Abfrageausführungsplan zum Ausführen einer ersten Abfrage, um auf erste Datasets von Daten eines relationalen Datenbanksystems (RDBS) zuzugreifen, und einen zweiten Abfrageausführungsplan zum Ausführen einer zweiten Abfrage, um auf zweite Datasets der Daten zuzugreifen, aufweist, wobei die Daten in Datenblöcke von Datasets der Daten aufgeteilt sind, wobei Metadaten des RDBS eine jeweilige Information über mindestens eine Eigenschaft der Datasets eines jeweiligen Datenblocks der Datenblöcke aufweisen, wobei das Verfahren aufweist: Feststellen einer ersten Partition der Datenblöcke, auf die zugegriffen wird, da der erste Abfrageausführungsplan auf dem RDBS auf der Grundlage der Metadaten und einer Bedingung, welche die ersten Datasets gemäß der ersten Abfrage erfüllen müssen, ausgeführt wird; Feststellen einer zweiten Partition der Datenblöcke, auf die zugegriffen wird, da der zweite Abfrageausführungsplan auf dem RDBS auf der Grundlage der Metadaten und einer weiteren Bedingung, welche die zweiten Datasets gemäß der zweiten Abfrage erfüllen müssen, ausgeführt wird; Überprüfen, ob es eine gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition gibt; und Terminieren des ersten Abfrageausführungsplans und des zweiten Abfrageausführungsplans auf dem RDBS auf der Grundlage des Überprüfens.
  2. Verfahren nach Anspruch 1, wobei das Feststellen der ersten Partition ein Verwerfen einer ersten ergänzenden Partition der Datenblöcke auf der Grundlage der Metadaten und der Bedingung, welche die ersten Datasets gemäß der ersten Abfrage erfüllen müssen, aufweist, wobei die erste ergänzende Partition der Datenblöcke Datenblöcke der Daten darstellt, auf die nicht zugegriffen wird, falls der erste Abfrageausführungsplan auf dem RDBS ausgeführt wird, und wobei das Feststellen der zweiten Partition ein Verwerfen einer zweiten ergänzenden Partition der Datenblöcke unter Verwendung der Metadaten und der Bedingung, welche die zweiten Datasets gemäß der zweiten Abfrage erfüllen müssen, aufweist, wobei die zweite ergänzende Partition der Datenblöcke Datenblöcke der Daten darstellt, auf die nicht zugegriffen wird, falls der zweite Abfrageausführungsplan auf dem RDBS ausgeführt wird.
  3. Verfahren nach Anspruch 1, das des Weiteren aufweist: Terminieren des ersten Abfrageausführungsplans und des zweiten Abfrageausführungsplans dergestalt, dass der erste Abfrageausführungsplan und der zweite Abfrageausführungsplan parallel auf dem RDBS ausgeführt werden, wenn es keine gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition gibt.
  4. Verfahren nach Anspruch 1, das des Weiteren aufweist: Terminieren des ersten Abfrageausführungsplans und des zweiten Abfrageausführungsplans dergestalt, dass ein Ergebnis des ersten Abfrageausführungsplans in einem Cache-Speicher des RDBS zu einer Verwendung des zweiten Abfrageausführungsplans zur Verfügung steht, wenn es eine gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition gibt.
  5. Verfahren nach Anspruch 1, das des Weiteren aufweist: Deaktivieren eines Sperrmechanismus des RDBS, um mindestens einen Teil der ersten Partition der Datenblöcke und der zweiten Partition der Datenblöcke zu sperren, wobei der Sperrmechanismus bewirkt, dass auf diese Datenblöcke nur durch eine Ausführung eines einzelnen Abfrageausführungsplans zu einem gegebenen Zeitpunkt zugegriffen werden kann, wobei der Sperrmechanismus deaktiviert wird, wenn es keine gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition gibt.
  6. Verfahren nach Anspruch 1, das des Weiteren aufweist: Aktivieren eines Sperrmechanismus des RDBS, um die Datenblöcke der gemeinsamen Partition zu sperren, so dass auf diese Datenblöcke nur durch eine Ausführung eines einzelnen Abfrageausführungsplans zu einem gegebenen Zeitpunkt zugegriffen wird, wobei der Sperrmechanismus aktiviert wird, wenn es eine gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition gibt.
  7. Verfahren nach Anspruch 1, wobei die jeweiligen Informationen über die Eigenschaft der Datasets des jeweiligen Datenblocks ein Bereich ist, in dem Datenwerte der Datasets des jeweiligen Datenblocks liegen, wobei der Bereich durch einen minimalen Datenwert in dem jeweiligen Datenblock und einen maximalen Datenwert in dem jeweiligen Datenblock definiert wird.
  8. Verfahren nach Anspruch 7, wobei die Daten des RDBS in dem RDBS durch Verwendung einer Datentabelle gespeichert werden und der Bereich durch einen minimalen Datenwert in einer Spalte der Datentabelle in dem jeweiligen Datenblock und einen maximalen Datenwert in der Spalte der Datentabelle in dem jeweiligen Datenblock definiert wird, wobei der jeweilige Datenblock einen jeweiligen Block von Zeilen der Datentabelle angibt.
  9. Verfahren nach Anspruch 1, wobei die Eigenschaft der Datasets eine Verteilung von Datenwerten der Datasets innerhalb des jeweiligen Datenblocks ist und die jeweiligen Informationen über die Eigenschaft der Datasets des jeweiligen Datenblocks die Verteilung der Datenwerte beschreiben.
  10. Verfahren nach Anspruch 9, wobei die Daten des RDBS in dem RDBS durch Verwendung einer Datentabelle gespeichert werden und sich die Verteilung auf eine Verteilung der Datenwerte in einer Spalte der Datentabelle in dem jeweiligen Datenblock bezieht und die jeweiligen Informationen über die Eigenschaft der Datasets des jeweiligen Datenblocks die Verteilung der Datenwerte in der Spalte der Datentabelle innerhalb des jeweiligen Datenblocks beschreiben, wobei der jeweilige Datenblock einen jeweiligen Block von Zeilen der Datentabelle angibt.
  11. Verfahren nach Anspruch 9, wobei die Verteilung durch einen Dichtevektor dargestellt wird.
  12. Verfahren nach Anspruch 1, wobei einer der beiden Abfrageausführungspläne, der erste oder der zweite Abfrageausführungsplan, zu einem aktuellen Zeitpunkt ausgeführt wird und der andere der beiden Abfrageausführungspläne so terminiert wird, dass er zu einem zukünftigen Zeitpunkt gestartet wird.
  13. Verfahren nach Anspruch 4, wobei der erste Abfrageausführungsplan und der zweite Abfrageausführungsplan für eine unmittelbar nacheinander stattfindende Ausführung terminiert werden.
  14. Verfahren nach Anspruch 1, wobei das Verfahren des Weiteren ein Empfangen der Metadaten von einem Abfrageoptimierungsprogramm des RDBS aufweist.
  15. Verfahren nach Anspruch 1, wobei das Verfahren des Weiteren ein Empfangen von Informationen zur Angabe der ersten Partition und der zweiten Partition von dem Abfrageoptimierungsprogramm des RDBS aufweist.
  16. Verfahren nach Anspruch 1, wobei das Verfahren des Weiteren ein Setzen von Randbedingungen für ein Ausführen eines Abfrageoptimierungsprogramms des RDBS dergestalt, dass die gemeinsame Partition nichtig ist, aufweist.
  17. Computerprogrammprodukt zum Terminieren eines Satzes von Abfrageausführungsplänen, wobei der Satz von Abfrageausführungsplänen mindestens einen ersten Abfrageausführungsplan zum Ausführen einer ersten Abfrage, um auf erste Datasets von Daten eines relationalen Datenbanksystems (RDBS) zuzugreifen, und einen zweiten Abfrageausführungsplan zum Ausführen einer zweiten Abfrage, um auf zweite Datasets der Daten zuzugreifen, aufweist, wobei die Daten in Datenblöcke von Datasets der Daten aufgeteilt sind, wobei Metadaten des RDBS eine jeweilige Information über mindestens eine Eigenschaft der Datasets eines jeweiligen Datenblocks der Datenblöcke aufweisen, wobei das Computerprogrammprodukt aufweist: ein oder mehrere durch einen Computer lesbare Speichermedien und Programmanweisungen, die auf dem einen oder den mehreren durch einen Computer lesbaren Speichermedien gespeichert sind, wobei die Programmanweisungen aufweisen: Programmanweisungen, um eine erste Partition der Datenblöcke festzustellen, auf die zugegriffen wird, da der erste Abfrageausführungsplan auf dem RDBS auf der Grundlage der Metadaten und einer Bedingung, welche die ersten Datasets gemäß der ersten Abfrage erfüllen müssen, ausgeführt wird; Programmanweisungen, um eine zweite Partition der Datenblöcke festzustellen, auf die zugegriffen wird, da der zweite Abfrageausführungsplan auf dem RDBS auf der Grundlage der Metadaten und einer weiteren Bedingung, welche die zweiten Datasets gemäß der zweiten Abfrage erfüllen müssen, ausgeführt wird; Programmanweisungen, um zu überprüfen, ob es eine gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition gibt; und Programmanweisungen, um den ersten Abfrageausführungsplan und den zweiten Abfrageausführungsplan auf dem RDBS auf der Grundlage des Überprüfens zu terminieren.
  18. Computersystem zum Terminieren eines Satzes von Abfrageausführungsplänen, wobei der Satz von Abfrageausführungsplänen mindestens einen ersten Abfrageausführungsplan zum Ausführen einer ersten Abfrage, um auf erste Datasets von Daten eines relationalen Datenbanksystems (RDBS) zuzugreifen, und einen zweiten Abfrageausführungsplan zum Ausführen einer zweiten Abfrage, um auf zweite Datasets der Daten zuzugreifen, aufweist, wobei die Daten in Datenblöcke von Datasets der Daten aufgeteilt sind, wobei Metadaten des RDBS eine jeweilige Information über mindestens eine Eigenschaft der Datasets eines jeweiligen Datenblocks der Datenblöcke aufweisen, wobei das Computersystem so konfiguriert ist, dass es: eine erste Partition der Datenblöcke feststellt, auf die zugegriffen wird, da der erste Abfrageausführungsplan auf dem RDBS auf der Grundlage der Metadaten und einer Bedingung, welche die ersten Datasets gemäß der ersten Abfrage erfüllen müssen, ausgeführt wird; eine zweite Partition der Datenblöcke feststellt, auf die zugegriffen wird, da der zweite Abfrageausführungsplan auf dem RDBS auf der Grundlage der Metadaten und einer weiteren Bedingung, welche die zweiten Datasets gemäß der zweiten Abfrage erfüllen müssen, ausgeführt wird; überprüft, ob es eine gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition gibt; und den ersten Abfrageausführungsplan und den zweiten Abfrageausführungsplan auf dem RDBS auf der Grundlage des Überprüfens terminiert.
  19. Computersystem nach Anspruch 18, wobei das Feststellen der ersten Partition ein Verwerfen einer ersten ergänzenden Partition der Datenblöcke auf der Grundlage der Metadaten und der Bedingung, welche die ersten Datasets gemäß der ersten Abfrage erfüllen müssen, aufweist, wobei die erste ergänzende Partition der Datenblöcke Datenblöcke der Daten darstellt, auf die nicht zugegriffen wird, falls der erste Abfrageausführungsplan auf dem RDBS ausgeführt wird, und wobei das Feststellen der zweiten Partition ein Verwerfen einer zweiten ergänzenden Partition der Datenblöcke unter Verwendung der Metadaten und der Bedingung, welche die zweiten Datasets gemäß der zweiten Abfrage erfüllen müssen, aufweist, wobei die zweite ergänzende Partition der Datenblöcke Datenblöcke der Daten darstellt, auf die nicht zugegriffen wird, falls der zweite Abfrageausführungsplan auf dem RDBS ausgeführt wird.
  20. Computersystem nach Anspruch 18, das des Weiteren so konfiguriert ist, dass es den ersten Abfrageausführungsplan und den zweiten Abfrageausführungsplan so terminiert, dass der erste Abfrageausführungsplan und der zweite Abfrageausführungsplan parallel auf dem RDBS ausgeführt werden, wenn es keine gemeinsame Partition von Datenblöcken der ersten Partition und der zweiten Partition gibt.
DE112021006377.4T 2020-12-08 2021-12-07 Terminieren von abfrageausführungsplänen in einer relationalen datenbank Pending DE112021006377T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/114,786 US20220179861A1 (en) 2020-12-08 2020-12-08 Scheduling query execution plans on a relational database
US17/114,786 2020-12-08
PCT/IB2021/061407 WO2022123437A1 (en) 2020-12-08 2021-12-07 Scheduling query execution plans on a relational database

Publications (1)

Publication Number Publication Date
DE112021006377T5 true DE112021006377T5 (de) 2023-10-05

Family

ID=81850509

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021006377.4T Pending DE112021006377T5 (de) 2020-12-08 2021-12-07 Terminieren von abfrageausführungsplänen in einer relationalen datenbank

Country Status (6)

Country Link
US (1) US20220179861A1 (de)
JP (1) JP2024500058A (de)
CN (1) CN116569163A (de)
DE (1) DE112021006377T5 (de)
GB (1) GB2615505B (de)
WO (1) WO2022123437A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116303575B (zh) * 2023-03-22 2023-12-12 本原数据(北京)信息技术有限公司 数据库数据查询方法、装置及非易失性存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014655A (en) * 1996-03-13 2000-01-11 Hitachi, Ltd. Method of retrieving database
CA2306968C (en) * 2000-04-28 2004-11-30 Ibm Canada Limited-Ibm Canada Limitee Efficient index-data fetch via callback for a table data
US20070226176A1 (en) * 2006-03-23 2007-09-27 International Business Machines Corporation Apparatus and method for optimizing a query to a partitioned database table using a virtual maintained temporary index that spans multiple database partitions
AU2007294516A1 (en) * 2006-09-08 2008-03-13 Fortiusone, Inc. System and method for web enabled geo-analytics and image processing
US20080104008A1 (en) * 2006-10-31 2008-05-01 Brantley David L Common data broker method, system, and program product
US9251207B2 (en) * 2007-11-29 2016-02-02 Microsoft Technology Licensing, Llc Partitioning and repartitioning for data parallel operations
US20090235356A1 (en) * 2008-03-14 2009-09-17 Clear Blue Security, Llc Multi virtual expert system and method for network management
US8386508B2 (en) * 2008-04-28 2013-02-26 Infosys Technologies Limited System and method for parallel query evaluation
CN102262636B (zh) * 2010-05-25 2012-10-10 中国移动通信集团浙江有限公司 生成数据库分区执行计划的方法及装置
US8918793B2 (en) * 2011-12-07 2014-12-23 Sap Se Resolving resource contentions
US9495411B2 (en) * 2012-09-24 2016-11-15 Salesforce.Com, Inc. Increased parallelism performance of batch requests
CN104216893B (zh) * 2013-05-31 2018-01-16 中国电信股份有限公司 多租户共享数据表的分区管理方法、服务器与系统
US20160371329A1 (en) * 2015-06-22 2016-12-22 Sap Se Prepared execution plans for joins with partitioned tables
EP3443471B1 (de) * 2016-06-30 2021-12-01 Huawei Technologies Co., Ltd. Systeme und verfahren zur verwaltung von datenbanken
US11468060B2 (en) * 2018-06-25 2022-10-11 Oracle International Corporation Automatic query offloading to a standby database

Also Published As

Publication number Publication date
GB2615505B (en) 2024-01-03
WO2022123437A1 (en) 2022-06-16
GB2615505A (en) 2023-08-09
CN116569163A (zh) 2023-08-08
US20220179861A1 (en) 2022-06-09
JP2024500058A (ja) 2024-01-04
GB202308020D0 (en) 2023-07-12

Similar Documents

Publication Publication Date Title
DE102013206281B4 (de) Optimieren von zerstreuten schemalosen Daten in relationalen Speichern
DE112019000187T5 (de) Dynamische zugriffskontrolle für wissens-graphen
DE102019000294A1 (de) Erstellen unternehmensspezifischer Wissensgraphen
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
DE602005002062T2 (de) Optimierung der Sperrgranularität mittels Bereichssperren
DE202012013462U1 (de) Datenverarbeitung in einem Mapreduce-Framework
DE102016216843A1 (de) Verteiltes Zusammenführen von Dateien
DE112018005205T5 (de) Komprimierung von vollständig verbundenen / wiederkehrenden Schichten von einem oder mehreren tiefen Netzen durch Durchsetzen von räumlicher Lokalität für Gewichtsmatrizen und erwirken von Frequenzkomprimierung
DE112017007656T5 (de) Verschobene aktualisierung von datenbank-hashcode in einer blockchain
EP3520014B1 (de) Verfahren und system zum anonymisieren von datenbeständen
DE112018004222T5 (de) Datenbankaufteilung
DE102015121509A1 (de) Methodik und Vorrichtung zur Konsistenzprüfung durch Vergleich von Ontologiemodellen
DE112018002266T5 (de) Kognitives Datenfiltern für Speicherumgebungen
DE112020002669T5 (de) Automatische Gültigkeitsprüfung und Anreicherung von semantischen Beziehungen zwischen medizinischen Entitäten für die Arzneimittelforschzng
DE112018000456T5 (de) Verwalten von umfangreichen Zuordnungsgruppen unter Verwendung von optimierten Bitmap-Darstellungen
DE112018004462T5 (de) Abfrageverarbeitung
DE112017006445T5 (de) Verfahren und Geräte zur Identifizierung eines Zählwerts von N-Grammen, die in einem Korpus vorkommen
DE112021006377T5 (de) Terminieren von abfrageausführungsplänen in einer relationalen datenbank
EP3889806A1 (de) Bitsequenzbasiertes datenklassifikationssystem
DE112018005620T5 (de) Auftragsverwaltung in einem datenverarbeitungssystem
DE102019108857A1 (de) Automatisiertes maschinelles Lernen auf Basis gespeicherten Daten
DE112018006438T5 (de) Clustering von facetten auf einem zweidimensionalen facettenwürfel für text-mining
DE112021001743T5 (de) Vektoreinbettungsmodelle für relationale tabellen mit null- oder äquivalenten werten
DE112019001744T5 (de) Verarbeiten von streaming-daten mit mehreren caches
WO2012017056A1 (de) Verfahren und vorrichtung zur automatischen verarbeitung von daten in einem zellen-format

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence