DE112012000280B4 - Organisation von Tabellen mit reduzierten Indizes - Google Patents

Organisation von Tabellen mit reduzierten Indizes Download PDF

Info

Publication number
DE112012000280B4
DE112012000280B4 DE112012000280.6T DE112012000280T DE112012000280B4 DE 112012000280 B4 DE112012000280 B4 DE 112012000280B4 DE 112012000280 T DE112012000280 T DE 112012000280T DE 112012000280 B4 DE112012000280 B4 DE 112012000280B4
Authority
DE
Germany
Prior art keywords
reduced
indexes
bitmap
bit positions
indices
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.)
Active
Application number
DE112012000280.6T
Other languages
English (en)
Other versions
DE112012000280T5 (de
Inventor
Brian Robert Muras
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.)
Alibaba Group Holding Ltd
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 DE112012000280T5 publication Critical patent/DE112012000280T5/de
Application granted granted Critical
Publication of DE112012000280B4 publication Critical patent/DE112012000280B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management

Abstract

Auf einem Computer realisiertes Verfahren zum Neuorganisieren einer auf einem Computersystem befindlichen Datenbanktabelle gemäß einer Vielzahl reduzierter Indizes und zum Minimieren wahlfreier E/A-Operationen, aufweisend:- Aufbauen einer Bitmap für jeden Zeileneintrag innerhalb der Datenbanktabelle, wobei die Bitmap n Bitpositionen besitzt, wobei jede der n Bitpositionen einem Referenzierungszustand eines der Vielzahl reduzierter Indizes entspricht;- wobei die Bitpositionen innerhalb der Bitmap so organisiert werden, dass die höchstwertigen Bitpositionen innerhalb der Bitmap den populärsten Indizes innerhalb der Vielzahl reduzierter Indizes zugewiesen werden;- Berechnen eines Werts für die Bitmap als eine Funktion individueller Bitwerte für die n Bitpositionen; und- Sortieren der Zeileneinträge innerhalb der Datenbanktabelle auf der Grundlage des Wertes der Bitmap.

Description

  • HINTERGRUND
  • Technisches Gebiet
  • Das Gebiet der Erfindung betrifft Datenbanken. Insbesondere betrifft das Gebiet der Erfindung das Neuorganisieren einer Tabelle gemäß mehreren reduzierten Indizes (sparse indexes).
  • Beschreibung des Standes der Technik
  • Datenbanken verwenden Tabellen, um Informationen zu organisieren. Jede Tabelle besteht aus einer Anzahl von Zeilen, von denen jede einem einzigen Datenbankdatensatz entspricht. Schlüssel werden verwendet, um die Datenbank zu organisieren. Jede Datenbanktabelle besitzt eine oder mehrere Spalten, die als der primäre Schlüssel bezeichnet werden. Der Wert dieses Schlüssels ist für jeden Datensatz in der Datenbank eindeutig. Es wird zum Beispiel angenommen, dass eine Tabelle vorhanden ist, die persönliche Informationen zu jedem Mitarbeiter in einem Unternehmen enthält. Ein Beispiel für einen primären Schlüssel in diesem Szenario wäre eine laufende Mitarbeiternummer, die für jeden Mitarbeiter eindeutig ist.
  • Bei einem Datenbankindex handelt es sich um eine Datenstruktur, welche die Geschwindigkeit von Operationen in einer Tabelle verbessert. Indizes können mittels einer oder mehrerer Spalten erstellt werden, welche die Grundlage für sowohl schnelle wahlfreie Nachschlagevorgänge als auch effizientes Ordnen des Zugriffs auf Datensätze bereitstellen. Der zum Speichern des Indexes erforderliche Plattenspeicherplatz ist üblicherweise geringer als der Datenspeicher der Tabelle (da Indizes üblicherweise nur die Schlüsselfelder beinhalten, gemäß derer die Tabelle angeordnet werden soll, und alle anderen Einzelheiten der Tabelle ausschließt). Somit können Indizes in Fällen in einem Speicher gespeichert werden, in denen die gesamte Tabelle nicht hineinpasst.
  • Datenbanktabellen werden üblicherweise gemäß einem Index (z.B. einem primären Schlüssel wie beispielsweise der laufenden Mitarbeiternummer) physisch auf einem Speichermedium (wie beispielsweise einer Festplatte) organisiert. In den meisten Fällen werden Zeilen innerhalb der Datenbanktabelle auf einer nach Schlüsseln geordneten Grundlage verarbeitet. Somit minimiert das physische Speichern von Datenbanktabellen auf der Platte in der Reihenfolge der Schlüsselwörter die E/A-Zeit, da mit jeder E/A-Operation mehrere Zeilen in den Speicher geladen werden können.
  • Reduzierte Indizes der Structured Query Language (SQL) stellen eine neuere Technologie dar, die an Popularität gewinnt. Bei einem reduzierten Index handelt es sich um einen Index mit einem Schlüssel und Zeigern zu Zeilen in einer Datenbanktabelle für einen Teilsatz von Daten in der Tabelle. Jeder Schlüssel im Index ist über Zeiger einer Zeile in der Datenbanktabelle zugeordnet. Unter Umständen wird jedoch nicht auf jede Zeile in der Tabelle durch einen Schlüssel im Index verwiesen. Anwendungsentwickler haben begonnen, mehrere reduzierte SQL-Indizes zu erstellen, um bestimmte Anwendungsabfragen anzupassen. Für viele hochangepasste Anwendungen können hunderte oder sogar tausende reduzierte Indizes erstellt werden, um zu vielen der Anwendungsanfragen zu passen.
  • Derzeit gibt es keine Möglichkeit, eine Tabelle gemäß mehrerer reduzierter Indizes physisch neuzuorganisieren. Somit ist bei zunehmender Verbreitung der Verwendung mehrfacher reduzierter Indizes die Leistungsfähigkeit aufgrund der hohen Wahlfreiheit der E/A-Vorgänge gegebenenfalls nicht optimal. Wenn zum Beispiel ein bestimmter Index n Zeilen auswählt, können die n Zeilen auf bis zu n Datenblöcke auf der Platte verteilt sein, was bis zu n E/A-Vorgänge erzeugt, wenn sie in den Speicher gelesen werden.
  • Aus US 5 758 145 A ist die Erstellung von statischen, dynamischen und hybriden Indizes für SQL-Abfragen in einer relationalen Datenbank bekannt.
  • Aus US 2002 / 0 091 707 A1 ist die Festlegung von variablen Dimensionen einer mehrdimensionalen Datenbanktabelle bekannt.
  • Aus US 6 879 976 B1 ist die Datenindizierung unter Verwendung von Bit-Vektoren bekannt.
  • Ausgehend von diesem Stand der Technik stellt sich die Erfindung daher die Aufgabe, die Neuorganisation einer Datenbanktabelle bei reduzierten Indizes zu ermöglichen.
  • Diese Aufgabe wird erfindungsgemäß gelöst durch das auf einem Computer realisierte Verfahren zum Neuorganisieren einer Datenbanktabelle nach Anspruch 1, einem entsprechenden Computerprogrammprodukt nach Anspruch 13 und einem System zum Neuorganisieren einer Datenbanktabelle nach Anspruch 22. Bevorzugte Ausführungsformen der Erfindung sind Gegenstand der jeweiligen Unteransprüche.
  • KURZDARSTELLUNG DER OFFENBARUNG
  • Ein Verfahren, ein System und ein Computerprogrammprodukt zum Neuorganisieren einer Tabelle gemäß mehreren reduzierten Indizes werden hierin beschrieben. Mit der neuorganisierten Tabelle werden die E/A-Leistungsattribute von Datenbankabfragen verbessert, da bei einer neuorganisierte Tabelle gewöhnlich jedem der reduzierten Indizes entsprechende Zeilen näher beieinander gruppiert werden.
  • Gemäß einer Ausführungsform wird ein Verfahren zum Neuorganisieren einer auf einem Computersystem befindlichen Datenbanktabelle gemäß einer Vielzahl reduzierter Indizes bereitgestellt. Das Verfahren beginnt mit dem Aufbauen einer Bitmap für jeden Zeileneintrag (d.h. eine spezifische Zeile in der Tabelle) innerhalb der Datenbanktabelle, wobei die Bitmap n Bitpositionen aufweist. Jede der n Bitpositionen entspricht dem Referenzierungszustand eines der Vielzahl reduzierter Indizes. Bei dem Verfahren werden dann die Zeileneinträge innerhalb der Datenbank auf der Grundlage des Wertes der Bitmap sortiert.
  • Gemäß einer weiteren Ausführungsform weist der Schritt des Aufbauens einer Bitmap weiterhin die Schritte auf des: 1) Initialisierens der Bitmap auf „0“; 2) Ermittelns für jede Zeile innerhalb der Datenbanktabelle, ob einer der Vielzahl reduzierter Indizes auf die Zeile verweist; und 3) im Falle, dass einer der Vielzahl reduzierter Indizes auf die Zeile verweist, Setzens der Bitpositionen innerhalb der Bitmap, die den der Zeile zugeordneten reduzierten Referenzindizes entsprechen, auf „1“. Gemäß einer Ausführungsform werden die Bitpositionen innerhalb der Bitmap so organisiert, dass die höchstwertigen Bitpositionen innerhalb der Bitmap den populärsten Indizes innerhalb der Vielzahl reduzierter Indizes zugewiesen werden und die niedrigstwertigen Bitpositionen innerhalb der Bitmap den am wenigsten populären Indizes zugewiesen werden. Gemäß einer Ausführungsform wird die Popularität jedes der reduzierten Indizes durch Überwachen der Abfrageverwendung des reduzierten Indexes durch mindestens einen Zähler ermittelt. In einer weiteren Ausführungsform wird die Popularität jedes der reduzierten Indizes durch Berechnen und Speichern der durchschnittlichen Jobpriorität von dem reduzierten Index zugeordneten Abfragen ermittelt, wobei es sich bei den reduzierten Indizes mit der höchsten durchschnittlichen Jobpriorität um die populärsten Indizes handelt und bei den Indizes mit der niedrigsten durchschnittlichen Jobpriorität um die am wenigsten populären Indizes handelt. Gemäß einer Ausführungsform werden die Bitpositionen innerhalb der Bitmap so organisiert, dass die höchstwertigen Bitpositionen innerhalb der Bitmap den Indizes zugewiesen werden, welche die meisten Zeilen innerhalb der Vielzahl reduzierter Indizes auswählen, und die niedrigstwertigen Bitpositionen innerhalb der Bitmap den Indizes zugewiesen werden, welche die wenigsten Zeilen auswählen.
  • Gemäß einer Ausführungsform referenziert die Vielzahl reduzierter Indizes dieselbe Spalte innerhalb der Datenbanktabelle, während in einer alternativen Ausführungsform die Vielzahl reduzierter Indizes eine Vielzahl von Spalten innerhalb der Datenbanktabelle referenziert. In einer Ausführungsform werden einer oder mehrere der Vielzahl reduzierter Indizes beim Berechnen des Wertes der Bitmap auf der Grundlage eines Satzes zuvor festgelegter Kriterien ignoriert. Als Beispiel handelt es sich bei einem Kriterium des Satzes zuvor festgelegter Kriterien um die Anzahl von durch den reduzierten Index ausgewählten Zeilen.
  • Gemäß einer Ausführungsform stellt die vorliegende Erfindung zudem ein Programmprodukt mit einem beschreibbaren computerlesbaren Speichermedium bereit. Programmcode ist auf dem computerlesbaren Speichermedium gespeichert und bei Ausführung eingerichtet, eine auf einem Computersystem befindliche Datenbanktabelle gemäß einer Vielzahl reduzierter Indizes neuzuorganisieren, beinhaltend die Schritte des: Aufbauens einer Bitmap für jeden Zeileneintrag innerhalb der Datenbanktabelle, wobei die Bitmap n Bitpositionen besitzt, wobei jede der n Bitpositionen dem Referenzierungszustand eines der Vielzahl reduzierter Indizes entspricht; und Sortierens der Zeileneinträge innerhalb der Datenbanktabelle auf der Grundlage des Wertes der Bitmap.
  • Gemäß einer Ausführungsform stellt die vorliegende Erfindung zudem eine System bereit, wobei das System einen oder mehrere Computerprozessoren enthält, und einen Speicher, der ein Programm enthält, das bei Ausführen auf dem einen oder den mehreren Prozessoren eingerichtet ist, eine Operation durchzuführen. Die Operation beinhaltet: Aufbauen einer Bitmap für jeden Zeileneintrag innerhalb der Datenbanktabelle, wobei die Bitmap n Bitpositionen besitzt, wobei jede der n Bitpositionen dem Referenzierungszustand eines der Vielzahl reduzierter Indizes entspricht; und Sortieren der Zeileneinträge innerhalb der Datenbanktabelle auf der Grundlage des Wertes der Bitmap.
  • Figurenliste
  • Nachfolgend werden in lediglich beispielhafter Weise Ausführungsformen der vorliegenden Erfindung unter Bezugnahme auf die begleitenden Zeichnungen beschrieben, in denen:
    • 1 ein Blockschaubild zeigt, das ein System zum Neuorganisieren einer Datenbanktabelle gemäß mehrerer reduzierter Indizes gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht;
    • 2 (Stand der Technik) einen Satz beispielhafter Abfrageanweisungen zum Erstellen reduzierter Indizes aus einer Datenbanktabelle veranschaulicht;
    • 3 (Stand der Technik) eine Vielzahl reduzierter Indizes veranschaulicht, die auf eine referenzierte Tabelle verweisen, wobei kein reduzierter Index Zeilen in der referenzierten Tabelle besitzt, die einander benachbart sind;
    • 4 eine erste Tabelle veranschaulicht, wobei die Bitmap für jede Zeile auf der Grundlage der Information erstellt wurde, welcher der reduzierten Indizes die gegebene Zeile referenziert; und eine zweite Tabelle veranschaulicht, die aufgrund eines Sortierens der Zeilen der ersten Tabelle auf der Grundlage des jeder Zeile zugeordneten numerischen Wertes der Bitmap erstellt wurde; und
    • 5 die Vielzahl reduzierter Indizes von 3 veranschaulicht, die auf die aktualisierte zweite Tabelle von 4 verweisen, wobei die meisten der Zeilen in der Tabelle nun anderen Zeilen in jedem der reduzierten Indizes benachbart sind.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Ein Verfahren, ein System und ein Computerprogrammprodukt zum Neuorganisieren einer Datenbanktabelle gemäß mehreren reduzierten Indizes werden bereitgestellt, wobei die neuorganisierte Tabelle im Vergleich zur ursprünglichen Tabelle überlegene E/A-Leistungsattribute aufweist. Genauer wird die Tabelle so neuorganisiert, dass wahlfreie E/A minimiert wird, indem jedem der referenzierenden reduzierten Indizes zugeordneten Zeilen in der Tabelle enger beieinander gruppiert werden. Dadurch wird ermöglicht, dass für eine gegebene E/A-Operation mehr zugeordnete, für einen spezifischen reduzierten Index relevante Zeilen von einer Tabelle in den Speicher gelesen werden können.
  • 1 zeigt ein Blockschaubild, das ein vernetztes System 100 zum Neuorganisieren einer Datenbanktabelle gemäß mehreren reduzierten Indizes gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. Das vernetzte System 100 beinhaltet einen Computer 102. Der Computer 102 kann zudem über das Netzwerk 130 mit anderen Computern verbunden sein. Im Allgemeinen kann es sich bei dem Netzwerk 130 um ein Telekommunikationsnetzwerk und oder ein Weitverkehrsnetzwerk (wide area network WAN) handeln. In einer bestimmten Ausführungsform handelt es sich bei dem Netzwerk 130 um das Internet.
  • Der Computer 102 enthält allgemein einen Prozessor 104, der über einen Bus 112 mit einem Hauptspeicher 106, einer Netzwerkschnittstelleneinheit 110, einem Datenspeicher 108, einer Eingabeeinheit 114 und einer Ausgabeeinheit 116 verbunden ist. Der Computer 102 wird allgemein von einem Betriebssystem 148 gesteuert. Zu Beispielen von Betriebssystemen zählen UNIX, Versionen des Betriebssystems Microsoft Windows®, auf IBM Power Systems™ ausgeführte integrierte IBM i Betriebsumgebungen (zuvor bekannt als i5/OS®) und Verbreitungen des Betriebssystems Linux®. Allgemeiner kann jedes beliebige Betriebssystem verwendet werden, das die hierin offenbarten Funktionen unterstützt. Der Prozessor 104 ist als Stellvertreter einer einzelnen Zentraleinheit (CPU), mehrerer CPUs, einer einzelnen CPU mit mehreren Verarbeitungskernen und Ähnlichem enthalten. Gleichermaßen kann es sich bei dem Hauptspeicher 106 um einen Speicher mit wahlfreiem Zugriff (random access memory) handeln. Obwohl der Hauptspeicher 106 als einzelne Identität abgebildet ist, versteht es sich, dass der Hauptspeicher 106 eine Vielzahl von Modulen sowie mehrere Ebenen aufweisen kann, von Hochgeschwindigkeitsregisterspeichern und Cachespeichern bis hin zu DRAM-Chips mit geringerer Geschwindigkeit, aber größerer Speicherkapazität. Bei der Netzwerkschnittstelleneinheit 110 kann es sich um jede beliebige Art von Netzwerk-Datenübertragungseinheit handeln, die einen Datenaustausch zwischen dem Computer 102 und anderen Computern über das Netzwerk 130 Daten ermöglicht.
  • Bei dem Datenspeicher 108 kann es sich um eine persistente Speichereinheit handeln. Der Datenspeicher 108 ist hier zwar als einzelne Einheit abgebildet, es kann sich bei dem Datenspeicher 108 jedoch um eine Kombination aus fest eingebauten und/oder Wechselspeichereinheiten wie beispielsweise fest eingebaute Plattenlaufwerke, Diskettenlaufwerke, Bandlaufwerke, Wechselspeicherkarten oder optische Speichereinheiten handeln. Der Hauptspeicher 106 und der Datenspeicher 108 können Teil eines virtuellen Adressraums sein, der mehrere primäre und sekundäre Speichereinheiten umfasst.
  • Bei der Eingabeeinheit 114 kann es sich um jede beliebige Einheit handeln, die dem Computer 102 eine Eingabe bereitstellen kann. So können zum Beispiel eine Tastatur, ein Tastaturfeld, ein Lichtstift, ein berührungsempfindlicher Bildschirm, eine Rollkugel (track-ball) oder eine Spracherkennungseinheit, ein Audio-/Videoabspielgerät und Ähnliches verwendet werden. Bei der Ausgabeeinheit 116 kann es sich um jede beliebige Einheit handeln, die einem Benutzer des Computers 102 eine Ausgabe bereitstellen kann. Zum Beispiel kann es sich bei der Ausgabeeinheit 116 um einen beliebigen herkömmlichen Anzeigebildschirm oder Lautsprechersatz samt deren entsprechenden Schnittstellenkarten, d.h. Videokarten und Soundkarten (nicht gezeigt), handeln. Obwohl die Ausgabeeinheit 116 von der Eingabeeinheit 114 getrennt abgebildet ist, können die Ausgabeeinheit 116 und die Eingabeeinheit 114 kombiniert werden. Zum Beispiel können ein Anzeigebildschirm mit einem integrierten berührungsempfindlichen Bildschirm, eine Anzeige mit einer integrierten Tastatur oder eine Spracherkennungseinheit in Kombination mit einem Text-Sprach-Umwandler verwendet werden.
  • Wie gezeigt, enthält der Hauptspeicher 106 des Computers 102 das Betriebssystem 148, ein Datenbankverwaltungssystem (Database Management System DBMS) 150 und eine Anwendung 152. Das DBMS 150 kann eine im Datenspeicher 108 gezeigte Datenbank 154 verwalten. In einer Ausführungsform handelt es sich bei dem DBMS 150 um das durch die IBM Corporation für die Betriebssysteme MVS, AIX, IBM I, Linux oder Microsoft Windows als Beispiele angebotene DB2-Produkt. Allgemein erkennt der Fachmann, dass sich die vorliegende Erfindung auf jede DBMS-Software anwenden lässt, die SQL verwendet, und gleichermaßen auf Datenbanksoftware anwenden lässt, die keine SQL-Abfragen verwendet. Noch allgemeiner versteht es sich jedoch, dass die Daten, auf die zugegriffen wird, überhaupt nicht Teil eines DBMS sein müssen. Die Anwendung 152 (und allgemeiner jede anfragende Entität einschließlich des Betriebssystems 148) ist eingerichtet, Abfragen gegenüber der Datenbank 154 auszugeben. Obwohl der Einfachheit halber nur eine einzige Datenbank gezeigt ist, kann das DBMS 150 mehrere Datenbanken verwalten. Des Weiteren können die Datenbanken relativ zueinander z.B. über das Netzwerk 130 verteilt sein. Und obwohl die Anwendung 152 und das DBMS 150 als auf dem Computer 102 ausgeführt gezeigt sind, kann die Anwendung 152 auch auf einem anderen Computer ausgeführt werden, der mit dem Computer 102 über das Netzwerk 130 Daten austauscht.
  • In einer Ausführungsform steht die Datenbank 154 für jede beliebige Sammlung von Daten unabhängig von der speziellen physischen Darstellung der Daten. Eine physische Darstellung der Daten legt ein Organisationsschema der Daten fest. In veranschaulichender Weise kann die Datenbank 154 gemäß einem (für SQL-Abfragen zugänglichen) relationalen Schema oder gemäß einem (für XML-Abfragen zugänglichen) XML-Schema organisiert sein. Ausführungsformen der Erfindung sind jedoch nicht auf ein bestimmtes Schema beschränkt und berücksichtigen die Erstreckung auf bislang unbekannte Schemata. Der hierin verwendete Begriff „Schema“ bezieht sich allgemein auf eine bestimmte Anordnung von Daten.
  • In einer Ausführungsform sind in der Datenbank 154 Datenbanktabellen gespeichert, die Datenseiten enthalten. Jede Datenseite ist eingerichtet, Datenzeilen zu speichern, die wiederum Informationen speichern. Die Datenbank kann zudem einen Datenbankindex wie beispielsweise einen reduzierten Index zum logischen Ordnen der Datenzeilen enthalten. Der Datenbankindex enthält Indexseiten. Jede Indexseite ist eingerichtet, Indexeinträge zu speichern, wobei jede Datenzeile durch einen entsprechenden Indexeintrag referenziert wird. Die Datenseiten und die Indexseiten sind so aufgebaut, dass sie auf einem Speichermedium wie beispielsweise dem Datenspeicher 108 gespeichert und von diesem abgerufen werden können.
  • In einer Ausführungsform gibt die Anwendung 152 eine Anfrage an das DBMS 150 aus. Die Anfrage enthält eine Abfrageanweisung (z.B. Auswählen, Einfügen oder Aktualisieren). Abhängig von der Ausführungsform kann die durch die Anwendung 152 ausgegebene Anfrage zuvor festgelegt (d.h. fest programmiert als Teil der Anwendung 152) oder als Reaktion auf eine Eingabe (z.B. eine Benutzereingabe) erzeugt werden.
  • In einer Ausführungsform führt das DBMS 150 eine Anzahl von Datenbankoperationen durch, um die Anfrage von der Anwendung 152 zu bedienen. Zum Beispiel ruft das DBMS 150 Indexeinträge und Datenzeilen aus dem Datenspeicher (z.B. Platte oder Band) ab und lädt sie in einen Datenbank-Cachespeicher (z.B. in den Hauptspeicher). Die Geschwindigkeit des Zugreifens auf den Datenspeicher 108 kann viel geringer sein als andere am Bedienen einer Anfrage beteiligte Operationen wie beispielsweise Operationen, an denen der Datenbank-Cachespeicher beteiligt ist. Folglich kann die Leistung des DBMS 150 beim Bedienen der Anfrage in hohem Maße durch eine Häufigkeit bestimmt werden, mit der das DBMS 150 auf den Datenspeicher 108 zugreift.
  • In einer Ausführungsform enthält das DBMS 150 eine oder mehrere Routinen 151 zum Neuorganisieren einer oder mehrerer Tabellen innerhalb der Datenbank, so dass die wahlfreie E/A minimiert wird, indem jedem der referenzierenden reduzierten Indizes zugeordnete Zeilen in der Tabelle miteinander gruppiert werden. Dadurch wird ermöglicht, dass für eine gegebene E/A-Operation mehr zugeordnete, für einen spezifischen reduzierten Index relevante Zeilen von einer Tabelle in den Speicher gelesen werden können. Dementsprechend kann die Leistung des DBMS 150 beim Bedienen von Anfragen verbessert werden.
  • In einer Ausführungsform wird das Neuorganisieren (d.h. das Sortieren) der Tabellen innerhalb der Datenbank manuell durch einen Systemadministrator initiiert. Üblicherweise wird das Auftreten einer solchen Aktivität zu einer Zeit geplant, zu der die Gesamtsystemaktivität langsam ist, wie beispielsweise über ein Wochenende. In einer weiteren Ausführungsform kann das Neuorganisieren periodisch (wöchentlich, monatlich usw.) oder nach Bedarf durchgeführt werden, wie es durch eine Maßzahl des Nachbarschaftsgrades festgelegt wird. Zum Beispiel kann ein DBMS eine Anwendung aufweisen, welche den Nachbarschaftsgrad für Zeilen misst, die durch eine reduzierte Matrix referenziert werden. Wenn zum Beispiel die Messanwendung periodisch ausgeführt wird und zeigt, dass die Zeilen für jeden reduzierten Index nicht sehr benachbart (d.h. fragmentiert) sind (d.h., die Maßzahl des Nachbarschaftsgrades überschreitet einen zuvor festgelegten Schwellenwert), kann die Messanwendung dem Systemadministrator empfehlen, ein Neuorganisieren durchzuführen oder alternativ dazu die Tabelle mittels einer Neuorganisierungsanwendung automatisch neuzuorganisieren.
  • 2 (Stand der Technik) veranschaulicht einen Satz von Beispielabfrageanweisungen zum Erstellen reduzierter Indizes aus einer Datenbanktabelle, was allgemein unter Bezugszeichen 200 dargestellt ist. In der gezeigten Ausführungsform werden vier Anweisungen SQL CREATE INDEX 202, 204, 206 und 208 verwendet, um einen Satz von vier reduzierten Indizes 214, 216, 218 und 220 durch Anwenden von SQL-Auswahlprädikaten auf eine Tabelle 210 zu erstellen.
  • Mit der ersten Beispielanweisung SQL CREATE INDEX 202 wird ein reduzierter Index mit dem Titel „IBMJUNE“ 214 aus der Tabelle „MYTABLE“ 210 über die Spalte „ORDER#“ (Auftragsnummer) 211 erstellt, wobei das Feld „CUST“ (Kunde) in der Tabelle den Wert „IBM“ und das Feld „MONTH“ (Monat) in der Tabelle den Wert „June“ (Juni) enthält. Wie ersichtlich ist, erfüllt Zeile 2 der Tabelle „MYTABLE“ 210 die Suchkriterien, und der „ROW“-Wert „2“ (Zeilen-Wert „2“) und der „ORDER#“-Wert „N6RYAK“ werden in den reduzierten Index „IBMJUNE“ 214 geschrieben. Der „ROW“-Wert 2 in der zweiten Spalte des reduzierten Indexes 214 dient als ein Zeiger zurück in die Tabelle 210.
  • Mit der zweiten Beispielanweisung 204 SQL CREATE INDEX wird ein reduzierter Index mit dem Titel „GEJULY“ 216 aus der Tabelle „MYTABLE“ 210 über die Spalte „ORDER#“ 211 erstellt, wobei das Feld „CUST“ in der Tabelle den Wert „GE“ und das Feld „MONTH“ in der Tabelle den Wert „July“ (Juli) enthält. In diesem Fall erfüllt Zeile 1 der Tabelle „MYTABLE“ 210 die Suchkriterien, und der „ROW“-Wert „1“ und der „ORDER#“-Wert „W3IOPL“ werden in den reduzierten Index „GEJULY“ 216 geschrieben. Der „ROW“-Wert 1 in der zweiten Spalte des reduzierten Indexes 216 dient als ein Zeiger zurück in die Tabelle 210.
  • In der dritten Beispielanweisung 206 SQL CREATE INDEX wird ein reduzierter Index mit dem Titel „LARGEORDER“ (Großauftrag) 218 aus der Tabelle „MYTABLE“ 210 über die Spalte „ORDER#“ 211 erstellt, wobei jeder Eintrag in der Tabelle „MYTABLE“ 210, bei dem das Feld „AMOUNTDUE“ (fälliger Betrag) 1.000.000 $ überschreitet, ausgewählt wird, um in den reduzierten Index „LARGEORDER“ 218 aufgenommen zu werden. In diesem Fall erfüllen die Zeilen 1 und 3 der Tabelle „MYTABLE“ 210 das Suchkriterium, und die „ROW“-Werte „1“ und „3“ sowie die „ORDER#“-Werte „W3IOPL“ bzw. „8G5HNK“ werden in den reduzierten Index „LARGEORDER“ 218 geschrieben. Die „ROW“-Werte 1 und 3 in der zweiten Spalte des reduzierten Indexes 218 dienen als ein Zeiger zurück in die Tabelle 210.
  • In der vierten Beispielanweisung 208 SQL CREATE INDEX wird ein reduzierter Index mit dem Titel „MNCUST“ (Kunde aus MN) 220 aus der Tabelle „MYTABLE“ 210 über die Spalte „CUST#“ (Kund.-Nr.) 212 erstellt, wobei jeder Eintrag in der Tabelle „MYTABLE“ 210, der den Wert „MN“ im Feld „STATE“ (Bundesstaat) enthält, ausgewählt wird, um in den reduzierten Index „MNCUST“ 220 aufgenommen zu werden. In diesem Fall erfüllen die Zeilen 2 und 4 der Tabelle „MYTABLE“ 212 das Suchkriterium, und die „ROW“-Werte „2“ und „4“ sowie die „CUST#“-Werte „11“ bzw. „55“ werden in den reduzierten Index „MNCUST“ 220 geschrieben. Die „ROW“-Werte 2 und 4 in der zweiten Spalte des reduzierten Indexes 220 dienen als Zeiger zurück in die Tabelle 210.
  • Zusätzlich zu SQL stellt eine Datei „logisches Auswählen/Übergehen“ einen weiteren Typ eines reduzierten Indexes dar. Ein logisches Auswählen/Übergehen weist Schlüssel und Kriterien auf, die angeben, welche Zeilen (oder Datensätze) aus der gesamten physischen Datei (d.h. Tabelle) auszuwählen oder zu übergehen sind. Die spezifische Definition „Auswählen/Übergehen“ wird über die Data Description Specification (DDS) festgelegt. Dieser Teil des Auswählens/Übergehens gleicht in der Funktionalität der „WHERE“-Bedingung in einem reduzierten SQL-Index.
  • Logisches Auswählen/Übergehen wird normalerweise bei herkömmlichen Datenbankschnittstellen in RPG, COBOL oder CL verwendet. Wohingegen moderne Sprachen dazu neigen, SQL-gestützte Schnittstellen zu den Datenbanken zu verwenden. Beide Schnittstellen ermöglichen ähnliche Funktionalität, erfordern jedoch unterschiedliche Verfahren und unterschiedliche Syntax, um den oder die Schlüssel und die Auswahlkriterien des Indexes anzugeben.
  • Über die SQL- und logische Dateien „Auswählen/Übergehen“ hinaus können zusätzliche Typen reduzierter Indizes innerhalb der vorliegenden Erfindung verwendet werden und bleiben noch innerhalb des Umfangs und Geistes der vorliegenden Erfindung.
  • 3 (Stand der Technik) veranschaulicht eine Vielzahl reduzierter Indizes 302, 304, 306 und 308, die auf eine referenzierte Tabelle 310 verweisen, wobei kein reduzierter Index auf Zeilen in der referenzierten Tabelle verweist, die einander benachbart sind, was allgemein unter dem Bezugszeichen 300 dargestellt ist. Im veranschaulichten Beispiel sind die Zeilen innerhalb von SPALTE_X 312 der Tabelle in der richtigen Reihenfolge. Trotz dieser Tatsache weist kein reduzierter Index 302, 304, 306 oder 308 Zeilen auf, die einander benachbart sind. Zum Beispiel referenziert der reduzierte INDEX_A 302 die Zeilen 5, 8 und 10 innerhalb der Tabelle 310. Der reduzierte INDEX_B 304 referenziert die Zeilen 2, 4 und 6 innerhalb der Tabelle 310. Der reduzierte INDEX_C 306 referenziert die Zeilen 1, 3 und 10 innerhalb der Tabelle 310. Der reduzierte INDEX_D 308 referenziert schließlich die Zeilen 4, 7 und 9 innerhalb der Tabelle 310.
  • Wenn Anwendungen reduzierte SQL-Indizes (wie beispielsweise 302, 304, 306 und 308) aufbauen, die zu bestimmten Abfragen passen sollen, führt die Nicht-Nachbarschaft der referenzierten Zeilen innerhalb der Tabelle 310 infolgedessen dazu, dass E/A-Operationen eher wahlfrei als geblockt sind und erzeugt somit keine optimale Leistung.
  • 4 veranschaulicht eine erste Tabelle 410 gemäß der vorliegenden Erfindung, wobei für jeden Zeileneintrag innerhalb der Tabelle eine Bitmap 415 auf der Grundlage der Information erstellt wurde, welcher der reduzierten Indizes die gegebene Zeile referenziert; und veranschaulicht eine zweite Tabelle 420, die aufgrund eines Sortierens der Zeilen der ersten Tabelle in aufsteigender Reihenfolge auf der Grundlage des jeder Zeile zugeordneten numerischen Wertes der Bitmap erstellt wurde, was allgemein unter Bezugszeichen 400 dargestellt ist. Bei der ersten Tabelle 410 handelt es sich im Wesentlichen um die Tabelle 310 von 3 mit einer hinzugefügten neuen Spalte 415, welche die jeder Zeile der Tabelle zugeordneten Bitmap-Informationen enthält.
  • Wie zuvor in 3 veranschaulicht, kann jede Zeile innerhalb der Tabelle mindestens einem reduzierten Index innerhalb der Tabelle 310 zugeordnet sein. In 4 wird in Spalte 415 ein Bitmap-Eintrag für jede Zeile erstellt, wobei die i-BitPosition innerhalb des Bitmap-Eintrags für den i-ten reduzierten Index steht. Wenn somit eine gegebene Zeile durch einen reduzierten Index referenziert wird, erscheint eine „1“ in dem diesem reduzierten Index im Bitmap-Eintrag zugeordneten Bit, andernfalls enthält der Biteintrag einen bei der Initialisierung zugewiesenen Wert von „0“ (Standardwert).
  • Nachdem der gesamte Bitmap-Eintrag aufgebaut wurde, wird eine Dezimaldarstellung für jeden Bitmap-Eintrag berechnet. Diese Dezimaldarstellung wird zur Sortierungsgewichtung für jede Zeile innerhalb der Tabelle. Somit wird ein Bitmap-Wert von „0100“ einem Dezimalwert von „4“ zugewiesen und ein Bitmap-Wert von „1010“ wird einem Dezimalwert von „10“ zugewiesen. Dieser Wert wird verwendet, um die Zeilen der Tabelle neuzusortieren. Die zweite Tabelle 420 veranschaulicht die erste Tabelle 410, nachdem die Tabelle neusortiert wurde. Es ist zu beachten, dass die Tabelle in aufsteigender Reihenfolge auf der Grundlage des Dezimalwertes der Bitmap in der ersten Tabelle 410, Spalte 415, neusortiert wurde.
  • Auf die erste Zeile der ersten Tabelle 410 wird beispielsweise durch den reduzierten Index „C306 verwiesen (siehe 3). Dies führt zu einem der ersten Zeile zugeordneten Bitmap-Wert von „0100“ (wobei die Spalten in der Bitmap in der Reihenfolge DCBA angeordnet sind), der einen Dezimalsortierungs-Gewichtungswert von „4“ aufweist. Auf Zeile 4 von Tabelle 410 wird durch zwei reduzierte Indizes verwiesen (Index_B 304 und Index_D 308, wie in 3 gezeigt). Infolgedessen wird den Werten „B“ und „D“ innerhalb der Bitmap ein Wert von „1“ zugewiesen, welcher dem reduzierten Referenzindex zugeordnet wird. Da die Bitmap in der Reihenfolge DCBA angeordnet ist, ist der sich ergebende der Zeile zugeordnete Bitmap-Wert „1010“ oder der Dezimalwert „10“.
  • Es ist zu beachten, dass im Falle, dass eine Zeile durch keinen Index ausgewählt ist, diese eine Sortierungsgewichtung von Null besitzt und mit anderen Zeilen, die durch keinen Index ausgewählt werden, geblockt ist. Innerhalb einer bestimmten Sortierungsgewichtung können Zeilen zum Beispiel nach dem aktuellen Wert in der Spalte sortiert werden.
  • Innerhalb des bereitgestellten Beispiels verweisen alle reduzierten Indizes auf dieselbe Spalte innerhalb der Datenbanktabelle. In weiteren Ausführungsformen der vorliegenden Erfindung können die reduzierten Indizes auf eine andere Spalte oder eine Vielzahl von Spalten innerhalb der Datenbanktabelle verweisen und bleiben noch innerhalb des Umfangs der vorliegenden Erfindung.
  • In einer Ausführungsform wird beim Ermitteln der Sortierungsreihenfolge für die Datenbanktabelle die am weitesten links liegende Position in der Bitmap dem populärsten Index zugeordnet, die links an zweiter Stelle liegende Position in der Bitmap wird dem zweitpopulärsten Index zugeordnet usw. Auf diese Weise werden die populärsten Indizes näher beieinander gruppiert, und tatsächlich wird sichergestellt, dass bei der am weitesten links liegenden Position all ihre Zeilen beieinander liegen.
  • Es sind verschiedene Alternativen vorhanden, um die populärsten reduzierten Indizes zu ermitteln. Zum Beispiel kann der populärste Index ermittelt werden, indem überwacht wird, welche reduzierten Indizes unterschiedliche Datenbankabfragen verwenden, und dann können für jeden reduzierten Index Zähler gepflegt werden, um die Popularität zu ermitteln. In einem weiteren Beispiel wird die Priorität von Jobs, in denen Datenbankabfragen ausgeführt werden, überwacht und festgehalten, so dass am häufigsten in Jobs mit hoher Priorität verwendete reduzierte Indizes den am weitesten links liegenden Bitmap-Positionen zugeordnet werden, während am häufigsten in Jobs mit niedrigerer Priorität verwendete reduzierte Indizes den am weitesten rechts liegenden Bitmap-Positionen zugeordnet werden. Auf diese Weise sind die reduzierten Indizes mit der höchsten durchschnittlichen Jobpriorität die populärsten Indizes und die reduzierten Indizes mit der niedrigsten durchschnittlichen Jobpriorität die am wenigsten populären Indizes. In einer Ausführungsform werden die Bitpositionen innerhalb der Bitmap so organisiert, dass die höchstwertigen Bitpositionen innerhalb der Bitmap den Indizes zugewiesen werden, welche die meisten Zeilen innerhalb der Vielzahl reduzierter Indizes auswählen, und die niedrigstwertigen Bitpositionen innerhalb der Bitmap den Indizes zugewiesen werden, welche die wenigsten Zeilen auswählen.
  • In einer Ausführungsform der vorliegenden Erfindung werden bestimmte reduzierte Indizes beim Ermitteln der Sortierungsgewichtung unter Umständen nicht berücksichtigt (d.h. ignoriert). Wenn ein bestimmter reduzierter Index beispielsweise zu viele Zeilen innerhalb einer Tabelle auswählt, kann er ignoriert werden, da er implizit dazu führt, dass Zeilen geblockt werden. Gleichermaßen kann ein bestimmter reduzierter Index auch ignoriert werden, wenn er zu wenige Zeilen auswählt, da dann Blocken nicht erforderlich ist. Zudem wird ein reduzierter Index unter Umständen nicht häufig genug verwendet, um berücksichtigt zu werden.
  • 5 veranschaulicht die Vielzahl reduzierter Indizes von 3, die auf die aktualisierte sortierte zweite Tabelle 420 von 4 verweisen, wobei die meisten der Zeilen in der Tabelle nun anderen Zeilen in jedem der reduzierten Indizes benachbart sind. In diesem veranschaulichenden Beispiel sind 2/3 der Zeilen der ersten zwei reduzierten Indizes 302 und 304 in der sortierten Tabelle 420 benachbart, und bei den letzten zwei reduzierten Indizes 306 und 308 sind all ihre Zeilen benachbart. Somit wird die wahlfreie E/A minimiert und das Blocken von Zeilen im Speicher verbessert, was zu einer schnelleren Gesamtzugriffsleistung beim Verwenden der reduzierten Indizes führt.

