Heim  >  Artikel  >  Datenbank  >  Was soll ich tun, wenn die Oracle-Abfrage langsam ist?

Was soll ich tun, wenn die Oracle-Abfrage langsam ist?

coldplay.xixi
coldplay.xixiOriginal
2020-07-22 16:05:035920Durchsuche

Lösungen zur Verlangsamung von Oracle-Abfragen: 1. Legen Sie Daten, Protokolle und Indizes auf verschiedene E-/A-Geräte, um die Lesegeschwindigkeit zu erhöhen. 3. Erhöhen Sie die Netzwerkgeschwindigkeit horizontal, um die Größe des Tisches zu verringern.

Was soll ich tun, wenn die Oracle-Abfrage langsam ist?

Lösung zur Verlangsamung der Oracle-Abfrage:

1. Legen Sie Daten, Protokolle und Indizes in verschiedenen E/A-Vorgängen ab Um die Lesegeschwindigkeit zu erhöhen, konnte Tempdb in der Vergangenheit auf RAID0 platziert werden, wird jedoch von SQL2000 nicht mehr unterstützt. Je größer das Datenvolumen (Größe), desto wichtiger ist die Verbesserung der E/A.

2. Teilen Sie die Tabelle vertikal und horizontal, um die Größe der Tabelle zu reduzieren (sp_spaceuse)

3. Aktualisieren Sie die Hardware

4. Erstellen Sie basierend auf den Abfragebedingungen Indizes, optimieren Sie Indizes, optimieren Sie Zugriffsmethoden und begrenzen Sie die Datenmenge im Ergebnissatz. Beachten Sie, dass der Füllfaktor angemessen sein sollte (am besten verwenden Sie den Standardwert 0). Der Index sollte so klein wie möglich sein. Es ist besser, Spalten mit kleineren Bytes zum Erstellen von Indizes zu verwenden (siehe Erstellen eines einzelnen Indexes für Felder mit einer begrenzten Anzahl von Werten, z. B. Geschlechtsfelder).

5. Verbessern Sie die Netzwerkgeschwindigkeit;

6. Erweitern Sie den Speicher des Servers. Windows 2000 und SQL Server 2000 können 4-8 GB Speicher unterstützen. Virtuellen Speicher konfigurieren: Die Größe des virtuellen Speichers sollte basierend auf den Diensten konfiguriert werden, die gleichzeitig auf dem Computer ausgeführt werden. Wenn Sie Microsoft SQL Server® 2000 ausführen, sollten Sie erwägen, die Größe des virtuellen Speichers auf das 1,5-fache des im Computer installierten physischen Speichers festzulegen. Wenn Sie zusätzlich die Volltextabruffunktion installiert haben und planen, den Microsoft Search-Dienst zur Durchführung von Volltextindizierungen und -abfragen auszuführen, sollten Sie erwägen, die Größe des virtuellen Speichers so zu konfigurieren, dass sie mindestens dem Dreifachen des im Computer installierten physischen Speichers entspricht. Konfigurieren Sie die Serverkonfigurationsoption „Maximaler Serverspeicher“ von SQL Server auf das 1,5-fache des physischen Speichers (die Hälfte der Einstellung für die Größe des virtuellen Speichers).

7. Erhöhen Sie die Anzahl der Server-CPUs. Sie müssen jedoch verstehen, dass parallele Verarbeitung und serielle Verarbeitung mehr Ressourcen wie Speicher erfordern. Ob parallele oder serielle Verarbeitung verwendet werden soll, wird von MsSQL automatisch ausgewertet. Eine einzelne Aufgabe wird in mehrere Aufgaben unterteilt, die auf dem Prozessor ausgeführt werden können. Beispielsweise werden die Sortier-, Verbindungs-, Scan- und GROUP BY-Klauseln gleichzeitig ausgeführt. SQL SERVER bestimmt die optimale Parallelebene entsprechend der Auslastung des Systems. Komplexe Abfragen, die viel CPU erfordern, sind am besten geeignet für die Parallelverarbeitung. Allerdings können die Update-Operationen Update, Insert und Delete nicht parallel abgearbeitet werden.

8. Wenn Sie Like zum Abfragen verwenden, funktioniert die einfache Verwendung des Index nicht, aber die Volltextindizierung verbraucht Speicherplatz. wie 'a%' Verwenden Sie einen Index wie '%a'. Bei Abfragen ohne Verwendung eines Index wie '%a%' ist die Abfragezeit proportional zur Gesamtlänge des Feldwerts, sodass nicht der Typ CHAR, sondern VARCHAR verwendet werden kann. Erstellen Sie einen Volltextindex für Felder mit sehr langen Werten.

9. Trennung von DB-Server und APPLication-Server; Trennung von OLTP und OLAP

10. Die verteilte Partitionsansicht kann zur Implementierung einer Datenbankserverföderation verwendet werden. Ein Verbund ist eine Gruppe von Servern, die separat verwaltet werden, aber zusammenarbeiten, um die Verarbeitungslast des Systems zu teilen. Dieser Mechanismus zur Partitionierung von Daten zur Bildung eines Datenbankserverkomplexes kann eine Reihe von Servern skalieren, um die Verarbeitungsanforderungen einer großen Website mit mehreren Ebenen zu unterstützen. Weitere Informationen finden Sie unter Entwerfen eines Verbunddatenbankservers. (Siehe SQL-Hilfedatei „Partitionierte Ansicht“)

a. Vor der Implementierung der partitionierten Ansicht muss die Tabelle horizontal partitioniert werden.

b Definieren Sie sie nach dem Erstellen der Mitgliedstabelle Mitgliedsserver Eine verteilte, partitionierte Ansicht, wobei jede Ansicht denselben Namen hat. Auf diese Weise können Abfragen, die auf den Namen der verteilten partitionierten Ansicht verweisen, auf jedem Mitgliedsserver ausgeführt werden. Das System funktioniert so, als ob auf jedem Mitgliedsserver eine Kopie der Originaltabelle vorhanden wäre. Tatsächlich gibt es jedoch nur eine Mitgliedstabelle und eine verteilte partitionierte Ansicht auf jedem Server. Der Speicherort der Daten ist für die Anwendung transparent.

11. Erstellen Sie die Indizes DBCC REINDEX, DBCC INDEXDEFRAG, verkleinern Sie Daten und Protokolle DBCC SHRINKDB, DBCC SHRINKFILE. Stellen Sie bei großen Datenbanken kein automatisches Datenbankwachstum ein, da dies die Serverleistung verringert.

Verwandte Lernempfehlungen:

Oracle-Datenbank-Lerntutorial

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn die Oracle-Abfrage langsam ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Verwenden Programmierer Mac?Nächster Artikel:Verwenden Programmierer Mac?