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

Przyrostowe zbieranie statystyk w 11g

Baza danych -11g wprowadziła nową funkcję gromadzenia statystyk przyrostowych

— Statystyki przyrostowe będą działać tylko dla tabel podzielonych na partycje, w których statystyki globalne są aktualizowane przyrostowo poprzez skanowanie tylko partycji, które uległy zmianie od ostatniego uruchomienia. Generalnie najnowsze partycje to te, do których wstawiane są dane i w większości starsze partycje pozostają nienaruszone. Po włączeniu statystyk przyrostowych w tabeli, statystyki są gromadzone tylko na tych partycjach, na których znajdują się jakiekolwiek DML, pozostałe nie są skanowane, co pozwoliłoby zaoszczędzić dużo czasu.

– Tabele podzielone na partycje są duże i jeśli musimy regularnie gromadzić statystyki na ten temat, byłoby to bardzo czasochłonne, a przyrostowe zbieranie statystyk skraca czas potrzebny na zbieranie statystyk

Przykład funkcji przyrostowego gromadzenia statystyk Oracle 11g w pakiecie Oracle E-Business Suite.

Weźmy przykład xla_ae_lines, który jest tabelą partycji i ma wiele rekordów w intensywnie używanej instancji ERP

Przypadek testowy bez ustawiania preferencji przyrostowych

-Utwórz tabelę xla_ae_lines_bkp jako tabelę partycji, aby wykonać ten przypadek testowy
– Wstaw dane z tabeli xla_ae_lines

wstaw w xla.xla_Ae_lines_bkp wybierz * z xla.xla_ae_lines;

Utworzono 2119409 wierszy.

-ustaw czas na synchronizację

exec fnd_stats.gather_table_stats('XLA','XLA_AE_LINES_BKP');
Procedura PL/SQL zakończona pomyślnie.
Upłynął:00:00:49.06
  • Zbieranie statystyk po raz pierwszy po wstawieniu danych zajęło 49,06 s.
  • Sprawdź statystyki oraz poziom globalny i partycji
wybierz table_name,to_Char(last_analyzed,’DD-MON-YY HH24:MI:SS’) „last_analyzed” z dba_Tables, gdzie table_name jak „XLA_AE_LINES_BKP”;

TABLE_NAME           ostatnie_analizowane

—————————— ————————

XLA_AE_LINES_BKP 09-SEP-16 10:04:34

wybierz nazwę_partycji,to_Char(last_analyzed,’DD-MON-YY HH24:MI:SS’) „last_analyzed” z dba_Tab_partitions gdzie nazwa_tabeli jak „XLA_AE_LINES_BKP”;

PARTITION_NAME       ostatnia_analiza

—————————— ————————

AP 09-września-16 10:04:15

CZ 09-WRZEŚ-16 10:04:16

CE 09-września-16 10:04:16

CST 09-SEP-16 10:04:23

DPP 09-SEP-16 10:04:23

ZABAWA 09-WRZEŚ-16 10:04:23

FV 09-września-16 10:04:23

GMF 09-września-16 10:04:23

IGC 09-września-16 10:04:23

IGI 09-września-16 10:04:23

LNS 09-SEP-16 10:04:23

OFA 09-WRZEŚ-16 10:04:23

OKL 09-WRZ-16 10:04:23

OZF 09-SEP-16 10:04:23

PA 09-wrzesień-16 10:04:24

  • Usuń dane z jednej z partycji, aby sprawdzić, jak obliczane są statystyki
usuń z xla.xla_ae_lines_bkp gdzie application_id=222;
  • Zbieranie statystyk przy użyciu fnd_Stats
    exec fnd_stats.gather_table_stats('XLA','XLA_AE_LINES_BKP');
    Procedura PL/SQL zakończona pomyślnie.
    Upłynął:00:00:25.06
  • Po usunięciu danych zbieraj statystyki bez ustawiania preferencji. Zajęło to 25,06 s
  • Sprawdzanie statystyk globalnych i statystyk partycji
wybierz table_name,to_Char(last_analyzed,’DD-MON-YY HH24:MI:SS’) „last_analyzed” z dba_Tables, gdzie table_name jak „XLA_AE_LINES_BKP”;

TABLE_NAME ostatnio_analizowane

—————————— ————————

XLA_AE_LINES_BKP 09-SEP-16 10:20:26

wybierz nazwę_partycji,to_Char(last_analyzed,’DD-MON-YY HH24:MI:SS’) „last_analyzed” z dba_Tab_partitions gdzie nazwa_tabeli jak „XLA_AE_LINES_BKP”;

PARTITION_NAME ostatnio_analizowane

—————————— ————————

AP 09-września-16  10:20:14

RR 09-WRZ-16  10:20:14

CE 09-września-16 10:20:14

CST 09-SEP-16  10:20:15

DPP 09-SEP-16  10:20:15

ZABAWA 09.09.16 10:20:15

FV 09-WRZEŚ 16 10:20:15

GMF 09-września-16  10:20:15

IGC 09-września-16 10:20:15

IGI 09-SEP-16  10:20:15

LNS 09-SEP-16  10:20:16

OFA 09-WRZ-16  10:20:16

OKL 09-WRZ-16  10:20:16

OZF 09-SEP-16  10:20:16

PA 09-wrzesień-16 10:20:17

UWAGA:statystyki są gromadzone na wszystkich partycjach, mimo że usuwane są tylko dane partycji AR, last_analyzed jest aktualizowane dla wszystkich partycji