Claims (30)

  1. Auf einem Computer realisiertes Verfahren zum Neuorganisieren einer auf einem Computersystem befindlichen Datenbanktabelle gemäß einer Vielzahl reduzierter Indizes und zum Minimieren wahlfreier E/A-Operationen, aufweisend: - Aufbauen einer Bitmap für jeden Zeileneintrag innerhalb der Datenbanktabelle, wobei die Bitmap n Bitpositionen besitzt, wobei jede der n Bitpositionen einem Referenzierungszustand eines der Vielzahl reduzierter Indizes entspricht; - wobei die Bitpositionen innerhalb der Bitmap so organisiert werden, dass die höchstwertigen Bitpositionen innerhalb der Bitmap den populärsten Indizes innerhalb der Vielzahl reduzierter Indizes zugewiesen werden; - Berechnen eines Werts für die Bitmap als eine Funktion individueller Bitwerte für die n Bitpositionen; und - Sortieren der Zeileneinträge innerhalb der Datenbanktabelle auf der Grundlage des Wertes der Bitmap.
  2. Auf einem Computer realisiertes Verfahren nach Anspruch 1, wobei das Aufbauen der Bitmap weiterhin aufweist: - Initialisieren der Bitmap auf „0“; - Ermitteln für jede Zeile innerhalb der Datenbanktabelle, ob einer der Vielzahl reduzierter Indizes auf die Zeile verweist; und - falls ja, Setzen der Bitpositionen innerhalb der Bitmap, die den der Zeile zugeordneten referenzierenden reduzierten Indizes entsprechen, auf „1“.
  3. Auf einem Computer realisiertes Verfahren nach Anspruch 1 oder Anspruch 2, wobei die Bitpositionen innerhalb der Bitmap so organisiert werden, dass die niedrigstwertigen Bitpositionen innerhalb der Bitmap den am wenigsten populären Indizes zugewiesen werden.
  4. Auf einem Computer-realisiertes Verfahren nach Anspruch 3, wobei die Popularität jedes der reduzierten Indizes durch Überwachen der Abfrageverwendung des reduzierten Indexes durch mindestens einen Zähler ermittelt wird.
  5. Auf einem Computer realisiertes Verfahren nach Anspruch 3, wobei die Popularität jedes der reduzierten Indizes durch Berechnen und Speichern der durchschnittlichen Jobpriorität von dem reduzierten Index zugeordneten Abfragen ermittelt wird, wobei es sich bei den reduzierten Indizes mit der höchsten durchschnittlichen Jobpriorität um die populärsten Indizes und den Indizes mit der niedrigsten durchschnittlichen Jobpriorität um die am wenigsten populären Indizes handelt.
  6. Auf einem Computer realisiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die Vielzahl reduzierter Indizes dieselbe Spalte innerhalb der Datenbanktabelle referenzieren.
  7. Auf einem Computer realisiertes Verfahren nach einem der Ansprüche 1 bis 5, wobei die Vielzahl reduzierter Indizes eine Vielzahl von Spalten innerhalb der Datenbanktabelle referenzieren.
  8. Auf einem Computer realisiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei einer oder mehrere der Vielzahl reduzierter Indizes beim Berechnen des Wertes der Bitmap auf der Grundlage eines Satzes zuvor festgelegter Kriterien ignoriert werden.
  9. Auf einem Computer realisiertes Verfahren nach Anspruch 8, wobei es sich bei einem Kriterium des Satzes zuvor festgelegter Kriterien um die Anzahl von durch den reduzierten Index ausgewählten Zeilen handelt.
  10. Auf einem Computer realisiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei es sich bei dem reduzierten Index um einen Index der Structured Query Language (SQL) handelt.
  11. Auf einem Computer realisiertes Verfahren nach einem der Ansprüche 1 bis 9, wobei es sich bei dem reduzierten Index um eine logische Datei „Auswählen/Übergehen“ handelt.
  12. Auf einem Computer realisiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei das Sortieren der Zeileneinträge innerhalb der Datenbanktabelle auf der Grundlage des Wertes der Bitmap weiterhin die Schritte aufweist des: - Ermittelns einer Maßzahl des Nachbarschaftsgrades für Zeilen in der Datenbanktabelle, die durch jeden der Vielzahl von reduzierten Indizes referenziert werden; und - wenn der Wert der Maßzahl des Nachbarschaftsgrades einen zuvor festgelegten Schwellenwert überschreitet, Sortieren der Zeileneinträge innerhalb der Datenbank.
  13. Computerprogrammprodukt, das aufweist: - ein beschreibbares computerlesbares Speichermedium; und - Programmcode, der auf dem computerlesbaren Speichermedium gespeichert und bei Ausführung eingerichtet ist, eine auf einem Computersystem befindliche Datenbanktabelle gemäß einer Vielzahl reduzierter Indizes und zum Minimieren wahlfreier E/A-Operationen neuzuorganisieren, aufweisend die Schritte des: - Aufbauens einer Bitmap für jeden Zeileneintrag innerhalb der Datenbanktabelle, wobei die Bitmap n Bitpositionen besitzt, wobei jede der n Bitpositionen dem Referenzierungszustand eines der Vielzahl reduzierter Indizes entspricht; - wobei die Bitpositionen innerhalb der Bitmap so organisiert werden, dass die höchstwertigen Bitpositionen innerhalb der Bitmap den populärsten Indizes innerhalb der Vielzahl reduzierter Indizes zugewiesen werden; - Berechnen eines Werts für die Bitmap als eine Funktion individueller Bitwerte für die n Bitpositionen; und - Sortierens der Zeileneinträge innerhalb der Datenbanktabelle auf der Grundlage des Wertes der Bitmap.
  14. Programmprodukt nach Anspruch 13, das weiterhin die Schritte ausführt des: - Initialisierens der Bitmap auf „0“; - Ermittelns für jede Zeile innerhalb der Datenbanktabelle, ob einer der Vielzahl reduzierter Indizes auf die Zeile verweist; und - falls ja, Setzens der Bitpositionen innerhalb der Bitmap, die den der Zeile zugeordneten referenzierenden reduzierten Indizes entsprechen, auf „1“.
  15. Programmprodukt nach Anspruch 14, wobei die Bitpositionen innerhalb der Bitmap so organisiert werden, dass die niedrigstwertigen Bitpositionen innerhalb der Bitmap den am wenigsten populären Indizes zugewiesen werden.
  16. Programmprodukt nach Anspruch 15, wobei die Popularität jedes der reduzierten Indizes durch Überwachen der Abfrageverwendung des reduzierten Indexes durch mindestens einen Zähler ermittelt wird.
  17. Programmprodukt nach Anspruch 15, wobei die Popularität jedes der reduzierten Indizes durch Berechnen und Speichern der durchschnittlichen Jobpriorität von dem reduzierten Index zugeordneten Abfragen ermittelt wird, wobei es sich bei den reduzierten Indizes mit der höchsten durchschnittlichen Jobpriorität um die populärsten Indizes und den Indizes mit der niedrigsten durchschnittlichen Jobpriorität um die am wenigsten populären Indizes handelt.
  18. Programmprodukt nach Anspruch 13, wobei die Vielzahl reduzierter Indizes dieselbe Spalte innerhalb der Datenbanktabelle referenzieren.
  19. Programmprodukt nach Anspruch 13, wobei die Vielzahl reduzierter Indizes eine Vielzahl von Spalten innerhalb der Datenbanktabelle referenzieren.
  20. Programmprodukt nach Anspruch 13, wobei einer oder mehrere der Vielzahl reduzierter Indizes beim Berechnen des Wertes der Bitmap auf der Grundlage eines Satzes zuvor festgelegter Kriterien ignoriert werden.
  21. Programmprodukt nach Anspruch 20, wobei es sich bei einem Kriterium des Satzes zuvor festgelegter Kriterien um die Anzahl von durch den reduzierten Index ausgewählten Zeilen handelt.
  22. System zum Neuorganisieren einer auf einem Computersystem befindlichen Datenbanktabelle gemäß einer Vielzahl reduzierter Indizes und zum Minimieren wahlfreier E/A-Operationen, das aufweist: - einen oder mehrere Computerprozessoren; und - einen Speicher, der ein Programm enthält, das bei Ausführen durch den einen oder die mehreren Computerprozessoren zum Durchführen einer Operation eingerichtet ist, aufweisend: - Aufbauen einer Bitmap für jeden Zeileneintrag innerhalb der Datenbanktabelle, wobei die Bitmap n Bitpositionen besitzt, wobei jede der n Bitpositionen einem Referenzierungszustand eines der Vielzahl reduzierter Indizes entspricht; - wobei die Bitpositionen innerhalb der Bitmap so organisiert werden, dass die höchstwertigen Bitpositionen innerhalb der Bitmap den populärsten Indizes innerhalb der Vielzahl reduzierter Indizes zugewiesen werden; - Berechnen eines Werts für die Bitmap als eine Funktion individueller Bitwerte für die n Bitpositionen; und - Sortieren der Zeileneinträge innerhalb der Datenbanktabelle auf der Grundlage des Wertes der Bitmap.
  23. System nach Anspruch 22, das weiterhin beinhaltet: - Initialisieren der Bitmap auf „0“; - Ermitteln für jede Zeile innerhalb der Datenbanktabelle, ob einer der Vielzahl reduzierter Indizes auf die Zeile verweist; und - falls ja, Setzen der Bitpositionen innerhalb der Bitmap, die den der Zeile zugeordneten referenzierenden reduzierten Indizes entsprechen, auf „1“.
  24. System nach Anspruch 22, wobei die Bitpositionen innerhalb der Bitmap so organisiert werden, dass die niedrigstwertigen Bitpositionen innerhalb der Bitmap den am wenigsten populären Indizes zugewiesen werden.
  25. System nach Anspruch 24, wobei die Popularität jedes der reduzierten Indizes durch Überwachen der Abfrageverwendung des reduzierten Indexes durch mindestens einen Zähler ermittelt wird.
  26. System nach Anspruch 24, wobei die Popularität jedes der reduzierten Indizes durch Berechnen und Speichern der durchschnittlichen Jobpriorität von dem reduzierten Index zugeordneten Abfragen ermittelt wird, wobei es sich bei den reduzierten Indizes mit der höchsten durchschnittlichen Jobpriorität um die populärsten Indizes und den Indizes mit der niedrigsten durchschnittlichen Jobpriorität um die am wenigsten populären Indizes handelt.
  27. System nach Anspruch 22, wobei die Vielzahl reduzierter Indizes dieselbe Spalte innerhalb der Datenbanktabelle referenzieren.
  28. System nach Anspruch 22, wobei die Vielzahl reduzierter Indizes eine Vielzahl von Spalten innerhalb der Datenbanktabelle referenzieren.
  29. System nach Anspruch 22, wobei einer oder mehrere der Vielzahl reduzierter Indizes beim Berechnen des Wertes der Bitmap auf der Grundlage eines Satzes zuvor festgelegter Kriterien ignoriert werden.
  30. System nach Anspruch 29, wobei es sich bei einem Kriterium des Satzes zuvor festgelegter Kriterien um die Anzahl von durch den reduzierten Index ausgewählten Zeilen handelt.
DE112012000280.6T 2011-01-12 2012-01-06 Organisation von Tabellen mit reduzierten Indizes Active DE112012000280B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/005,024 2011-01-12
US13/005,024 US8566333B2 (en) 2011-01-12 2011-01-12 Multiple sparse index intelligent table organization
PCT/IB2012/050077 WO2012095771A1 (en) 2011-01-12 2012-01-06 Sparse index table organization

Publications (2)

Publication Number Publication Date
DE112012000280T5 DE112012000280T5 (de) 2013-09-19
DE112012000280B4 true DE112012000280B4 (de) 2020-03-05

Family

ID=46456059

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012000280.6T Active DE112012000280B4 (de) 2011-01-12 2012-01-06 Organisation von Tabellen mit reduzierten Indizes

Country Status (5)

Country Link
US (1) US8566333B2 (de)
CN (1) CN103314377B (de)
DE (1) DE112012000280B4 (de)
GB (1) GB2499551A (de)
WO (1) WO2012095771A1 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10467207B2 (en) 2013-05-24 2019-11-05 Sap Se Handling changes in automatic sort
US9390115B2 (en) * 2013-10-11 2016-07-12 Oracle International Corporation Tables with unlimited number of sparse columns and techniques for an efficient implementation
US9311124B2 (en) 2013-11-07 2016-04-12 Sap Se Integrated deployment of centrally modified software systems
US9411838B2 (en) 2014-02-14 2016-08-09 International Business Machines Corporation Table organization using one or more queries
US20150234841A1 (en) * 2014-02-20 2015-08-20 Futurewei Technologies, Inc. System and Method for an Efficient Database Storage Model Based on Sparse Files
CN104572828B (zh) * 2014-12-08 2018-01-19 中国科学院信息工程研究所 一种基于空间位图模型的辅助索引方法及系统
WO2016192057A1 (zh) 2015-06-03 2016-12-08 华为技术有限公司 索引表的更新方法和设备
EP3203388B1 (de) * 2016-02-05 2022-08-03 Amadeus S.A.S. Index von datenbanktabelle
US11256746B2 (en) 2016-04-25 2022-02-22 Oracle International Corporation Hash-based efficient secondary indexing for graph data stored in non-relational data stores
US10652248B2 (en) * 2016-07-28 2020-05-12 Molecula Corp. Systems and methods of managing data rights and selective data sharing
CN109656948B (zh) * 2018-11-15 2021-01-22 金蝶软件(中国)有限公司 位图数据处理方法、装置、计算机设备和存储介质
US11294905B2 (en) * 2019-01-07 2022-04-05 Optumsoft, Inc. Sparse data index table
US11321392B2 (en) 2019-02-19 2022-05-03 International Business Machines Corporation Light weight index for querying low-frequency data in a big data environment
CN110619183B (zh) * 2019-09-24 2023-04-07 中国航空工业集团公司沈阳飞机设计研究所 一种全寿命周期的试飞测试数据管理方法
CN115809248B (zh) * 2022-12-30 2024-03-22 联通智网科技股份有限公司 数据查询方法和装置以及存储介质
CN116991901A (zh) * 2023-09-25 2023-11-03 深圳市秦丝科技有限公司 一种基于多维数据库查询的数据控制系统及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758145A (en) * 1995-02-24 1998-05-26 International Business Machines Corporation Method and apparatus for generating dynamic and hybrid sparse indices for workfiles used in SQL queries
US20020091707A1 (en) * 2000-06-10 2002-07-11 International Business Machines Corporation Automatic determination of OLAP cube dimensions
US6879976B1 (en) * 1999-08-19 2005-04-12 Azi, Inc. Data indexing using bit vectors

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5884307A (en) * 1997-02-28 1999-03-16 Oracle Corporation Updating bitmapped indexes
EP0884688A3 (de) * 1997-06-16 2005-06-22 Koninklijke Philips Electronics N.V. Suchverfahren mit reduziertem Index
US6546395B1 (en) 1999-08-30 2003-04-08 International Business Machines Corporation Multi-dimensional restructure performance by selecting a technique to modify a relational database based on a type of restructure
US6629102B1 (en) 2000-07-28 2003-09-30 International Business Machines Corporation Efficiently updating a key table during outline restructure of a multi-dimensional database
US7191174B2 (en) 2003-05-22 2007-03-13 International Business Machines Corporation Method, query optimizer, and computer program product for implementing live switchover to temporary sparse index for faster query performance
US7979404B2 (en) 2004-09-17 2011-07-12 Quest Software, Inc. Extracting data changes and storing data history to allow for instantaneous access to and reconstruction of any point-in-time data
EP1732013A1 (de) 2005-06-06 2006-12-13 Deutsche Thomson-Brandt Gmbh Verfahren und Vorrichtung zum Suchen von einer Dateneinheit in einer Datenbank
US20100036799A1 (en) 2008-08-05 2010-02-11 Teradata Us, Inc. Query processing using horizontal partial covering join index
CN101520868A (zh) 2009-02-24 2009-09-02 上海大学 将层次分析法运用于审稿专家信息数据库系统的方法
CN101702162A (zh) 2009-11-19 2010-05-05 福建鑫诺通讯技术有限公司 嵌入式系统的数据管理模块

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758145A (en) * 1995-02-24 1998-05-26 International Business Machines Corporation Method and apparatus for generating dynamic and hybrid sparse indices for workfiles used in SQL queries
US6879976B1 (en) * 1999-08-19 2005-04-12 Azi, Inc. Data indexing using bit vectors
US20020091707A1 (en) * 2000-06-10 2002-07-11 International Business Machines Corporation Automatic determination of OLAP cube dimensions

