DE60224432T2 - Dynamische und automatische speicherverwaltung - Google Patents

Dynamische und automatische speicherverwaltung Download PDF

Info

Publication number
DE60224432T2
DE60224432T2 DE60224432T DE60224432T DE60224432T2 DE 60224432 T2 DE60224432 T2 DE 60224432T2 DE 60224432 T DE60224432 T DE 60224432T DE 60224432 T DE60224432 T DE 60224432T DE 60224432 T2 DE60224432 T2 DE 60224432T2
Authority
DE
Germany
Prior art keywords
operator
value
space
memory
estimate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60224432T
Other languages
English (en)
Other versions
DE60224432D1 (de
Inventor
Benoit Foster City DAGEVILLE
Mohamed San Jose ZAIT
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.)
Oracle International Corp
Original Assignee
Oracle International 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 Oracle International Corp filed Critical Oracle International Corp
Application granted granted Critical
Publication of DE60224432D1 publication Critical patent/DE60224432D1/de
Publication of DE60224432T2 publication Critical patent/DE60224432T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Description

  • ALLGEMEINER STAND DER TECHNIK
  • In typischen Datenbanksystemen speichern, aktualisieren und rufen Benutzer Informationen ab, indem sie einer Datenbankanwendung, wie Oracle, Befehle übermitteln. Beim Ausführen von Transaktionen speichert die Datenbankanwendung Informationen im Speicher und auf der Festplatte. Für eine beste Leistung müssen so viele Informationen wie möglich eher im Speicher als auf der Festplatte gespeichert werden. Da die Speicherplatzressourcen jedoch begrenzt sind, muss die Datenbankanwendung die Speicherplatzzuordnung abstimmen, was das Verteilen des verfügbaren Speicherplatzes auf Strukturen umfasst, die von der Datenbankanwendung genutzt werden.
  • Wie in dem Buch mit dem Titel „Oracle8i Conepts" beschrieben, das von der Oracle Corporation und im Internet unter http://oradoc.photo.net/ora81/DOC/server.815/a67781/toc.htm (auf das in diesem Dokument vollständig verwiesen wird) erhältlich ist, sind zwei der Strukturen, die von der Datenbankanwendung Oracle verwendet werden, Speicherbereiche, die System Global Area (SGA) und Program Global Area (PGA) genannt werden. Der SGA enthält allgemeine Informationen über den Zustand der Datenbank und die Instanz, auf die die Oracle-Prozesse zugreifen müssen. Im SGA sind keine Benutzerdaten gespeichert. Die Größe des SGA wird beim Hochfahren von Oracle bestimmt. Für eine optimale Leistung in den meisten Systemen sollte der gesamte SGA in den Realspeicher passen. Ein Datenbankadministrator (DBA) kann sehen, wie viel Speicherplatz dem SGA und jeder seiner internen Strukturen zugeordnet ist, indem das SQL-Statement „SHOW SGA" ausgestellt wird.
  • Ein PGA wird zum Halten von Daten und Steuerinformationen von jedem Prozess erzeugt, wenn der Prozess gestartet wird. Der PGA ist für jeden Prozess in Oracle privat, obgleich ein solcher PGA im gemeinsam genutzten Speicher sein kann. Die anfängliche Größe eines PGA wird beim Hochfahren des entsprechenden Prozesses festgelegt und ist Betriebssystemspezifisch. Derzeit kann der DBA in Oracle8i die PGA-Speicherplatznutzung unter Verwendung verschiedener Parameter wie SORT_AREA_SIZE_HASH AREA_SIZE, BITMAP_MERGE_AREA_SIZE und CREATE_BITMAP_AREA_SIZE steuern. Weitere Informationen über solche Parameter können dem Buch mit dem Titel „Oracle8i Tuning" entnommen werden, das unter http://oradoc.photo.net/ora81/DOC/server.815/a67775/toc.htm (auf das in diesem Dokument vollständig verwiesen wird) erhältlich ist.
  • Siehe auch US-Patentschrift 5,799,210 , erteilt an Cohen, et al., mit dem Titel „Method for allocating either private or shared buffer memory for storing data from sort operations in accordance with an assigned value or threshold value", US-Patentschrift 5,987,580 Jasuja, et al., mit dem Titel "Serially reusable execution memory", US-Patentschrift 5,860,144 Frank, et al., mit dem Titel "Addressing method and system for providing access of a very large size physical memory buffer to a number of processes" und US-Patentschrift 5,784,699 McMahon, et al. "Dynamic memory allocation in a computer using a bit map index", die sich alle auf die Nutzung von Speicherplatz durch Datenbankprozesse beziehen.
  • Zusätzliche Informationen sind der Schrift mit dem Titel „Dynamic Memory Allocation for Large Query Execution" von Luc Bouganim, Olga Kapitskaia und Patrick Valduriez zu entnehmen, veröffentlicht in Networking and Information Systems 1(6): 629–652 (1998). Siehe auch die Schrift mit dem Titel „Memory-Adaptive Scheduling for Large Query Execution" von den gleichen Autoren, Seiten 105–115 von Proceedings of Conference an Information and Knowledge Management, 1998, veröffentlicht von der Association for Computing Machinery, Inc. Noch eine weitere Schrift auf diesem Gebiet wurde von Diane L. Davison und Goetz Graefe geschrieben, mit dem Titel „Dynamic Resource Brokering for Multi-User Query Execution", veröffentlicht auf der SIGMOD Conference 1995: 281–292.
  • „Dynamic Memory Allocation for Multiple Concurrent Sorts", IBM Technical Disclosure Bulletin, IBM Corp., Band 36 Nr. 12, Dezember 1993, veröffentlicht ein Verfahren der dynamischen Speicherplatzzuordnung für mehrere gleichzeitige Sortiervorgänge. Jedes Mal, wenn ein neuer Sortiervorgang beginnt, berechnet das System den gesamten verwendeten Speicherplatz neu, vergleicht ihn mit einem Schwellenwert und ordnet dann dem Sortiervorgang eine Speicherplatzmenge in einem vorbestimmten Bereich zu. Die Maximal- oder Mindestgrenzen dieses Bereichs können gemäß dem Ergebnis des Vergleichs angepasst werden. Wesentliche Verarbeitungskapazität und daher Speicherplatz, wird durch die Notwendigkeit verschwendet, dass jedes Mal, wenn ein neuer Sortiervorgang beginnt, neue Berechnungen ausgeführt werden müssen.
  • Microsoft Corporation: "Microsoft SQL Server 7.0 Storage Engine Capacity Planning Tips", XP-00 2273948, März 1999 und Kabra N; Dewitt D J: "Efficient mid-query re-optimization of sub-optimal query execution Plans", XP-002274138, Juni 1998, offenbaren jeweils Systeme, die Speicherplatz gemäß den Anforderungen einer besonderen Abfrage zuordnen. Insbesondere offenbart XP'948 die Nutzung eines „Mindestspeicherplatz pro Abfrage"-Werts, der von dem Benutzer eingestellt werden kann, oder wenn solche Anweisungen nicht vorhanden sind, auf einen Standardwert. Das System bewertet dann jede Abfrage und ordnet sie mindestens dieser Speicherplatzmenge zu. Wenn ein solcher Speicherplatz nicht vorhanden ist, wird die Abfrage in die Warteschlange gestellt. Das System ist nicht in der Lage, diesen Mindestwert ohne Benutzereingabe zu überarbeiten. XP' 138 basiert auf einem Abfrage-Optimierer, der die Speicherplatzanforderungen jedes Operators in einer Abfrage basierend auf Laufzeitstatistiken analysiert und dabei einen geeigneten Ausführungsplan vorschlägt. Wie XP'948 weist dieses System den Nachteil auf, dass die Speicherplatzzuordnung auf Abfrageanforderungen basiert und nicht die Anforderungen an das System als Ganzes berücksichtigen kann.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Die Erfindung stellt ein Verfahren zum Verwalten der Zuordnung von Speicherplatz an eine Mehrzahl Prozesse zum Ausführen von Abfragen an einer Datenbank in einem Computer bereit, wobei die Abfragen von Operatoren implementiert werden und das Verfahren das Berechnen eines globalen internen Werts des gesamten von den Operatoren zu nutzenden Speicherplatzes, von einem extern gesetzten globalen Wert und, basierend auf Statistikwerten der Speicherplatznutzung, das Berechnen eines Werts auf Operatorebene, der einen allgemeinen Speicherplatzwert bestimmt, der für jeden der Mehrzahl Operatoren zuzuordnen ist, basierend auf dem globalen internen Wert und den Prozessen, die den Wert auf Operatorebene nutzen, um die Zuordnung von Speicherplatz zur Verwendung durch jeden Operator zu verwalten, umfasst.
  • In einer Ausführungsform überarbeitet der programmierte Computer dynamisch die Speicherplatzgrenze, basierend auf gerade ausgeführten Speicherzuordnungen, wodurch eine Rückkopplungsschleife gebildet wird. Durch Bestimmen der Speicherplatzgrenze kann der programmierte Computer wahlweise auf Informationen außerhalb der Anwendung ansprechen (beispielsweise auf die Speicherplatzmenge, die durch Nicht-Datenbankprozesse zugeordnet wird), so dass der begrenzte Speicherplatz in dem Computer effektiv genutzt wird.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1A veranschaulicht in einem Datenflussdiagramm Daten und Logik in einem Computer, der erfindungsgemäß programmiert worden ist.
  • 1B veranschaulicht Schritte, die von einer Anwendung in einem Computer des Typs ausgeführt werden, der in 1A gezeigt ist.
  • 2 veranschaulicht in einem Blockdiagramm höherer Ebene die Verwendung von gemeinsam genutztem Speicherplatz von mehreren Serverprozessen des Typs, der in 1B gezeigt ist.
  • 3 veranschaulicht in einem Flussdiagramm Schritte, die in einer Ausführung des Vergleichsschritts ausgeführt werden, der von den Serverprozessen von 1B ausgeführt wird.
  • 4 veranschaulicht in einem Venn-Diagramm verschiedene Komponenten, die zusammen den Speicherplatz bilden, der einem oder mehreren Serverprozessen von 1B zugeordnet ist.
  • 5 veranschaulicht in einem Flussdiagramm Schritte, die von dem Memory-Broker von 1B ausgeführt werden, in einer Ausführungsform des Schritts des Bestimmens eines internen Ziels.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Wenn er mit einer erfindungsgemäßen Software programmiert wird, spricht ein Computer auf einen Wert 11 (1A) an, der die Gesamtmenge des zu nutzenden Speicherplatzes bestimmt, der von der Anwendung, wie einer Datenbank, zu verwenden ist. Es ist zu beachten, dass obgleich in der folgenden Beschreibung auf eine Datenbankanwendung Bezug genommen wird, abhängig von der Ausführungsform, auch andere Anwendungen auf die in diesem Dokument beschriebene Weise programmiert werden können. Der Wert 11 (auch „extern gesetzter globaler Wert” genannt) kann beispielsweise von einem Datenbankadministrator (DBA) bereitgestellt werden oder kann automatisch beispielsweise basierend auf dem derzeit im Computer zur Verfügung stehenden Speicherplatz bestimmt werden. Abhängig von der Ausführungsform kann der extern gesetzte globale Wert 11 von der Anwendung als Grenze (die nicht überschritten werden kann) oder als Ziel (das von Zeit zu Zeit erreicht werden kann oder nicht erreicht werden kann, z. B. das meistens untertroffen oder übertroffen wird) verwendet werden.
  • In einer Ausführungsform berechnet (siehe Logik 13) das Datenbanksystem 10 (1A) einen Wert 14 (nachfolgend „globaler interner Wert"), der intern für die Datenbank-Software ist, wobei die Menge 12 (1A) des Speicherplatzes berücksichtigt wird, der den Prozessen der Anwendung nicht zur Verfügung steht, beispielsweise zum Ausführen von Abfragen. Insbesondere berücksichtigt die Logik 13 (1A) den Speicherplatz („freier Speicherplatz” genannt), der zugeordnet ist aber nicht genutzt wird, und den Speicherplatz („anderer Speicherplatz” genannt), der sich nicht auf Operatoren (wie Sort, Hash-Join und Bitmap Merge) bezieht, die eine Abfrage implementieren.
  • Abhängig von der Ausführungsform verwendet das Datenbanksystem 10 (1A) den globalen internen Wert 14, um einen anderen internen Wert 17 (auch „Speicherplatzgrenze" genannt), der bei der Zuordnung von Speicherplatz für jeden Operator verwendet wird, zu berechnen (siehe Logik 15). Die Speicherplatzgrenze 17 ist ein Wert auf Operatorebene, der die Speicherplatzmenge bestimmt, die von jedem Prozess 18 für jeden Arbeitsbereich eines Operators zugeordnet werden kann. Jeder Prozess 18 vergleicht die Speicherplatzgrenze 17 mit einer Menge 20 Speicherplatz, die von einem Operator benötigt wird, um die Menge 21 des zuzuordnenden Speicherplatzes zu bestimmen und ordnet danach eine passende Speicherplatzmenge zu. Abhängig von dem Datenbanktyp (zum Beispiel hierarchisch) und/oder den Strukturen und Prozessen, die die Datenbank implementieren, kann jedoch eine Speicherplatzgrenze direkt von dem extern gesetzten globalen Wert abgeleitet werden, das heißt, ohne einen globalen internen Wert 14 zu berechnen, wie zuvor beschrieben. In einer alternativen Ausführungsform wird darüber hinaus ein Wert auf Operatorebene 17 nicht verwendet und stattdessen bestimmt jeder Prozess die Menge des Speicherplatzes, der einem Operator zuzuordnen ist, basierend auf dem globalen internen Wert 14 oder selbst auf dem extern gesetzten globalen Wert 11 (abhängig von der Implementierung), während Statistikwerte über die Speicherplatznutzung zum Implementieren einer Rückkopplungsschleife berücksichtigt werden.
  • In einer solchen Ausführungsform implementiert das Datenbanksystem 10 (1A) eine Rückkopplungsschleife wie folgt: Wenn der extern gesetzte globale Wert von dem gesamten Speicherplatz, der derzeit von dem Datenbanksystem 10 zugeordnet ist, übertroffen wird, setzt das Datenbanksystem 10 die Speicherplatzgrenze herunter (und umgekehrt), so dass der gesamte Speicherplatz, der von dem Datenbanksystem 10 zugeordnet ist, sich dem extern gesetzten globalen Wert 11 nähert, entweder als Ziel oder als eine Grenze, wie zuvor besprochen. Wenn die Speicherplatzgrenze nicht verwendet wird, kann eine solche Ausführungsform den globalen internen Wert 14 ändern, selbst wenn der Wert 11 unverändert bleibt.
  • Die zuvor beschriebenen Operationen können auf eine beliebige Weise ausgeführt werden, die einem Fachmann angesichts der Offenbarung offensichtlich ist. Beispielsweise kann die Rückkopplungsschleife auf der Überarbeitung der Speicherplatzgrenze 17 (und/oder des globalen internen Werts 14), entweder periodisch oder asynchron oder beides, basieren. In einer Ausführungsform überarbeitet das Datenbanksystem 10 periodisch (das heißt alle 3 Sekunden) die Speicherplatzgrenze 17 basierend auf Statistikwerten, die sich auf die Speicherplatznutzung beziehen. Das Datenbanksystem 10 kann auch die Speicherplatzgrenze 17 asynchron überarbeiten, wenn Speicherplatz zugeordnet wird, beispielsweise, wenn der gesamte von dem Datenbanksystem 10 zugeordnete Speicherplatz den extern gesetzten globalen Wert 11 um eine vorbestimmte Menge (die beispielsweise null oder 10% des Werts 11 sein kann) übersteigt. Außerdem kann die Menge 21 des Speicherplatzes, der zugeordnet wird, die erforderliche Menge 20 sein oder die Speicherplatzgrenze 17 oder eine Menge, die von einer oder von beiden abgeleitet ist, das heißt, ein Mehrfaches der Speicherplatzgrenze oder ein Mehrfaches der geschätzten Menge, wenn angenommen wird, dass der Operator eine höhere Priorität hat als andere Operatoren. Im soeben beschriebenen Beispiel kann jedem Operator anstelle einer Priorität eine gewisse Menge „Zahlungsmittel" zugeordnet sein, und die Speicherplatzgrenze 17 kann ein Preis sein, der unter Verwendung des Zahlungsmittels bezahlt wird, um den Speicherplatz zu „kaufen". In solch einem Fall bestimmt die Menge „Zahlungsmittel", die jedem Operator zugeordnet ist, die Speicherplatzmenge, die der Operator empfängt.
  • In einer Ausführungsform umfasst das Datenbanksystem 10 eine Anweisungssequenz (nachfolgend „Memory-Broker") 22, die die zuvor beschriebene Speicherplatzgrenze 17 berechnen. Der Memory-Broker 22 kann als Prozess implementiert sein, der von den Prozessen, die Datenbankabfragen implementieren, separat ist und sich von ihnen unterscheidet. In diesem Fall vergleicht ein Datenbankabfrageprozess 18 die Speicherplatzgrenze 17 mit einem oder mehreren Schätzwerten und ordnet die richtige Speicherplatzmenge zu. Der Informationstransfer zwischen dem Memory-Broker 22 und dem Datenbank-Abfrageprozess 18 kann durch Nachrichten oder durch gemeinsam genutzten Speicher implementiert werden.
  • In einer alternativen Ausführungsform ist die Memory-Broker-Anweisungssequenz nicht als separater Prozess eingerichtet und stattdessen ruft jeder der Datenbankabfrageprozesse diese Anweisungen mit einem Funktionsaufruf auf. Daher kann eine allgemeine Funktion verwendet werden, um Speicherplatz für alle Operatoren zuzuordnen (anstelle einer unterschiedlichen Funktion für „Sort"- und „Hash"-Operatoren, wie nachfolgend beschrieben). Wenn eine solche allgemeine Funktion verwendet wird, nutzt jeder Prozess direkt den extern gesetzten globalen Wert (ebenfalls zuvor beschrieben), um die Menge des zuzuordnenden Speicherplatzes abzuleiten.
  • Merkmale gewisser Ausführungsformen werden in einer anderen Ausführungsform kombiniert, wobei ein Memory-Broker lediglich den globalen internen Wert 14 (zuvor beschrieben) berechnet und jeder Abfrageprozess den globalen internen Wert 14 verwendet, um die Speicherplatzmenge abzuleiten, die für einen Operator zuzuordnen ist. Abhängig von der Ausführungsform kann auch eine Speicherplatzgrenze 17 unterschiedlich verwendet werden, wenn Speicherplatz für jeden Operator zugeordnet wird, beispielsweise kann eine Abfrage höherer Priorität bis zum Zweifachen oder Dreifachen der Speicherplatzgrenze als Speicherplatz zuordnen, wobei eine Abfrage normaler Priorität Speicherplatz bis zur Speicherplatzgrenze zuordnet. Daher hängt die einem Operator auferlegte Grenze von der Priorität der spezifischen Abfrage ab, die der Operator in diesem Beispiel gerade ausführen will. In einem anderen Beispiel verhält sich die Speicherplatzgrenze als „Preis" anstatt als „Grenze". Anstatt, dass eine gemeinsame Speicherplatzgrenze 17 für alle Operatoren vorhanden ist (beispielsweise für Abfragen normaler Priorität), können auch verschiedene Speicherplatzgrenzen verwendet werden, eine für jeden Operatortyp.
  • In einer Ausführungsform wird der Arbeitsbereichspeicher, der von einem Operator benötigt wird, von jedem Prozess beim Zuordnen von Speicherplatz geschätzt, und verschiedene Schätzungen werden in einer Implementierung vorgenommen, abhängig von dem Modus, in dem der Operator arbeitet, z. B. (1) ein optimaler Modus, bei dem es keinen Festplattenzugriff gibt, (2) ein Einfach-Durchlaufmodus, bei dem es keinen Festplattenzugriff gibt, sondern nur ein Durchlauf für alle Daten auf der Festplatte erforderlich ist, und (3) ein minimaler Modus, bei dem mehrere Durchläufe über die Daten auf der Festplatte erforderlich sind. Die Zeit, die von einem Operator benötigt wird, um eine Abfrage auszuführen, hängt von dem Ausführungsmodus ab, z. B. wird die wenigste Zeit im optimalen Modus benötigt, die meiste Zeit wird im minimalen Modus benötigt, wobei die Zeit, die für einen Einfach-Durchlauf erforderlich ist, zwischen dem Maximum und dem Minimum liegt, wie in 6 veranschaulicht. Es ist zu beachten, dass für den gleichen Operator solche Schätzwerte unterschiedlich für unterschiedliche Abfragen sind, abhängig von der Größe der Eingangsdaten. Danach ordnet in dieser Implementierung jeder Prozess eine Speicherplatzmenge für den Operator zu, abhängig von diesen Schätzwerten und von der Speicherplatzgrenze.
  • Beispielsweise bestimmt ein Prozess, der den „Sort"-Operator aufruft, dass die Arbeitsbereichspeichermenge (auch „Sort-Bereich" genannt) wie folgt zuzuordnen ist: Schätzwert für den optimalen Speicherplatz, wenn der Schätzwert für den optimalen Speicherplatz kleiner ist als die Speicherplatzgrenze, Schätzwert für den Einfach-Durchlaufspeicherplatz, wenn die Speicherplatzgrenze zwischen dem Schätzwert für den optimalen Speicherplatz und dem Schätzwert für den Einfach-Durchlauf-Speicherplatz liegt, und Schätzwert für den minimalen Speicherplatz, wenn die Speicherplatzgrenze kleiner ist als der Schätzwert für den Einfach-Durchlauf-Speicherplatz.
  • In diesem besonderen Beispiel bestimmt ein Prozess, der den „Hash join"-Operator aufruft, dass die Arbeitsbereichspeichermenge (auch „Hash-Bereich") genannt, wie folgt zuzuordnen ist: Schätzwert für den optimalen Speicherplatz, wenn der Schätzwert für den optimalen Speicherplatz kleiner ist als die Speicherplatzgrenze, Speicherplatzgrenze, wenn die Speicherplatzgrenze zwischen dem Schätzwert für den optimalen Speicherplatz und dem Schätzwert für den minimalen Speicherplatz liegt, und Schätzwert für den minimalen Speicherplatz, wenn die Speicherplatzgrenze kleiner ist als der Schätzwert für den minimalen Speicherplatz. Dies beruht darauf, dass der Hash-Join-Operator von dem zusätzlichen Speicherplatz profitiert, zwischen dem Schätzwert für den Einfach-Durchlauf-Speicherplatz und dem Schätzwert für den optimalen Speicherplatz, wobei der Sort-Operator nicht davon profitiert. Wenn die Speicherplatzgrenze niedriger ist als der Schätzwert für den minimalen Speicherplatz, empfangen in diesem Beispiel alle Operatoren ihren jeweiligen Schätzwert für den minimalen Speicherplatz in einer Ausführungsform, wobei in einer anderen Ausführungsform solche Operatoren in die Warteschlange gestellt werden (bis die Speicherplatzgrenze über den Schätzwert für den minimalen Speicherplatz hinaus ansteigt).
  • Daher ermöglicht, das Datenbanksystem 10 DBAs, die Speicherparameter abzustimmen, die schwierig manuell abzustimmen sind, wenn Datenbanken des Stands Technik verwendet werden. Insbesondere sollte die Regulierung der Menge des Speicherplatzes, der zugeordnet wird, von der relativen Häufigkeit der Verwendung eines Operators, den Speicherplatzanforderungen für jeden Operator und der Einstellung von Operatoren, die gleichzeitig im System aktiv sind, abhängen. Diese Bedingungen könnten im Laufe eines Tages stark variieren, insbesondere für ad-hoc-Umgebungen. Die Parameter des Stands der Technik, die den Anmeldern bekannt sind, werden nicht automatisch angepasst, und somit kompensieren sie nicht eine niedrige oder hohe Speicherplatznutzung im System. Außerdem steuern die Parameter des Stands der Technik, die den Anmeldern bekannt sind, nicht die maximale Speicherplatzmenge, die eine Abfrage nutzt, was zu einer Verschärfung der übermäßigen Zuordnung von Speicherplatz führen kann und häufig Trashing aufgrund von Speicherplatzverarmung verursacht. Schließlich verschwenden solche Parameter des Stands der Technik häufig PGA-Speicher, weil mehr Speicherplatz zugeordnet wird, als notwendig ist, um eine akzeptable Leistung zu erhalten. Ein solcher Speicherplatz, der beim Stand der Technik nicht genutzt wird, sollte besser von anderen Abfragen verwendet werden oder sogar von anderen Anwendungen, wenn ein extern gesetzter globaler Wert 11 verwendet wird, wie zuvor beschrieben.
  • Ein Computer 100 (1B) einer Ausführungsform, die die zuvor beschriebenen Operationen implementiert, führt eine Anzahl von Softwareprogrammen aus, wie ein Betriebssystem 101, eine Prozesslogik 102, eine Netzwerkanwendung 103 und eine Datenbankanwendung 110. Der Computer 100 kann ein beliebiger Computer sein, wie ein IBM Personal Computer (PC) oder eine Sun Workstation, wie ein Ultra Sparc II. Der Computer 100 umfasst eine oder mehrere Zentraleinheiten (CPUs), um Anweisungen auszuführen, einen nicht flüchtigen Speicher (wie eine Festplatte), um Daten und Anweisungen zu halten, und einen flüchtigen Speicher (wie ein DRAM) um Daten und Anweisungen während der Ausführung vorübergehend zu halten. Der Computer 100 umfasst auch einen Bus, der die CPUs und die Speicher miteinander verbindet. Der Computer 100 kann eine Anzeigevorrichtung (wie eine Kathodenstrahlröhre) zum Anzeigen von Informationen an einen Benutzer, und eine oder mehrere Eingabevorrichtungen (wie eine Tastatur und/oder eine Maus) umfassen, um Befehle vom Benutzer zu empfangen.
  • Die Verwendung eines solchen Computers 100 ist in der nachfolgenden Beschreibung an sich erforderlich, selbst wenn eine solche Verwendung nicht ausdrücklich identifiziert wird. Die Datenbankanwendung 110 führt Abfragen verschiedener Arten aus, um Informationen in einer Datenbank (die beispielsweise eine relationale Datenbank sein kann) zu speichern und Informationen von ihr abzurufen. Jede Abfrage kann auf normale Weise über eine oder mehrere Operatoren ausgeführt werden, wie Sort, Hash-Join und Bitmap Merge. Während der Ausführung jeder Abfrage ordnet der Computer 100 Speicherplatz wie nachfolgend beschrieben zu. Die Zuordnung basiert entweder direkt oder indirekt auf dem extern gesetzten globalen Wert 11 (dargestellt durch den Wert des Datenbankparameters PGA AGGREGATE TARGET). In dieser besonderen Ausführungsform wird der Wert 11 als ein Ziel für den gesamten Speicherplatz verwendet, der für die interne Nutzung durch Prozesse (manchmal „Serverprozesse" genannt) zuzuordnen ist, die die Datenbankabfragen ausführen. In einer Ausführungsform empfängt (siehe Schritt 112) eine Benutzerschnittstelle 111 (1B) den globalen Wert 11 von einem Datenbankadministrator und speichert (siehe Schritt 113) den Wert in dem gemeinsam genutzten Speicher. Jeder Prozess ordnet Speicherplatz zu seiner internen Nutzung basierend (zumindest teilweise) auf dem Wert 11 zu, der von dem gemeinsam genutzten Speicher gelesen wird.
  • Eine Ausführungsform der Datenbank 110 umfasst eine Anweisungssequenz (nachfolgend „Memory-Broker") 115, die einen internen Wert von dem globalen Wert 11 und optional von Statistikwerten zur derzeitigen Speicherplatznutzung ableitet (siehe Schritt 116 in 1B) und den internen Wert zur Verwendung durch die Serverprozesse speichert (siehe Schritt 117), wenn der Speicherplatz zugeordnet wird. Abhängig von der Implementierung kann der interne Wert entweder ein globaler interner Wert 14 sein, der für den Speicherplatz gilt, der von allen Prozessen 120A120Z zugeordnet wird, oder eine Speicherplatzgrenze 17 auf Operatorebene, die nur für den Speicherplatz gilt, der für einen Operator zugeordnet wird. Basierend auf den Statistikwerten zur Speicherplatznutzung überarbeitet der Memory-Broker 115 dynamisch den internen Wert in Reaktion auf die Speicherplatzzuordnungen durch die Serverprozesse 120A120Z (wobei A ≤ I ≤ Z, wobei Z die derzeitige Anzahl von Prozessen ist, wodurch eine Rückkopplungsschleife gebildet wird (veranschaulicht durch Verzweigung 118 in 1B).
  • Abhängig von der Ausführungsform nutzt ein Serverprozess 120A (siehe Schritt 121) entweder den extern gesetzten globalen Wert 11 oder einen der internen Werte 14 und 17, um den zuzuordnenden Speicherplatz zu bestimmen und weist danach den Speicherplatz zu. Als Nächstes aktualisiert (siehe Schritt 122) der Prozess 120A die Statistikwerte über die Nutzung von Speicherplatz (z. B. um die Speicherplatzmenge anzugeben, die zugeordnet worden ist) und geht dazu über, die Abfrage auf normale Weise auszuführen. Nach Beendigung der Abfrageverarbeitung hebt der Prozess 120A den zuvor zugeordneten Speicherplatz auf (siehe Schritt 123) und aktualisiert (siehe Schritt 124) auch die Statistikwerte über die Speicherplatznutzung.
  • Wie zuvor angemerkt, nutzt der Memory-Broker 115 die Statistikwerte zur Speicherplatznutzung in Schritt 116, um entweder einen oder beide internen Werte 14 und 17 zu überarbeiten, abhängig von der Ausführungsform. Beispielsweise kann der Memory-Broker 115 befinden, dass es zu viele Prozesse gibt und der gesamte zugeordnete Speicherplatz kann den extern gesetzten globalen Wert 11 wesentlich überschreiten, in welchem Fall der Memory-Broker 115 entweder einen oder beide internen Werte 14 und 17 herabsetzt, so dass zukünftig eine geringere Speicherplatzmenge (als die derzeitige Menge) von den Prozessen zugeordnet wird. Wenn andererseits der Memory-Broker 115 befindet, dass es zu wenige Prozesse gibt und der gesamte zugeordnete Speicherplatz den extern gesetzten globalen Wert 11 nicht erreicht, kann der Memory-Broker 115 entweder einen oder beide internen Werte 14 und 17 erhöhen, so dass zukünftig eine größere Speicherplatzmenge von den Prozessen zugeordnet wird. In dieser Ausführungsform werden der extern gesetzte globale Wert 11 und die internen Werte 14 und 17 von der Datenbankanwendung 110 als Ziele behandelt, die versucht, das Ziel/die Ziele innerhalb eines gewissen Bereichs zu erfüllen.
  • Der Memory-Broker 115 dieser Ausführungsform arbeitet periodisch (beispielsweise alle 3 Sekunden einmal), um das interne Ziel, das von den Prozessen 120A120Z verwendet wird, zu überarbeiten, um Speicherplatz zuzuordnen. Ein Serverprozess 120I kann jedoch ebenfalls den Memory-Broker 115 aufrufen, z. B. wenn der gesamte zugeordnete Speicherplatz den extern gesetzten globalen Wert 11 um eine vorbestimmte Menge überschreitet. Insbesondere berechnet (siehe Schritt 125 in 1A) der Prozess 120A in einer Ausführungsform einen Unterschied (nachfolgend „Abweichung") zwischen dem gesamten Speicherplatz, der von allen Prozessen 120A120Z zugeordnet wird und dem extern gesetzten globalen Wert 11. In einer spezifischen Implementierung ist die „Abweichung" eine Nummer mit Vorzeichen, die die inkrementale Zuordnung oder die Aufhebung der Zuordnung von Speicherplatz von der letzten Berechnung der Speicherplatzgrenze 17 angibt. Diese spezifische Implementierung stellt die Abweichung auf Null, warm immer die Speicherplatzgrenze 17 neu berechnet wird. Danach erhöht jeder Prozess 120I, der Speicherplatz für einen Operator zuordnet, die Abweichung um die Menge des zugeordneten Speicherplatzes (auf ähnliche Weise wird, wenn der Speicherplatz freigegeben wird, die Abweichung um die Menge des freigegebenen Speicherplatzes herabgesetzt).
  • Nach der Zuordnung prüft der Prozess 120A, ob die Abweichung z. B. 10% des extern gesetzten globalen Werts 11 überschreitet und wenn ja, ruft er den Memory-Broker 115 auf. Wenn er aufgerufen wird, überarbeitet der Memory-Broker 115 entweder einen oder beide der internen Werte 14 und 17 auf die zuvor besprochene Weise. Der Prozess 120A kann auch die Abweichung berechnen (siehe Schritt 126 in 1B) und den Memory-Broker 115 alarmieren, wenn eine Zuordnung von Speicherplatz aufgehoben wird.
  • Abhängig von der Ausführungsform kann der Memory-Broker 115 einen internen Wert 14 verwenden, der global ist, um eine andere interne Grenze 17 zu berechnen, die auf der Operatorebene angewandt wird. Insbesondere wird eine solche Grenze auf Operatorebene („Speicherplatzgrenze” genannt) 141 (2) in einem gemeinsam genutzten Speicher 140 gehalten und identifiziert eine Grenze auf dem (oder ein Ziel für den) Speicherplatz, der von einem Serverprozess 12A zuzuordnen ist, für jeden Operator in jeder Abfrage. Daher vergleichen die Serverprozesse 120A120Z die Speicherplatzgrenze 141 mit einem Schätzwert 142I des benötigten Speicherplatzes (z. B. für den Operator, um in einem Einfach-Durchlaufmodus zu arbeiten), um den zuzuordnenden Speicherplatz zu bestimmen und danach eine passende Speicherplatzmenge zuzuordnen (oder in die Warteschlange zu stellen, abhängig von der Implementierung). Es ist zu beachten, dass in dieser Implementierung die gleiche Speicherplatzgrenze 141 verwendet wird, um Speicherplatz allen Operatoren zuzuordnen, obgleich in einer anderen Implementierung eine andere Speicherplatzgrenze für jeden Operatortyp verwendet werden kann (z. B. kann Hash-Join eine Grenze haben, die sich von einer entsprechenden Grenze für Sort unterscheidet).
  • Jeder der Schätzwerte 142A142P wird in einem Profil 143J eines Operators gehalten, für den Speicherplatz zuzuordnen ist. In einer Implementierung wird jedes einer Anzahl Profile 143A143V in dem gemeinsam genutzten Speicher 140 gehalten. In dieser Implementierung registrieren die Prozesse 120A120Z jeden Operator (siehe Schritt 127 in 1B), indem sie in dem gemeinsam genutzten Speicher 140 ein entsprechendes Profil 143 erzeugen, das drei Schätzwerte für Speicherplatz enthält, der von dem Operator benötigt wird, um in jedem der folgenden Modi arbeiten zu können: optimaler Modus, Einfach-Durchlaufmodus und minimaler Modus. Der „optimale" Modus wird in diesem Dokument auch als „Cache"-Modus bezeichnet, weil während der Ausführung kein Festplattenzugriff seitens eines Operators erforderlich ist.
  • Danach bestimmt ein Prozess 120I die Menge des Speicherplatzes, der für einen Sort-Operator in einer Datenbankanwendung zuzuordnen ist, wie folgt: Schätzwert für den optimalen Speicherplatz 142P, wenn der Schätzwert für den optimalen Speicherplatz 142P kleiner als die Speicherplatzgrenze 141 ist (siehe Schritte 151152 in 3), Schätzwert für den Einfach-Durchlaufspeicherplatz 142I (2), wenn die Speicherplatzgrenze 141 zwischen dem Schätzwert für den optimalen Speicherplatz 142P und dem Schätzwert für den Einfach-Durchlaufspeicherplatz 142I (siehe Schritte 153 bis 154 in 3) liegt, und Schätzwert für den minimalen Speicherplatz 142A (2) wenn die Speicherplatzgrenze 141 kleiner als der Schätzwert für den minimalen Speicherplatz 142I (siehe Schritt 155 in 3) ist. Die gerade beschriebene Zuordnung wird verwendet, weil der Sort-Operator vom Einfach-Durchlauf-Schätzwert zum Cache-Schätzwert nicht so sehr von einer Speicherplatzerhöhung profitiert (im Vergleich zur Speicherplatzerhöhung von minimal zu Einfach-Durchlauf).
  • Wie anderswo zu bemerken ist, kann das spezifische Verfahren zum Bestimmen der Menge des zuzuordnenden Speicherplatzes von verschiedenen Faktoren abhängen: den Prozessattributen (zum Beispiel der Priorität) oder dem Operator. Schritt 127 von 1B ist optional, und es ist nicht notwendig, die Operatorprofile in dem gemeinsam genutzten Speicher 140 zu registrieren, und stattdessen werden solche Profile individuell von jedem Prozess 120A in seinem eigenen internen Speicher in anderen Implementierungen gehalten.
  • Es ist zu beachten, dass der Schätzwert für den minimalen Speicherplatz 142A größer sein kann als die Speicherplatzgrenze 141 für einige Operatoren, und in einer Ausführungsform werden solche Prozesse nicht in die Warteschlange gestellt, dürfen aber den Schätzwert für den minimalen Speicherplatz 142A zuordnen, so dass die Abfrage ausgeführt wird. In solch einem Fall kann, wenn andere Prozesse zu wenig zuordnen, das heißt weniger zuordnen, als die Speicherplatzgrenze 141 ist, der gesamte Speicherplatz, der von der Anwendung zugeordnet wird, unter dem extern gesetzten globalen Wert 11 bleiben. Die Prozesse 120A120Z, die mehr Speicherplatz zuordnen als die Speicherplatzgrenze 141 ist, können die Prozesse übersteigen, die zu wenig zuordnen, so dass der gesamte zugeordnete Speicherplatz den extern gesetzten globalen Wert 11 übersteigt und veranlassen kann, dass der globale interne Wert 14 herabgesetzt wird (durch den Memory-Broker 115), was wiederum veranlasst, dass die Speicherplatzgrenze 141 herabgesetzt wird (auch durch den Memory-Broker 115). Danach werden die Prozesse 120A120Z gezwungen, weniger Speicherplatz zuzuordnen, als sie ansonsten zuordnen würden, wenn der Wert 11 unverändert geblieben wäre. Auf diese Weise gibt es ein Geben und Nehmen zwischen den Prozessen 120A120Z, so dass der extern gesetzte globale Wert 11 erreicht wird. Wenn die gesamte Anzahl von Prozessen 120A120Z übermäßig ist, wenn beispielsweise die Summe des Schätzwerts für den minimalen Speicherplatz 142A1422 für alle Prozesse den Wert 11 übersteigt, dann wird kein zusätzlicher Speicherplatz für einen beliebigen Prozess zugeordnet und stattdessen werden Speicherplatzanforderungen in die Warteschlange gestellt.
  • In einer Ausführungsform aktualisieren die Prozesse 120A120Z auch die Statistikwerte 160 (2) über die Speicherplatznutzung, wann immer Speicherplatz zugeordnet wird oder die Zuordnung aufgehoben wird, wie zuvor mit Bezug auf 1A angemerkt. Insbesondere umfassen die Statistikwerte 160 die Speicherplatzmenge („freier Speicherplatz” genannt) 161 (2 und 4), die zugeordnet aber nicht genutzt wird. Beispielsweise muss ein Prozess 120I möglicherweise 1 MB zuordnen, aber wenn das Betriebssystem 101 Speicherplatz nur in 4 MB-Inkrementen bereitstellt (z. B. weil dies die Seitengröße ist), so sind 3 MB freier Speicherplatz, 4 MB ist zugeordneter Speicherplatz und 1 MB ist genutzter Speicherplatz. Der freie Speicherplatz 161 (4) ist normalerweise für keinen anderen Prozess 120J verfügbar.
  • Die Prozesse 120A120Z aktualisieren auch in den Statistikwerten 160 die Speicherplatzmenge („anderer Speicherplatz” genannt) 162 (2 und 4), die nicht mit Operatoren (wie Sort, Hash-Join und Bitmap Merge) in Verbindung steht, die eine Abfrage implementieren. Beispielsweise kann der Prozess 120I PL/SQL oder Java-Anweisungsfrequenzen umfassen, die nicht mit den Abfrage-Implementierungsoperatoren in Beziehung stehen, und für die Speicherplatz 162 genutzt wird. Normalerweise kann anderer Speicherplatz 162 nicht geändert werden, indem die Weise geändert wird, auf die die Operatoren funktionieren (z. B. Einfach-Durchlauf v/s Mehrfach-Durchlauf).
  • Die Prozesse 120A120Z pflegen auch in den Statistikwerten 160 die Speicherplatzmenge („Arbeitsbereichspeicherplatz” genannt) 163, der tatsächlich von den Operatoren genutzt wird. Die Pflege von Statistikwerten 160 durch die Prozesse 120A120Z wird in einer Ausführungsform in Wrapper-Funktionen implementiert, die wiederum „malloc" oder „free" aufrufen. Außerdem können die Statistikwerte 160 separat für jeden der einzelnen Prozesse 120A120Z behalten werden oder alternativ kann die Gesamtsumme jeder Statistik (über alle Prozesse 120A120Z) erhalten werden.
  • In einer Ausführungsform nutzt der Memory-Broker 115 die zuvor beschriebenen Statistikwerte 160, um den globalen internen Wert 14 (in 5 als Ti bezeichnet, das als Ziel für die Menge des Arbeitsbereichspeicherplatzes 163 genutzt wird) auf die nachfolgende Weise. Insbesondere berechnet der Memory-Broker 115 zuerst den anderen Speicherplatz 162 (in 5 als Om bezeichnet) als die Differenz zwischen dem genutzten Speicherplatz 164 (in 5 als Um bezeichnet) und dem Arbeitsbereichspeicherplatz 163 (in 5 als Wm bezeichnet). Als nächstes prüft der Memory-Broker 115 (siehe Schritt 172 in 5), ob der extern gesetzte globale Wert 11 (auch „PGA AGGREGATE TARGET" genannt und in 5 als Tpga bezeichnet) geringer ist als der andere Speicherplatz 162, und wenn ja, stellt er Ti so ein, dass er 6% von Tpga beträgt.
  • Daher wird im ungünstigsten Fall, wenn der andere Speicherplatz 162-Speicher zu groß ist, ein gewisses Minimum (z. B. 6%) von Tpga als der globale interne Wert 14 verwendet. Dies beruht darauf, dass die Größe des anderen Speichers 162 außerhalb der Steuerung des Memory-Brokers 115 liegt. Wenn der andere Speicherplatz 162 geringer ist als Tpga, dann stellt der Memory-Broker 115 in Schritt 174 den globalen internen Wert 14 auf 90% der Differenz zwischen Tpga und Om und geht weiter zu Schritt 175. Dies erfolgt als eine „Sicherheits"-Maßnahme, um eine Veränderung des zugeordneten Speicherplatzes während des Zeitraums zwischen zwei aufeinander folgenden Operationen des Memory-Brokers 115 zu berücksichtigen (somit wird in einem Beispiel nicht erwartet, dass der zugeordnete Speicherplatz schneller als 10% in drei Sekunden wächst).
  • Als nächstes prüft der Memory-Broker 115 in Schritt 175, ob der zugeordnete Speicherplatz (in 5 als Am bezeichnet) größer ist als Tpga und wenn ja, geht er über zu Schritt 176 (um die Überzuordnung zu handhaben) und geht alternativ weiter zu Schritt 177 (um die Unterzuordnung zu handhaben). In Schritt 176 berechnet der Memory-Broker 115 einen Faktor Fwa (auch „Arbeitsbereichs-Zuordnungsfaktor" genannt) als das Verhältnis Wm/(Om + Wm) und berechnet überdies einen anderen Faktor Foa (auch „Überzuordnungs-Faktor” genannt) als das Verhältnis (Am – Tpga)/Am und bestimmt, dass die neue Grenze Ti die derzeitige Grenze Ti multipliziert mit (1 – Fwa·Foa) ist.
  • In Schritt 177 prüft der Memory-Broker 115, ob 90% von Am geringer ist als Tpga und auch, ob die Summe aller Zuordnungen für den optimalen Speicherplatz größer ist als Tpga und wenn ja, gibt es keine Veränderung in Ti. Alternativ geht der Memory-Broker 115 zu Schritt 179 über, um den zuvor beschriebenen Arbeitsbereich-Zuordnungsfaktor Fwa zu berechnen. Als Nächstes berechnet der Memory-Broker 115 in Schritt 180 einen Unterzuordnungs-Faktor Fua (auch „Boosting-Faktor" genannt) als das Verhältnis (Tpga – Am)/Tpga. Danach berechnet der Memory-Broker 115, dass die neue Grenze Ti die derzeitige Grenze Ti multipliziert mit (1 + Fwa·Fua) ist. Als nächste stellt der Memory-Broker 115 (in Schritt 182) entweder die neue berechnete Grenze Ti oder 6% von Tpga, je nachdem was größer ist, als den globalen internen Wert 14 ein, der wie nachfolgend in diesem Dokument beschrieben verwendet wird.
  • Insbesondere wird der neue berechnete globale interne Wert 14 zukünftig verwendet, um Speicherplatz zuzuordnen, der von verschiedenen Operatoren benötigt wird. Wie anderswo in diesem Dokument beschrieben, kann solch ein globaler interner Wert 14 direkt von den Prozessen (die Speicherplatz für jeden einzelnen Operator zuordnen) verwendet werden oder kann verwendet werden, um eine Speicherplatzgrenze 17 zu berechnen, die wiederum von solchen Prozessen verwendet wird. In einer spezifischen Ausführungsform wird die Speicherplatzgrenze 17 von dem globalen internen Wert 14 wie nachfolgend in Pseudo-Code in dem anhängigen Appendix beschrieben.
  • Die automatische und dynamische Zuordnung von Speicherplatz, wie in diesem Dokument beschrieben, kann in Kombination mit einem manuellen Mechanismus des Stands der Technik genutzt werden, z. B. mittels eines Datenbankparameters, der „WORKAREA_SIZE_POLICY" genannt werden kann, der auf einen der zwei Werte AUTO und MANUAL gesetzt werden kann. Das Setzen dieses Parameters auf AUTO ruft automatische und dynamische Zuordnung auf. Außerdem kann ein anderer Datenbankparameter PGA_AGGREGATE_TARGET (zuvor beschrieben) implementiert werden, und wenn er von dem Datenbankadministrator gesetzt worden ist, wird der Standardwert des Parameters WORKAREA_SIZE_POLICY automatisch auf AUTO gesetzt.
  • Alternativ wird der Wert des Parameters WORKAREA_SIZE_POLICY automatisch auf MANUAL gesetzt, wenn PGA_ AGGREGATE_TARGET nicht gesetzt ist. Wenn der Parameter WORKAREA_SIZE_POLICY auf MANUAL gesetzt ist, dann wird PGA AGGREGATE TARGET in dieser Ausführungsform nicht verwendet und stattdessen nutzt die Datenbank einen Mechanismus des Stands der Technik (z. B. mittels Verwendung der einzelnen Ziele, die von dem Datenbankadministrator bezüglich des Speicherplatzes für jeden Operator eingestellt wurden).
  • Die automatischen und manuellen Mechanismen können kombiniert werden, beispielsweise um eine Rückwärtskompatibilität zu erhalten: einige Operatoren können den manuellen Mechanismus nutzen, während andere den automatischen Mechanismus nutzen können. Bei solch einem kombinierten Betrieb wird der globale interne Wert 14 automatisch herabgesetzt, um den Speicherplatz unterzubringen, der von dem manuellen Mechanismus genutzt wird.
  • Abhängig von der Speicherplatznutzung kann der Memory-Broker 115 die Speicherplatzgrenze 17 gleich herabsetzen, nachdem ein Operator Speicherplatz zugeordnet hat, beispielsweise wenn ein plötzlicher Anstieg der Anzahl abflaufender Abfragen auftritt. Umgekehrt kann der Memory-Broker 115 die Speicherplatzgrenze 17 erhöhen, wenn die Nachfrage an Speicherplatz abfällt. Nachdem ein neuer interner Wert für die Speicherplatzgrenze 17 berechnet worden ist, wird der Wert 17 in einer besonderen Ausführungsform nur auf neue Operatoren angewandt, die kurz davor sind, Speicherplatz zuzuordnen, nach der Berechnung. In einer alternativen Ausführungsform wird ein solcher neuer Wert der Speicherplatzgrenze 17 auch von Operatoren verwendet, die zuvor Speicherplatz zugeordnet haben und die derzeit ausführen, wodurch ihr zuvor zugeordneter Speicherplatz während der Ausführung herabgesetzt (oder erhöht) wird.
  • Das Ansprechvermögen der Operatoren auf eine Veränderung der Speicherplatzgrenze 17 kann die Anzahl Male, die der Memory-Broker 115 die Speicherplatzgrenze 17 innerhalb eines gegebenen Intervals neu berechnet und/oder die Menge der Veränderung der Speicherplatzgrenze 17 beeinträchtigen. Wenn beispielsweise die Operatoren, die derzeit ausführen, nicht ansprechen oder langsam ansprechen (im Vergleich zum Ansprechvermögen des Memory-Brokers 115) dann setzt der Memory-Broker 115 wiederholt den globalen internen Wert 14 und die Speicherplatzgrenze 17 herab, so dass gewährleistet ist, dass sich der gesamte zugeordnete Speicherplatz dem Ziel des extern gesetzten globalen Werts 11 annähert.
  • Um auf Veränderungen der Speicherplatzgrenze 17 nach der Zuordnung von Speicherplatz ansprechen zu können, können Operatoren (wie Sort und Hash-Join) an günstigen Stellen während ihrer Ausführung prüfen, ob eine Veränderung der Speicherplatzgrenze 17 (oder des globalen internen Werts 14) vorliegt. Die Stellen, an denen eine Veränderung der Speicherplatzgrenze 17 (oder des globalen internen Werts 14) geprüft wird, können entweder synchron (beispielsweise einmal pro Sekunde) oder asynchron (beispielsweise nachdem ein oder mehrere Schritte während der Ausführung eines Operator ausgeführt worden sind) eingestellt werden. In beiden Ausführungsformen wechseln die Operatoren ihre Modi, beispielsweise von optimal zu Einfach-Durchlauf oder von Einfach-Durchlauf zu minimal und daher ihren zugeordneten Speicherplatz, abhängig von Entscheidungen, die vom Memory-Broker 115 getroffen wurden. Darüberhinaus können die Operatoren solcher Ausführungsformen ihre Schätzwerte für Speicherplatzanforderungen dynamisch während ihrer Operation überarbeiten.
  • Nachfolgend werden kurz Modifikationen an einem Hash-Join-Operator und an einem Sort-Operator, um einen Moduswechsel und eine Änderung des zugeordneten Speicherplatzes während der Ausführung zu implementieren, beschrieben.
  • In einer Ausführungsform registriert ein Hash-Join-Operator der AUTO-Version (zuvor beschrieben) Informationen über seinen Arbeitsbereich (speichert beispielsweise einen Schätzwert des Speicherplatzes, der in jedem der drei Modi erforderlich ist: optimaler Modus, Einfach-Durchlaufmodus und minimaler Modus). In dieser Ausführungsform gibt eine Variable mit der Bezeichnung „mode" (die in SGA steht) für jeden Operator den derzeitigen Operationsmodus eines Operators und daher seine Speicherplatznutzung an. In dieser Ausführungsform wird die variable „mode" für jeden Operator nur von dem Operator in dieser Ausführungsform geändert (obgleich der Memory-Broker 115 in einer alternativen Ausführungsform eine solche Änderung vornehmen kann.
  • Solange die Speicherplatzgrenze 17 ausreichend hoch ist, arbeitet der Hash-Join-Operator im optimalen Modus und der Hash-Join-Operator ordnet eine anfängliche Speicherplatzmenge zu und erhöht seinen Speicherplatz dynamisch (bis zum Schätzwert für den optimalen Speicherplatz), um angegebene Tupel zu speichern. Selbst beim Arbeiten im optimalen Modus untergliedert der Hash-Join-Operator die Eingabedaten basierend auf der Einfach-Durchlaufanforderung, um das Umschalten auf den Einfach-Durchlaufmodus zu ermöglichen, wenn die Speicherplatzgrenze 17 herabgesetzt wird. Beim Aufbauen von Speicherplatz nimmt der Hash-Join-Operator in dieser Ausführungsform, wenn die Speicherplatzgrenze 17 ausreichend herabgesetzt worden ist, um einen Moduswechsel von optimal auf Einfach-Durchlauf zu veranlassen, eine Größenänderung seines Arbeitsbereichs auf die Einfach-Durchlaufanforderung vor, indem er eine passende Menge Daten auf die Festplatte räumt.
  • Während des Einfach-Durchlaufmodus' (in der Build-Phase) arbeitet der Hash-Join-Operator auf normale Weise. Der Arbeitsbereich ist jedoch so bemessen, dass er eine Build-Partition plus einen oder mehreren IO-Slots pro zusätzlicher Partition umfasst (um die asynchrone Eingabe und Ausgabe zu unterstützen). Während dieser Phase wird die Größe des Arbeitsbereichs nicht geändert, selbst wenn die Eingabe wesentlich größer ist als erwartet. Der Hash-Join-Operator nutzt nur die Speicherplatzmenge, die für den Einfach-Durchlaufmodus zu der Zeit geschätzt wurde, als der Aufbau gestartet wurde.
  • Nachdem der erste Einfach-Durchlauf-Aufbau (welcher das erste Build ist) beendet worden ist, ist die Größe jeder Build-Partition bekannt. Wenn die tatsächliche Größe der größten Partition zweimal (oder mehr) größer ist als eine vorhergesagte gemeinsame Größe für jede Partition (z. B. die Einfach-Durchlaufgröße) baut der Hash-Join-Operator unter Verwendung von Tupeln von dem ersten Aufbau neu auf. Der Rebuild-Schritt verwendet die genaue Größe, um die ideale Anzahl von Build-Partitionen und somit einen genaueren Schätzwert des Arbeitsbereichspeicherplatzes zu bestimmen.
  • Das zweite Aufbauen ist schneller als das erste Build (in den meisten Fällen), weil die Eingabedatengröße während des Neuaufbaus kleiner ist als die ursprüngliche Datengröße, die Aufbauzeit ist im Allgemeinen sehr klein im Vergleich zur Suchzeit. Außerdem ist die zusätzliche neue Aufbauzeit im Vergleich zur gesamten Ausführungszeit des Hash-Join-Operators zu vernachlässigen, weil die Suchzeit wesentlich größer ist. Die Speicherplatzerspamis aufgrund eines solchen Neuaufbaus könnte jedoch enorm sein (wenn der Schätzfehler der Eingabegröße groß ist).
  • Solange die Speicherplatzgrenze 17 hoch ist, um die Ausführung im „Cache"- (auch „optimaler) " Modus zu erlauben, sucht der Hash-Join im Speicher. Wenn die Grenze 17 ausreichend herabgesetzt wird, um eine Modusänderung nach „Einfach-Durchlauf" zu veranlassen, wird der Hash-Join auf eine Einfach-Durchlaufsuche schalten, indem die Größe seines Hash-Bereichs geändert wird. Zu dieser Zeit wird eine Teilmenge von Partitionen auf die Festplatte gebracht und die Suche führt im Einfach-Durchlaufmodus mit den Partitionen fort, die im Speicher geblieben sind. Später werden, falls die Speicherplatzgrenze 17 bei der Überarbeitung niedriger gesetzt wird als der Schätzwert für den Einfach-Durchlauf, alle Build-Partitionen, die derzeit im Speicher verbleiben, auf die Festplatte gebracht. Dann wird die Suche [Probe] basierend auf der Mindestanforderung unterteilt (z. B. zwei Slots pro Partition).
  • Für jedes Paar Build/Probe-Partition ordnet der Hash-Join-Operator genug Speicherplatz zu, um die kleinste der zwei Partitionen im Cache-Speicher zu speichern. Wegen der potentiellen zusätzlichen Rebuild-Phase sollte der verbrauchte Speicher nahe der idealen Einfach-Durchlauf-Speicherplatzanforderung sein, selbst wenn der Schätzwert für die Eingabegröße nicht korrekt war.
  • Die Modifikationen, die an dem Sort-Operator vorgenommen werden, wenn er in der „AUTO"-Version (zuvor beschrieben) läuft, sind ähnlich denen, die am Hash-Join-Operator vorgenommen werden. Der Sort-Operator ist in der Lage, zu einem beliebigen Zeitpunkt vom optimalen Modus zum Einfach-Durchlaufmodus umzuschalten. Der Sort-Operator erhöht auch progressiv die Größe jedes Sortierdurchlaufs, um schlechte Schätzwerte bei der Eingabegröße zu berücksichtigen. Auf diese Weise führt der Sort-Operator stets eine Einfach-Durchlauf-Zusammenführung bei einer geringen Erhöhung des Speicherplatzes aus.
  • In einer Ausführungsform registriert der Sort-Operator, wenn der von dem Sort-Operator geschätzte Arbeitsbereich einen vorbestimmten Wert (wie 128 KB) überschreitet, sein Arbeitsbereichsprofil (umfassend den Schätzwert). Schätzwerte, die gleich und geringer als der vorbestimmte Wert sind, werden nicht registriert, so dass der Einfluss der Verwendung des Memory-Brokers 115 bei der Online-Transaktionsverarbeitungs(OLTP)-Umgebung begrenzt wird, wobei Eingaben in den Sort-Operator im Vergleich zu anderen Umgebungen meistens sehr klein sind. Daher kann die Einbindung des Memory-Brokers 115 für kleine Arbeitsbereiche vermieden werden.
  • Der optimale Modus des Sort-Operators ist nämlich dem Sort-Operator der MANUELLEN (zuvor beschriebenen) Version ähnlich. Tupel, die von der darunterliegenden Tupelquelle abgerufen werden, werden dem Arbeitsbereich des Sort-Operators hinzugefügt. Die Größe des Arbeitsbereichs wird auf langsame Weise erhöht. Wenn an einem Punkt der Speicherplatzbedarf größer ist als der Schätzwert für den optimalen Speicherplatz (z. B. die Eingabe größer als vorhergesagt) werden einer oder mehr der drei Schätzwerte aktualisiert. Solange die Speicherplatzgrenze 17 ausreichend hoch ist, um eine Zuordnung des Schätzwerts für den optimalen Speicherplatz für die derzeitige Ausführung zu ermöglichen, fahrt der Sort-Operator fort, seinen Arbeitsbereich auszuweiten, selbst wenn die Anforderung größer ist als ein ursprünglicher Schätzwert für den optimalen Speicherplatz, der erstellt wurde, als das Sortieren gestartet wurde.
  • Wenn an einem Punkt die Speicherplatzgrenze 17 ausreichend herabgesetzt worden ist, um einen Moduswechsel vom optimalen zum Einfach-Durchlaufmodus zu veranlassen, bringt der Sort-Operator den derzeitigen und ersten Sortierdurchgang auf die Festplatte. Dann schrumpft der Sort-Operator den Arbeitsbereich auf den derzeitigen Schätzwert für den Einfach-Durchlaufspeicher. An dem Punkt schaltet der Sort-Operator auf den Einfach-Durchlaufmodus um.
  • Im Einfach-Durchlaufmodus vergrößert der Sort-Operator dynamisch den Arbeitsbereich, um einen schlechten Schätzwert bei der Eingabegröße zu berücksichtigen. Beispielsweise sei angenommen, dass die reale Eingabegröße 800 MB anstatt einer erwarteten Größe von 100 MB (das Achtfache) ist. Wenn der Sort-Operator beginnt, seinen ersten Satz an Sortierdurchläufen zu erzeugen, bemisst er den Arbeitsbereich basierend auf der geschätzten Eingabegröße von 100 MB. Dies ergibt eine anfängliche Arbeitsbereichsgröße von 2,5 MB bei einer IO-Größe von 64 KB. Nachdem 100 MB der Eingabe verbraucht worden sind, was 40 Durchläufen entspricht, bemerkt der Sort-Operator, dass mehr Tupel sortiert werden müssen. An dem Punkt setzt der Sort-Operator voraus, dass die geschätzte Eingabegröße das Zweifache ist und nimmt einen neuen Schätzwert von 200 MB anstatt von 100 MB an. Basierend auf diesem neuen Schätzwert wird die Größe des Arbeitsbereichs neu eingestellt, indem seine tatsächliche Größe mit dem Faktor sqrt(2) multipliziert wird, weil der Speicherplatz, der für den Einfach-Durchlauf erforderlich ist, wie die Quadratwurzel der Eingabegröße variiert. Die gleiche Technik wird wieder und wieder angewandt, bis alle Tupel von der Eingabe verbraucht sind.
  • In dem Beispiel können 40 Durchläufe 2,5 MB jeweils für die ersten 100 MB stattfinden, dann 29 Durchläufe à 3,5 MB jeweils für die nächsten 100 MB, dann 40 Durchläufe à 5 MB jeweils für die nächsten 200 MB, und schließlich 56 Durchläufe à 7 MB jeweils für die letzten 400 MB. Am Ende der ersten Phase des Sort-Operators gibt es insgesamt 165 Durchläufe, anstatt einer „idealen" Anzahl von 114 Durchläufen, die erhalten worden wäre, wenn von Anfang an bekannt gewesen wäre, dass die Eingabegröße 800 MB betragen hat. Diese Durchläufe werden im Einfach-Durchlaufbetrieb unter Verwendung eines Merge-Bereichs von 10,3 MB (165 × 64 KB) zusammengeführt. Dies ist etwas mehr Speicherplatz als die 8 MB (128 × 64 KB), die für ein Einfach-Durchlauf-Zusammenführen der idealen Anzahl von Durchläufen, die 128 ist, erforderlich ist.
  • Angenommen, dass die geschätzte Größe Sestim der Eingabe in den Sort-Operator um höchstens einen Faktor von 2n im Vergleich zur realen Eingabegröße S erhöht ist, (das heißt 2n-1 S < Sestim <= 2nS) kann demonstriert werden, dass die endgültige Anzahl von Sortierdurchläufen Nfinal sein wird:
    Figure 00220001
    wobei N die ideale Anzahl von Durchläufen für die reale Größe S ist (das heißt N = sqrt(S/C)). Im zuvor genannten Beispiel ergab sich das Achtfache, somit ist n gleich 3. Unter Verwendung der zuvor genannten Formel kann ein Fachmann berechnen, dass der Sort-Operator das 1,45-fache der Anzahl Durchläufe eines idealen Einfach-Durchlaufs erzeugen wird. Das heißt, dass die Einfach-Durchlauf-Merge-Phase das 1,45-fache des idealen Einfach- Durchlaufspeichers verbraucht. Wenn n gleich 1 ist (das Zweifache) ist dieser Faktor 1,2, und wenn n unendlich ist, geht dieser Faktor gegen 1/(2-sqrt(2)), was 1,7 ist. Im schlechtesten Fall wird somit der zusätzliche Speicherplatzverbrauch während der Merge-Phase auf das 1,7-fache der idealen Anforderung begrenzt (bei angenommener bekannter Eingabegröße). Wenn der Speicherplatzverbrauch während dem gesamten Sort-Operator berücksichtigt wird, ist er außerdem nur wenig kleiner, weil Durchläufe unter Verwendung von weniger Speicherplatz als dem idealen Speicherplatz erzeugt werden.
  • Ohne diese Technik würde das Ausführen einer Einfach-Durchlauf-Zusammenführung 2n mehr Speicherplatz erfordern als der Speicherplatz für eine Einfach-Durchlauf-Zusammenführung. In Bezug auf den Speicherplatzverbrauch verhält es sich sogar schlechter als dies, weil die Dauer des Merge-Durchlaufs proportional zu der Anzahl Durchläufe ist. Ohne die Größe des Arbeitsbereichs dynamisch anzupassen, erzeugt der Sort-Operator viele Durchläufe (die klein sind) und erhöht somit die Dauer der Merge-Phase.
  • Zahlreiche Modifikationen und Anpassungen der in diesem Dokument beschriebenen Ausführungsformen und Implementierungen sind einem Fachmann in Hinblick auf die Offenbarung offensichtlich. Beispielsweise können nach Beendigung der Ausführung einer Abfrage Statistikwerte, die spezifisch für die Abfrage sind, zur Verwendung bei der Erstellung eines Schätzwerts gespeichert werden, wenn genau die gleiche Abfrage erneut ausgeführt werden muss (beispielsweise durch einen anderen Prozess).
  • Wenn alle aktiven Operatoren mit ihrem minimalen Speicherplatz laufen könnten und angenommen, mehr Speicherplatz wäre verfügbar, könnte der Memory-Broker außerdem diesen Speicher zuerst Operatoren zuordnen, die am meisten von einer Speicherplatzerhöhung profitieren würden. Beispielsweise kann der Memory-Broker so programmiert sein, dass er einem Hash-Join-Operator mehr Speicherplatz gibt, so dass seine Reaktionszeit von 5 Minuten auf 1 Minute herabgesetzt wird (fünffache Geschwindigkeitserhöhung) anstatt die gleiche Speicherplatzmenge einem anderen Hash-Join-Operator zu geben, so dass seine Reaktionszeit von einer Stunde auf 30 Minuten (nur zweifache Geschwindigkeitserhöhung) herabgesetzt wird. Daher berücksichtigt eine Ausführungsform die Reaktionszeit-Geschwindigkeitserhöhung und nicht wirklich die absolut verbesserte Zeit. Darüber hinaus kann, wie in diesem Dokument beschrieben, eine Speicherplatzgrenze auch in Datenbanken verwendet werden, die den gesamten Speicherplatz, der von Operatoren benötigt wird, im gemeinsam genutzten Speicher (anstatt privaten Speicher) zuordnen.
  • Daher sind solche zahlreichen Modifikationen und Anpassungen der Ausführungsformen und Implementierungen, die in diesem Dokument beschrieben sind, von den anhängigen Ansprüchen umfasst.
  • APPENDIX
  • Initialisierung
    • workarea_left:= Arbeitsbereiche aller Operationen, die im System aktiv sind number of workarea_left:= Anzahl Arbeitsbereiche, die im System aktiv sind memory_target:= globales internes Ziel oder Grenze, um zwischen den aktiven Arbeitsbereichen zu verteilen Berechnung der Speicherplatzgrenze
      Figure 00250001
      Figure 00260001
      Figure 00270001

Claims (36)

  1. Verfahren zum Verwalten der Zuordnung von Speicherplatz an eine Mehrzahl Prozesse zum Ausführen von Abfragen an einer Datenbankanwendung in einem Computer, wobei die Abfragen von Operatoren implementiert werden und das Verfahren umfasst: Berechnen (13) eines globalen internen Werts (14) des gesamten von den Operatoren zu verwendenden Speicherplatzes von einem extern gesetzten globalen Wert (11), der die Gesamtmenge des von der Datenbankanwendung zu verwendenden Speichers bestimmt und basierend auf Statistikwerten (160) der Speicherplatznutzung, wobei der globale interne Wert (14) einen Abschnitt des extern gesetzten globalen Werts (11) des Speichers darstellt, der zur Verwendung durch die Operatoren zur Verfügung steht; Berechnen (15) eines Werts auf Operatorebene (17), der einen allgemeinen Wert von Speicherplatz bestimmt, der für jeden der Mehrzahl Operatoren zuzuordnen ist, basierend auf dem globalen internen Wert (14); und die Prozesse, die den Wert auf Operatorebene (17) verwenden, um eine Zuordnung von Speicherplatz zur Verwendung durch jeden der Operatoren zu verwalten.
  2. Verfahren nach Anspruch 1, überdies umfassend: Berichtigen des globalen internen Werts (14) basierend auf dem Wert auf Operatorebene (17); und Wiederholen des Vorgangs des Berechnens (15) des Werts auf Operatorebene (17), nachdem der globale interne Wert (14) geändert worden ist.
  3. Verfahren nach Anspruch 1, überdies umfassend: Wiederholen des Vorgangs des Berechnens (15) des Werts auf Operatorebene (17), ohne den globalen internen Wert (14) zu ändern.
  4. Verfahren nach Anspruch 3, wobei der wiederholte Vorgang des Berechnens (15) auf Statistikwerten basiert, die auf die Verwendung von Speicherplatz bezogen sind.
  5. Verfahren nach Anspruch 1, wobei: alle Prozesse Zugriff auf einen gemeinsam genutzten Speicher in dem Computer haben; und das Verfahren das Speichern des Werts auf Operatorebene (17) in dem gemeinsam genutzten Speicher umfasst.
  6. Verfahren nach Anspruch 5, überdies umfassend: Speichern eines Schätzwerts des von dem einen Operator zu verwendenden Speicherplatzes in dem gemeinsam genutzten Speicher.
  7. Verfahren nach Anspruch 6, wobei: der Schätzwert Speicherplatz betrifft, der von einem der Operatoren benötigt wird.
  8. Verfahren nach Anspruch 5, überdies umfassend: jeden Prozess, der in dem gemeinsam genutzten Speicher für jeden Operator speichert: einen ersten Schätzwert für Speicherplatz, der für einen optimalen Modus benötigt wird, wobei es keinen Zugriff auf einen Plattenspeicher gibt; einen zweiten Schätzwert für Speicherplatz, der für einen Durchgangmodus benötigt wird, wobei es Zugriff auf den Plattenspeicher gibt, es aber nur einen Durchgang durch die Daten gibt, die auf dem Plattenspeicher gespeichert sind; und einen dritten Schätzwert für Speicherplatz, der für einen minimalen Modus benötigt wird, wobei es Zugriff auf den Plattenspeicher und es mehrere Durchgänge durch die Daten gibt.
  9. Verfahren nach Anspruch 8, überdies umfassend: Vergleichen des Werts auf Operatorebene (17) mit mindestens einem der Schätzwerte; und Bestimmen einer Menge von Speicherplatz, die dem Operator basierend auf dem Ergebnis des Vergleichs zuzuordnen ist.
  10. Verfahren nach Anspruch 5, überdies umfassend: Jeder Prozess weist Speicherplatz basierend auf dem Wert auf Operatorebene (17) zu; und jeder Prozess speichert die Menge an Speicherplatz, die dem Prozess zugewiesen ist, in dem gemeinsam genutzten Speicher.
  11. Verfahren nach Anspruch 10, überdies umfassend: Jeder Prozess speichert in dem gemeinsam genutzten Speicher die Menge an Speicherplatz, die von jedem Operator in dem Prozess genutzt wird, die Menge an Speicherplatz, die von anderen Abschnitten des Prozesses genutzt wird, und die Menge an Speicherplatz, die zugeordnet ist, aber nicht von dem Prozess genutzt wird.
  12. Verfahren nach Anspruch 1, wobei: der Computer zusätzlich auf die Menge an Speicherplatz anspricht, die von den Nicht-Datenbankprozessen zugeordnet wird.
  13. Verfahren nach Anspruch 1, wobei: der Wert auf Operatorebene (17) allen Operatoren in allen Prozessen gemeinsam ist.
  14. Verfahren nach Anspruch 1, überdies umfassend: periodisches Wiederholen des Vorgangs des Berechnens (15) des Werts auf Operatorebene (17).
  15. Verfahren nach Anspruch 1, überdies umfassend: Wiederholen des Vorgangs des Berechnens (15) in Reaktion auf den globalen internen Wert (14), der von einer vorbestimmten Menge an Speicherplatz übertroffen wird, der der Mehrzahl Prozesse zugeordnet ist.
  16. Computer-lesbares Medium, das darin eine Mehrzahl von Befehlssequenzen gespeichert hat, wobei die Mehrzahl von Befehlssequenzen Befehlssequenzen umfasst, die, wenn sie von einem Computer ausgeführt werden, die Computer veranlassen, das Verfahren nach Anspruch 1 auszuführen.
  17. Signale, eingebettet in ein Trägermedium und kodiert mit einer Mehrzahl von Sequenzen von Befehlen, wobei die Mehrzahl von Befehlssequenzen Befehlssequenzen umfasst, die, wenn sie von einem Computer ausgeführt werden, den Computer veranlassen, das Verfahren nach Anspruch 1 auszuführen.
  18. Verfahren nach Anspruch 8, überdies umfassend: Ableiten einer Menge an Speicherplatz, die jedem Operator basierend auf dem Ergebnis des Vergleichs zwischen dem Wert auf Operatorebene (17) und mindestens einem der ersten, zweiten und dritten Schätzwerte zugeordnet wird.
  19. Verfahren nach Anspruch 18, wobei: die Menge als erster Schätzwert bestimmt wird, wenn der erste Schätzwert kleiner ist, als der Wert auf Operatorebene (17).
  20. Verfahren nach Anspruch 18, wobei: die Menge von mindestens dem zweiten Schätzwert abgeleitet wird, wenn der Wert auf Operatorebene (17) zwischen dem ersten Schätzwert und dem zweiten Schätzwert liegt.
  21. Verfahren nach Anspruch 20, wobei: die Menge auch von einer Priorität des Prozesses abgeleitet wird, der sich auf andere Prozesse bezieht.
  22. Verfahren nach Anspruch 18, wobei: die Menge von mindestens dem Wert auf Operatorebene (17) abgeleitet wird, wenn der Wert auf Operatorebene (17) zwischen dem ersten Schätzwert und dem dritten Schätzwert liegt.
  23. Verfahren nach Anspruch 18, wobei: die Menge von dem dritten Schätzwert abgeleitet wird, wenn der Wert auf Operatorebene (17) kleiner als der dritte Schätzwert ist.
  24. Verfahren nach Anspruch 20, wobei: der Operator „Sort" ist.
  25. Verfahren nach Anspruch 23, wobei: der Operator „Hash join" ist.
  26. Verfahren nach Anspruch 8, überdies umfassend: Vergleichen des Werts auf Operatorebene (17) mit mindestens einem der Schätzwerte; und Stellen eines Prozesses in Warteschlange, wenn der oder jeder Schätzwert den Wert auf Operatorebene (17) übersteigt.
  27. Verfahren nach Anspruch 8, überdies umfassend: Vergleichen des Werts auf Operatorebene (17) mit mindestens einem der Schätzwerte; und Zuordnen einer Menge an Speicherplatz, selbst wenn die Schätzwerte den Wert auf Operatorebene (17) übersteigen.
  28. Verfahren nach Anspruch 2 oder Anspruch 3, wobei das wiederholte Berechnen (15) einen berichtigten Wert auf Operatorebene bereitstellt und das Verfahren überdies umfasst: Verwenden des berichtigten Werts auf Operatorebene, um Speicherplatz für einen zweiten Prozess zuzuordnen.
  29. Verfahren nach Anspruch 2 oder Anspruch 3, wobei: das Wiederholen periodisch ausgeführt wird.
  30. Verfahren nach Anspruch 2 oder Anspruch 3, überdies umfassend: Aktualisieren einer Statistik über die Speicherplatzverwendung zur Zuordnung und Aufhebung der Speicherplatzzuordnung durch jeden Prozess; und Vergleichen der Statistik mit mindestens dem globalen internen Wert (14) oder dem Wert auf Operatorebene (17); wobei das wiederholte Berechnen (15) auf einem Ergebnis des Vergleichs basiert.
  31. Verfahren nach Anspruch 30, wobei: jeder Prozess das Vergleichen ausführt und das wiederholte Berechnen (15) als Reaktion auf das Ergebnis auslöst.
  32. Computer, der eine Mehrzahl von Prozessen ausführt, die Abfragen an einer Datenbank ausführen, wobei die Abfragen von Operatoren implementiert sind, wobei der Computer umfasst: Einen Prozessor, der angepasst ist, um einen globalen internen Wert (14) des gesamten Speichers, der von den Operatoren zu nutzen ist, von einem extern gesetzten globalen Wert (11), der die Gesamtmenge des Speicherplatzes bestimmt, der von der Datenbankanwendung zu verwenden ist, basierend auf Statistikwerten (160) der Speicherplatznutzung zu berechnen (13), wobei der globale interne Wert (14) einen Abschnitt des extern gesetzten globalen Werts (11) des Speicherplatzes darstellt, der zur Verwendung durch die Operatoren zur Verfügung steht; und weiter angepasst, um einen Wert auf Operatorebene (17) zu berechnen (15), der einen allgemeinen Wert von Speicherplatz bestimmt, der für jeden der Mehrzahl Operatoren zuzuordnen ist; wobei die Zuordnung von Speicherplatz zur Verwendung durch jeden Operator basierend auf dem Wert auf Operatorebene verwaltet wird.
  33. Computer nach Anspruch 32, wobei der Prozessor weiter angepasst ist, um den globalen internen Wert (14) basierend auf dem Wert auf Operatorebene zu berichtigen.
  34. Computer nach Anspruch 32, wobei der Prozessor weiter angepasst ist, den Wert auf Operatorebene mit mindestens einem von drei Schätzwerten zu vergleichen: einem ersten Schätzwert von Speicherplatz, der für die optimale Ausführung des Datenbankoperators benötigt wird, wobei es keinen Zugriff auf einen Plattenspeicher gibt, einem zweiten Schätzwert von Speicherplatz, der für eine Durchgangsausführung des Datenbankoperators benötigt wird, wobei es Zugriff auf den Plattenspeicher gibt, aber es nur einen Durchgang durch Daten gibt, die auf dem Plattenspeicher gespeichert sind, und einem dritten Schätzwert von Speicherplatz, der für die minimale Ausführung des Datenbankoperators benötigt wird, wobei es Zugriff auf den Plattenspeicher gibt und es mehrere Durchgänge durch die Daten gibt; und um eine Menge an Speicherplatz abzuleiten, die dem Datenbankoperator von einem Ergebnis des Vergleichs zuzuordnen ist.
  35. Computer nach Anspruch 34, überdies umfassend: einen Speicher, angepasst um die drei Schätzwerte zu speichern; und wobei der Prozessor überdies angepasst ist, den ersten Schätzwert auszuwählen, wenn der erste Schätzwert kleiner als der Wert auf Operatorebene (17) ist.
  36. Computer nach Anspruch 32, überdies umfassend: Mittel zum Aktualisieren einer Statistik über die Speicherplatznutzung über die Speicherplatzzuordnung und Aufhebung der Speicherplatzzuordnung; und Mittel zum Vergleichen der Statistik mit mindestens einem, dem globalen internen Wert (14) oder dem Wert auf Operatorebene (17).
DE60224432T 2001-10-01 2002-09-30 Dynamische und automatische speicherverwaltung Expired - Lifetime DE60224432T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/969,290 US7409517B2 (en) 2001-10-01 2001-10-01 Dynamic and automatic memory management
US969290 2001-10-01
PCT/US2002/031223 WO2003029982A2 (en) 2001-10-01 2002-09-30 Dynamic and automatic memory management

Publications (2)

Publication Number Publication Date
DE60224432D1 DE60224432D1 (de) 2008-02-14
DE60224432T2 true DE60224432T2 (de) 2008-12-24

Family

ID=25515390

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60224432T Expired - Lifetime DE60224432T2 (de) 2001-10-01 2002-09-30 Dynamische und automatische speicherverwaltung

Country Status (9)

Country Link
US (1) US7409517B2 (de)
EP (1) EP1444577B1 (de)
JP (1) JP2005508033A (de)
CN (1) CN1300692C (de)
AU (1) AU2002362400B2 (de)
CA (1) CA2462094C (de)
DE (1) DE60224432T2 (de)
HK (1) HK1063359A1 (de)
WO (1) WO2003029982A2 (de)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6799260B1 (en) * 2001-03-30 2004-09-28 Intransa, Inc. Dynamic storage management
US7409517B2 (en) 2001-10-01 2008-08-05 Oracle International Corporation Dynamic and automatic memory management
US7539608B1 (en) * 2002-05-10 2009-05-26 Oracle International Corporation Techniques for determining effects on system performance of a memory management parameter
US7669189B1 (en) 2002-06-26 2010-02-23 Oracle International Corporation Monitoring memory accesses for computer programs
US7240115B2 (en) * 2002-12-10 2007-07-03 International Business Machines Corporation Programmatically allocating memory among competing services in a distributed computing environment
EP1489507A1 (de) * 2003-06-19 2004-12-22 Texas Instruments Incorporated Vorverteilung von Speicherplatz
US7310719B2 (en) * 2003-07-24 2007-12-18 Sap Aktiengesellschaft Memory management tile optimization
US20050081210A1 (en) * 2003-09-25 2005-04-14 International Business Machines Corporation Dynamic adjustment of system resource allocation during query execution in a database management system
GB2414821A (en) * 2004-06-01 2005-12-07 Leslie Thomas Jones Computer application for uploading files from a client computer to a server
FR2883390A1 (fr) * 2005-03-15 2006-09-22 Gemplus Sa Gestion du placement de structure de donnees en memoire basee sur une langage de programmation dedie
US7711746B2 (en) * 2005-12-17 2010-05-04 International Business Machines Corporation System and method for deploying an SQL procedure
US7552293B2 (en) * 2006-02-28 2009-06-23 Red Hat, Inc. Kernel and application cooperative memory management
US9031826B2 (en) * 2006-03-30 2015-05-12 International Business Machines Corporation Method and apparatus for simulating operation in a data processing system
US8122450B2 (en) * 2006-03-30 2012-02-21 International Business Machines Corporation Method and apparatus for distributing memory in a data processing system
GB0617115D0 (en) * 2006-08-31 2006-10-11 Ibm Efficient enforced resource consumption rate limits
US8099577B2 (en) * 2007-03-20 2012-01-17 Oracle International Corporation Managing memory in a system that includes a shared memory area and a private memory area
KR100964374B1 (ko) * 2007-12-17 2010-06-17 한국전자통신연구원 전파식별 태그의 메모리 관리 장치 및 방법
US8516450B2 (en) * 2010-03-19 2013-08-20 Oracle International Corporation Detecting real-time invalid memory references
US8903805B2 (en) 2010-08-20 2014-12-02 Oracle International Corporation Method and system for performing query optimization using a hybrid execution plan
US9418109B2 (en) * 2011-03-18 2016-08-16 Emc Corporation Memory quota
US8495107B2 (en) 2011-06-23 2013-07-23 Oracle International Corporation System and method for use with garbage collected languages for enabling the allocated heap memory to be updated at runtime
US9626226B2 (en) 2013-11-25 2017-04-18 International Business Machines Corporation Cross-platform workload processing
US9652294B2 (en) * 2013-11-25 2017-05-16 International Business Machines Corporation Cross-platform workload processing
CN105094977B (zh) * 2014-04-30 2018-11-16 广州市动景计算机科技有限公司 基于域名调整应用程序占用内存的方法及装置
CN106155911B (zh) * 2015-03-30 2019-04-12 华为技术有限公司 一种请求远程内存的方法和装置
CN106055407B (zh) * 2016-05-25 2020-02-07 努比亚技术有限公司 进程资源调整装置及方法
GB2554083A (en) * 2016-09-16 2018-03-28 Siemens Rail Automation Holdings Ltd Method for operating a computer, method for controlling a railway network and computer program product
US10740332B2 (en) 2017-01-20 2020-08-11 Futurewei Technologies, Inc. Memory-aware plan negotiation in query concurrency control
US10691695B2 (en) 2017-04-12 2020-06-23 Oracle International Corporation Combined sort and aggregation
US10732853B2 (en) * 2017-04-12 2020-08-04 Oracle International Corporation Dynamic memory management techniques
US10824558B2 (en) 2017-04-26 2020-11-03 Oracle International Corporation Optimized sorting of variable-length records
US10359947B2 (en) 2017-07-25 2019-07-23 Ca, Inc. Reclaiming memory pages
KR102059807B1 (ko) * 2018-06-27 2019-12-27 주식회사 티맥스 소프트 서비스 지향 아키텍쳐 상에서 메모리 관리를 위한 기법
US20240020223A1 (en) * 2022-07-18 2024-01-18 Micron Technology, Inc. Center allocation data structure

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5274805A (en) * 1990-01-19 1993-12-28 Amalgamated Software Of North America, Inc. Method of sorting and compressing data
JPH0581050A (ja) * 1991-09-20 1993-04-02 Toshiba Corp 計算機のシステム資源サイズ設定装置
US5594889A (en) * 1992-01-03 1997-01-14 Digital Equipment Corporation Memory resource allocation look ahead system and method
JPH06511582A (ja) * 1992-07-24 1994-12-22 マイクロソフト コーポレイション メモリを割り当てそして解放するコンピュータ方法及びシステム
US5787300A (en) * 1993-11-10 1998-07-28 Oracle Corporation Method and apparatus for interprocess communications in a database environment
US5832475A (en) * 1996-03-29 1998-11-03 International Business Machines Corporation Database system and method employing data cube operator for group-by operations
US5799210A (en) * 1996-04-18 1998-08-25 Oracle Corporation Method for allocating either private or shared buffer memory for storing data from sort operations in accordance with an assigned value or threshold value
US5784699A (en) * 1996-05-24 1998-07-21 Oracle Corporation Dynamic memory allocation in a computer using a bit map index
US5765157A (en) * 1996-06-05 1998-06-09 Sun Microsystems, Inc. Computer system and method for executing threads of execution with reduced run-time memory space requirements
US5826082A (en) * 1996-07-01 1998-10-20 Sun Microsystems, Inc. Method for reserving resources
US5860144A (en) * 1996-08-09 1999-01-12 Oracle Corporation Addressing method and system for providing access of a very large size physical memory buffer to a number of processes
US5835958A (en) * 1996-10-29 1998-11-10 Sun Microsystems, Inc. Method and apparatus for dynamically sizing non-contiguous runtime stacks
US5987580A (en) * 1997-04-04 1999-11-16 Oracle Corporation Serially reusable execution memory
US6192460B1 (en) * 1997-12-16 2001-02-20 Compaq Computer Corporation Method and apparatus for accessing data in a shadow set after a failed data operation
US6272486B1 (en) * 1998-04-16 2001-08-07 International Business Machines Corporation Determining the optimal number of tasks for building a database index
JP2000242484A (ja) * 1999-02-24 2000-09-08 Hitachi Ltd 制御プログラムの変更方法
CN1149786C (zh) * 1999-05-10 2004-05-12 华为技术有限公司 用户接入网维护与管理方法
US6625709B2 (en) * 2000-10-30 2003-09-23 Microsoft Corporation Fair share dynamic resource allocation scheme with a safety buffer
US6757802B2 (en) * 2001-04-03 2004-06-29 P-Cube Ltd. Method for memory heap and buddy system management for service aware networks
EP1251460A1 (de) * 2001-04-19 2002-10-23 TELEFONAKTIEBOLAGET L M ERICSSON (publ) Daptives Verfahren zur Zuweisung von Speicher mit wahlfreiem Zugriff
WO2003009144A1 (en) * 2001-07-19 2003-01-30 Wind River Systems, Inc. Memory management system
US7409517B2 (en) 2001-10-01 2008-08-05 Oracle International Corporation Dynamic and automatic memory management

Also Published As

Publication number Publication date
AU2002362400B2 (en) 2009-04-23
EP1444577B1 (de) 2008-01-02
US20040073763A1 (en) 2004-04-15
CA2462094C (en) 2013-01-22
WO2003029982A3 (en) 2004-06-03
CN1300692C (zh) 2007-02-14
CN1561486A (zh) 2005-01-05
WO2003029982A2 (en) 2003-04-10
EP1444577A2 (de) 2004-08-11
HK1063359A1 (en) 2004-12-24
DE60224432D1 (de) 2008-02-14
JP2005508033A (ja) 2005-03-24
US7409517B2 (en) 2008-08-05
CA2462094A1 (en) 2003-04-10

Similar Documents

Publication Publication Date Title
DE60224432T2 (de) Dynamische und automatische speicherverwaltung
DE4323947C2 (de) Verfahren zum Steuern von Datenbankabfragen in einem heterogenen, verteilten Datenbanksystem
DE112019001480B4 (de) Automatisches Optimieren der Ressourcennutzung in einemZieldatenbankverwaltungssystem zum Erhöhen der Arbeitslastleistung
DE60016283T2 (de) Arbeitsbelastungsverwaltung in einer rechnerumgebung
DE69910826T2 (de) Rechnersystem mit rekonfigurierbarer programmierbarer logik-vorrichtung
DE4218025C2 (de) Vorrichtung und Verfahren zur automatischen Zuordnung von Datenspeichereinrichtungen in einem Computersystem
DE69628769T2 (de) System und Verfahren um die Belastung von Datei-Server zu verteilen
US7499960B2 (en) Adaptive memory allocation
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE112012000280B4 (de) Organisation von Tabellen mit reduzierten Indizes
DE60035432T2 (de) System zur verwaltung der rdbm fragmentierungen
DE602004011890T2 (de) Verfahren zur Neuverteilung von Objekten an Recheneinheiten
DE69533193T2 (de) Paralleles verarbeitungssystem zum durchlaufen einer datenbank
DE10195968B4 (de) System und Verfahren zur Bereitstellung einer Kreuzdimensionalen Berechnung und eines Kreuzdimensionalen Datenzugriffs in einer Online-Analytischen Verarbeitungs-Umgebung (ON-LINE ANALYTICAL PROCESSING = OLAP)
AU2002362400A1 (en) Dynamic and automatic memory management
DE4221073A1 (de) Datenspeichersystem und -verfahren mit geraeteunabhaengigen dateiverzeichnissen
DE102010029209B4 (de) Verfahren zur dynamischen Verteilung von einem oder mehreren Diensten in einem Netz aus einer Vielzahl von Rechnern
DE102013215009A1 (de) Verfahren und System zur Optimierung der Datenübertragung
DE69936257T2 (de) Erzeugen und uberprüfen von referenz-adresszeigern
DE19534819B4 (de) Verfahren und Vorrichtung zum Konfigurieren einer Datenbank
DE102021127324A1 (de) Planung von aufträgen auf grafischen verarbeitungseinheiten
DE102009056282A1 (de) Technik zum Steuern von Verarbeitungsressourcen
DE60318993T2 (de) Eingebettete Speicherbereinigung
DE69934823T2 (de) Verfahren zur last-regulierung
DE60319003T2 (de) Verfahren zur Neuverteilung von Objekten an Recheneinheiten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition