Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie erhöhen Datensätze mit fester Länge und Felder mit fester Länge die Datenbankleistung?

Vereinfachte, konzeptionelle, nicht datenbankspezifische Erklärung:

Wenn die maximal mögliche Satzlänge im Voraus bekannt ist, kann das Ende des Satzes/der Anfang des nächsten Satzes in konstanter Zeit gefunden werden. Dies liegt daran, dass dieser Ort durch einfache Addition berechnet werden kann, sehr analog zur Array-Indizierung. Stellen Sie sich vor, ich verwende int s als Zeiger auf Datensätze, und dass die Datensatzgröße eine irgendwo definierte ganzzahlige Konstante ist. Dann, um von der aktuellen Aufnahmestelle zur nächsten zu gelangen:

int current_record = /* whatever */;
int next_record = current_record + FIXED_RECORD_SIZE;

Das ist es!

Alternativ können Sie sich bei der Verwendung von Zeichenfolgen-terminierten (oder anderweitig begrenzten) Datensätzen und Feldern vorstellen, dass das nächste Feld/der nächste Datensatz durch einen Linearzeit-Scan gefunden wird, der jedes Zeichen untersuchen muss, bis das Trennzeichen gefunden wird. Wie zuvor,

char DELIMITER = ','; // or whatever
int current_record = /* whatever */;
int next_record = current_record;
while(character_at_location(next_record) != DELIMITER) {
    next_record++;
}

Dies mag eine vereinfachte oder naive Version der realen Implementierung sein, aber die allgemeine Idee bleibt bestehen:Sie können dieselbe Operation nicht einfach in konstanter Zeit ausführen, und selbst wenn es sich um eine konstante Zeit handeln würde, ist es unwahrscheinlich, dass sie so schnell ist wie Durchführen einer einzelnen Hinzufügungsoperation.