Also Published As

Publication number Publication date
DE112012000280T5 (de) 2013-09-19
CN103314377B (zh) 2017-02-08
CN103314377A (zh) 2013-09-18
GB2499551A (en) 2013-08-21
GB201309991D0 (en) 2013-07-17
US8566333B2 (en) 2013-10-22
US20120179698A1 (en) 2012-07-12
WO2012095771A1 (en) 2012-07-19

Similar Documents

Publication Publication Date Title
DE112012000280B4 (de) Organisation von Tabellen mit reduzierten Indizes
US9805077B2 (en) Method and system for optimizing data access in a database using multi-class objects
US7174345B2 (en) Methods and systems for auto-partitioning of schema objects
US7302422B2 (en) Query workload statistics collection in a database management system
US7343366B2 (en) Group-By result size estimation
EP0444364B1 (de) System zum physikalischen Entwurf von Datenbanken
DE60035432T2 (de) System zur verwaltung der rdbm fragmentierungen
US5950186A (en) Database system index selection using cost evaluation of a workload for multiple candidate index configurations
US7676451B2 (en) Selective database statistics recollection
US5913207A (en) Database system index selection using index configuration enumeration for a workload
DE69533193T2 (de) Paralleles verarbeitungssystem zum durchlaufen einer datenbank
US7480653B2 (en) System and method for selective partition locking
DE60224432T2 (de) Dynamische und automatische speicherverwaltung
US5926813A (en) Database system index selection using cost evaluation of a workload for multiple candidate index configurations
US20020010701A1 (en) Method and apparatus for viewing the effect of changes to an index for a database table on an optimization plan for a database query
US6754656B1 (en) System and method for selective partition locking
DE102016105472A1 (de) Speicherebenenverteilung und parallele Zuordnung auf Blockebene bei Dateisystemen
US5913206A (en) Database system multi-column index selection for a workload
DE112010004014T5 (de) Kompensation unausgeglichener Hierarchien beim Erzeugen von Olap-Abfragen aus Berichtsspezifikationen
WO2002021327A2 (de) Verfahren und computerprogramm zur erzeugung von dateien für ein datenbanksystem für ein betriebswirtschaftliches anwendungsprogramm
DE19534819B4 (de) Verfahren und Vorrichtung zum Konfigurieren einer Datenbank
US20030046294A1 (en) Symmetrical database data set allocation
EP1276056A1 (de) Verfahren zum Verwalten einer Datenbank
Mor et al. Analysis of query optimization techniques in databases
DE202016007725U1 (de) Einzeltabellen-Multischema-Datenspeicher in einem Schlüsselwertspeicher

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final
R081 Change of applicant/patentee

Owner name: ALIBABA GROUP HOLDING LIMITED, GEORGE TOWN, KY

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, N.Y., US

R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE PARTG MBB, DE