Przypadek testowy z ustawieniem preferencji przyrostowej

  • Upuść i ponownie utwórz tabelę xla_ae_lines_bkp jako tabelę partycji, aby wykonać ten przypadek testowy

  • Wstaw dane z tabeli xla_ae_lines

wstaw w xla.xla_Ae_lines_bkp wybierz * z xla.xla_ae_lines;

Utworzono 2119409 wierszy.

-ustaw czas na synchronizację

exec dbms_stats.set_table_prefs („XLA”, „XLA_AE_LINES_BKP”, „INCREMENTAL”, „TRUE”);
  • Sprawdź, czy preferencje są ustawione
wybierz dbms_stats.get_prefs („INCREMENTAL”, „XLA”, „XLA_AE_LINES_BKP”) z podwójnego;

DBMS_STATS.GET_PREFS('WZROST','XLA','XLA_AE_LINES_BKP')

—————————————————————

PRAWDA

  • Zbierz statystyki po ustawieniu preferencji.
exec fnd_stats.gather_table_stats(„XLA”, „XLA_AE_LINES_BKP”);

Procedura PL/SQL zakończona pomyślnie.

Upłynęło:00:00:25.91

  • Po ustawieniu preferencji zebranie statystyk po raz pierwszy po wstawieniu danych zajęło 25,91 s
  • sprawdzanie informacji o czasie w statystykach
wybierz table_name,to_Char(last_analyzed,’DD-MON-YY HH24:MI:SS’) „last_analyzed” z dba_Tables, gdzie table_name jak „XLA_AE_LINES_BKP”;

TABLE_NAME ostatnio_analizowane

——————————   ————————

XLA_AE_LINES_BKP               09-września-16  10:35:32

wybierz nazwę_partycji,to_Char(last_analyzed,’DD-MON-YY HH24:MI:SS’) „last_analyzed” z dba_Tab_partitions gdzie nazwa_tabeli jak „XLA_AE_LINES_BKP”;

18

PARTITION_NAME ostatnio_analizowane

—————————— ————————

AP 09-września-16 10:35:30

RR 09-WRZ-16  10:35:12

CE 09-WRZEŚ-16 10:35:10

CST 09-SEP-16  10:35:21

DPP 09-SEP-16  10:35:21

ZABAWA 09-WRZ-16 10:35:12

FV 09-SEP-16  10:35:10

GMF 09-września-16  10:35:10

IGC 09-września-16 10:35:10

IGI 09-SEP-16  10:35:12

LNS 09-WRZ-16  10:35:10

OFA 09-WRZ-16  10:35:10

OKL 09-WRZ-16  10:35:12

OZF 09-SEP-16 10:35:30

PA 09-wrzesień-16 10:35:12

  • Usunięcie danych z jednej partycji, aby zobaczyć, jak przyrostowe zbieranie statystyk pomoże następnym razem, gdy statystyki będą gromadzone.
usuń z xla_ae_lines_bkp gdzie application_id=222;

Usunięto 100233 wierszy

  • Zbierz statystyki po usunięciu danych z application_id 222 partycji AR
exec fnd_stats.gather_table_stats(„XLA”, „XLA_AE_LINES_BKP”);

Procedura PL/SQL zakończona pomyślnie.

Upłynęło:00:00:4.11

  • Po usunięciu danych dla jednej partycji przyrostowe gromadzenie statystyk zajęło 4,11 s
  • Sprawdź statystyki globalne i partycji
wybierz table_name,to_Char(last_analyzed,’DD-MON-YY HH24:MI:SS’) „last_analyzed” z dba_Tables, gdzie table_name jak „XLA_AE_LINES_BKP”;

TABLE_NAME ostatnio_analizowane

—————————— ————————

XLA_AE_LINES_BKP 09-SEP-16  10:45:18

wybierz nazwę_partycji,to_Char(last_analyzed,’DD-MON-YY HH24:MI:SS’) „last_analyzed” z dba_Tab_partitions gdzie ta

ble_name jak „XLA_AE_LINES_BKP”;

PARTITION_NAME ostatnio_analizowane

—————————— ————————

AP 09-września-16  10:35 :30

RR 09-WRZEŚ-16 10:45:18

CE 09-SEP-16 10:35 :10

CST 09-SEP-16  10:35 :21

DPP 09-SEP-16  10:35 :21

ZABAWA 09-WRZ-16 10:35 :12

FV 09-SEP-16  10:35 :10

GMF 09-SEP-16  10:35 :10

IGC 09-SEP-16 10:35 :10

IGI 09-SEP-16  10:35 :12

LNS 09-SEP-16  10:35 :10

OFA 09-WRZEŚ 16  10:35 :10

OKL 09-WRZ-16  10:35 :12

OZF 09-SEP-16 10:35 :30

PA 09-wrzesień-16 10:35 :12

Ważne rzeczy, o których należy pamiętać, statystyki są gromadzone, data last_analyzed jest zmieniana tylko dla partycji AR, a czas został również skrócony.

Widzimy więc, że przyrostowe zbieranie statystyk skraca czas zbierania statystyk i może być całkiem korzystne w przypadku dużych tabel partycji.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wygenerować UUID wersji 4 (losowy) na Oracle?

  2. SQL nie wyświetla wartości null w zapytaniu nie równa się?

  3. Oracle DB Server + APEX + ORDS + JasperReports od podstaw (Część 4)

  4. Dołącz do siebie w wyroczni z przykładami

  5. Szaleństwo wersji sterownika Oracle jdbc