Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wydajność SUBSTR na CLOB

(Kłamstwa, cholera kłamstwa i testy porównawcze...)

Powtórzyłem twój test 10 razy, rozszerzając ciąg tak, aby miał pełne 30 znaków, i uzyskałem następujące uśrednione wyniki:

+000000000 00:00:00.011694200 (VARCHAR2)
+000000000 00:00:00.901000600 (CLOB SUBSTR)
+000000000 00:00:00.013169200 (DBMS_LOB.SUBSTR)

Następnie zmieniłem zakres podciągów na 5,14 (14,5 dla DBMS_LOB.SUBSTR) i otrzymałem:

+000000000 00:00:00.011731000 (VARCHAR2)
+000000000 00:00:01.010840000 (CLOB SUBSTR)
+000000000 00:00:00.011427000 (DBMS_LOB.SUBSTR)

Następnie zmieniłem zakres na 17,14 (14,17 dla DBMS_LOB.SUBSTR) i otrzymałem

+000000000 00:00:00.013578900 (VARCHAR2)
+000000000 00:00:00.964527400 (CLOB SUBSTR)
+000000000 00:00:00.011416800 (DBMS_LOB.SUBSTR)

Ostatecznie zmieniłem zakres na 25,14 (14,25 dla DBMS_LOB.SUBSTR) i otrzymałem

+000000000 00:00:00.011210200 (VARCHAR2)
+000000000 00:00:00.916439800 (CLOB SUBSTR)
+000000000 00:00:00.013781300 (DBMS_LOB.SUBSTR)

Mój wniosek jest taki, że podczas pracy z CLOB-em najlepiej jest użyć DBMS_LOB.SUBSTR, ponieważ wydaje się, że w rzeczywistości nie ma żadnej utraty wydajności w porównaniu z użyciem SUBSTR przeciwko „normalnemu” VARCHAR2. SUBSTR przeciwko CLOB wydaje się cierpieć z powodu znacznej utraty wydajności. Dla przypomnienia - OS =HP/UX (wariant Unix), wersja Oracle=11.1, procesor=HP Itanium 2-plex. MMW.

Dziel się i ciesz.

A ponieważ jeśli warto to robić, to warto przesadzać, oto więcej wyników z ciągami rozszerzonymi do 32767 znaków. Zakresy podciągów podane przy każdym zestawie wyników:

1, 25000
+000000000 00:00:00.198466400 (VARCHAR2)
+000000000 00:00:02.870958700 (CLOB SUBSTR)
+000000000 00:00:00.174490100 (DBMS_LOB.SUBSTR)

1000, 25000
+000000000 00:00:00.253447900 (VARCHAR2)
+000000000 00:00:02.491790500 (CLOB SUBSTR)
+000000000 00:00:00.193560100 (DBMS_LOB.SUBSTR)

10000, 25000
+000000000 00:00:00.217812000 (VARCHAR2)
+000000000 00:00:02.268794800 (CLOB SUBSTR)
+000000000 00:00:00.222200200 (DBMS_LOB.SUBSTR)

Ten sam dzień, ten sam wniosek.

Cthulhu fhtag.

(Jeszcze raz do wyłomu, drodzy przyjaciele, jeszcze raz...)

Powtórz testy, zmieniając rozmiar CLOB na 3276700 i biorąc podciąg ze środka, zaczynając od 2475000 na długość 25000, otrzymuję:

+000000000 00:00:00.176883200 (VARCHAR2)
+000000000 00:00:02.069482600 (CLOB SUBSTR)
+000000000 00:00:00.175341500 (DBMS_LOB.SUBSTR)

(Pamiętaj, że zmiany dotyczą tylko dwóch ostatnich testów).

ORAZ... te same wyniki, inny dzień.

MMW.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja DECOMPOSE() w Oracle

  2. Jak dodać przesunięcie w zapytaniu wybierającym w Oracle 11g?

  3. Java:odczytywanie obiektów Blob z Oracle

  4. Określono nieprawidłowy adres URL Oracle:OracleDataSource.makeURL

  5. 7 sposobów na sprawdzenie wersji Oracle