sql >> Databáze >  >> RDS >> Oracle

Shromažďování přírůstkových statistik v 11g

Databáze -11g zavedla novou funkci shromažďování přírůstkových statistik

-Přírůstkové statistiky budou fungovat pouze pro tabulky s oddíly, kde se globální statistiky aktualizují přírůstkově skenováním pouze oddílů, které se změnily od posledního spuštění. Obecně jsou nejnovější oddíly ty, do kterých se vkládají data, a většinou zůstávají starší oddíly nedotčeny. Při povolení přírůstkové statistiky u tabulky se statistiky shromažďují pouze na těch oddílech, na kterých jsou nějaké DML, zbývající se nekontrolují, což by ušetřilo spoustu času.

-Rozdělené tabulky jsou velké a pokud potřebujeme pravidelně shromažďovat statistiky, bylo by to velmi časově náročné a  Přírůstkové shromažďování statistik zkracuje čas potřebný ke shromažďování statistik

Příklad funkce inkrementálního shromažďování statistik Oracle 11g v sadě Oracle E-Business Suite.

Vezměme si příklad xla_ae_lines, což je tabulka oddílů a má mnoho záznamů v intenzivně využívané instanci ERP

Testovací případ bez nastavení přírůstkové preference

-Vytvořte tabulku xla_ae_lines_bkp jako tabulku oddílů pro provedení tohoto testovacího případu
– Vložení dat z tabulky xla_ae_lines

vložit do xla.xla_Ae_lines_bkp select * from xla.xla_ae_lines;

Vytvořeno 2119409 řádků.

-nastavit čas zapnutí

exec fnd_stats.gather_table_stats('XLA','XLA_AE_LINES_BKP');
Procedura PL/SQL byla úspěšně dokončena.
Uplynulo:00:00:49.06
  • První shromáždění statistik po vložení dat trvalo 49,06 s.
  • Zkontrolujte statistiky a globální úroveň a úroveň oddílu
vyberte table_name,to_Char(last_analyzed,‘DD-MON-YY HH24:MI:SS’) „last_analyzed“ z dba_Tables, kde název_tabulky jako ‚XLA_AE_LINES_BKP‘;

TABLE_NAME           posledně analyzováno

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

XLA_AE_LINES_BKP 09-SEP-16 10:04:34

vyberte partition_name,to_Char(last_analyzed,‘DD-MON-YY HH24:MI:SS’) „last_analyzed“ z dba_Tab_partitions, kde table_name jako ‚XLA_AE_LINES_BKP‘;

PARTITION_NAME       posledně analyzováno

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

AP 09-SEP-16 10:04:15

AR 09-SEP-16 10:04:16

CE 09-SEP-16 10:04:16

CST 09-SEP-16 10:04:23

DPP 09-SEP-16 10:04:23

ZÁBAVA 09-SEP-16 10:04:23

FV 09-SEP-16 10:04:23

GMF 09-SEP-16 10:04:23

IGC 09-SEP-16 10:04:23

IGI 09-SEP-16 10:04:23

LNS 09-SEP-16 10:04:23

OFA 09-SEP-16 10:04:23

OKL 09-SEP-16 10:04:23

OZF 09-SEP-16 10:04:23

PA 09-SEP-16 10:04:24

  • Smažte data z jednoho oddílu a zkontrolujte, jak se statistiky počítají
smazat z xla.xla_ae_lines_bkp kde application_id=222;
  • Shromažďování statistik usign fnd_Stats
    exec fnd_stats.gather_table_stats('XLA','XLA_AE_LINES_BKP');
    Procedura PL/SQL byla úspěšně dokončena.
    Uplynulo:00:00:25.06
  • Po smazání dat bylo spuštěno shromažďování statistik bez nastavení předvolby. Trvalo to 25,06 s
  • Kontrola globálních statistik a statistik oddílů
vyberte table_name,to_Char(last_analyzed,‘DD-MON-YY HH24:MI:SS’) „last_analyzed“ z dba_Tables, kde název_tabulky jako ‚XLA_AE_LINES_BKP‘;

TABLE_NAME naposledy analyzováno

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

XLA_AE_LINES_BKP 09-SEP-16 10:20:26

vyberte partition_name,to_Char(last_analyzed,‘DD-MON-YY HH24:MI:SS’) „last_analyzed“ z dba_Tab_partitions, kde table_name jako ‚XLA_AE_LINES_BKP‘;

PARTITION_NAME naposledy analyzováno

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

AP 09-SEP-16  10:20:14

AR 09-SEP-16  10:20:14

CE 09-SEP-16  10:20:14

CST 09-SEP-16  10:20:15

DPP 09-SEP-16  10:20:15

ZÁBAVA 9-SEP-16  10:20:15

FV 09-SEP-16  10:20:15

GMF 09-SEP-16  10:20:15

IGC 09-SEP-16  10:20:15

IGI 09-SEP-16  10:20:15

LNS 09-SEP-16  10:20:16

OFA 09-SEP-16  10:20:16

OKL 09-SEP-16  10:20:16

OZF 09-SEP-16  10:20:16

PA 09-SEP-16  10:20:17

POZNÁMKA:statistiky se shromažďují na všech oddílech, i když jsou odstraněna pouze data oddílu AR, pro všechny oddíly se aktualizuje last_analyzed

Testovací případ s nastavením přírůstkové preference

  • K provedení tohoto testovacího případu přetáhněte a znovu vytvořte tabulku xla_ae_lines_bkp jako tabulku oddílů

  • Vložte data z tabulky xla_ae_lines

vložit do xla.xla_Ae_lines_bkp select * from xla.xla_ae_lines;

Vytvořeno 2119409 řádků.

-nastavit čas zapnutí

exec dbms_stats.set_table_prefs(‘XLA‘,‘XLA_AE_LINES_BKP‘,‘INCREMENTAL‘,‘TRUE‘);
  • Zkontrolujte, zda je nastavení nastaveno
vyberte dbms_stats.get_prefs(‘INCREMENTAL‘,‘XLA‘,‘XLA_AE_LINES_BKP‘) z dual;

DBMS_STATS.GET_PREFS(‚INCREMENTAL‘,‘XLA‘,‘XLA_AE_LINES_BKP‘)

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

PRAVDA

  • Po nastavení předvolby shromážděte statistiky.
exec fnd_stats.gather_table_stats(‘XLA‘,‘XLA_AE_LINES_BKP‘);

Procedura PL/SQL byla úspěšně dokončena.

Uplynulo:00:00:25,91

  • Po nastavení předvolby trvalo první shromáždění statistik po vložení dat 25,91 s
  • kontrola statistických informací o načasování
vyberte table_name,to_Char(last_analyzed,‘DD-MON-YY HH24:MI:SS’) „last_analyzed“ z dba_Tables, kde název_tabulky jako ‚XLA_AE_LINES_BKP‘;

TABLE_NAME naposledy analyzováno

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

XLA_AE_LINES_BKP               09-SEP-16  10:35:32

vyberte partition_name,to_Char(last_analyzed,‘DD-MON-YY HH24:MI:SS’) „last_analyzed“ z dba_Tab_partitions, kde table_name jako ‚XLA_AE_LINES_BKP‘;

18

PARTITION_NAME naposledy analyzováno

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

AP 09-SEP-16  10:35:30

AR 09-SEP-16  10:35:12

CE 09-SEP-16  10:35:10

CST 09-SEP-16  10:35:21

DPP 09-SEP-16  10:35:21

ZÁBAVA 9-SEP-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-SEP-16  10:35:10

OKL 09-SEP-16  10:35:12

OZF 09-SEP-16  10:35:30

PA 09-SEP-16  10:35:12

  • Smažte data z jednoho oddílu, abyste viděli, jak pomůže přírůstkové shromažďování statistik při příštím shromažďování statistik.
smazat z xla_ae_lines_bkp kde application_id=222;

Bylo smazáno 100233 řádků

  • Shromážděte statistiky po smazání dat z AR oddílu application_id 222
exec fnd_stats.gather_table_stats(‘XLA‘,‘XLA_AE_LINES_BKP‘);

Procedura PL/SQL byla úspěšně dokončena.

Uplynulo:00:00:4.11

  • Po smazání dat pro jeden oddíl trvalo přírůstkové shromažďování statistik 4,11 s
  • Kontrola globálních statistik a statistik oddílů
vyberte table_name,to_Char(last_analyzed,‘DD-MON-YY HH24:MI:SS’) „last_analyzed“ z dba_Tables, kde název_tabulky jako ‚XLA_AE_LINES_BKP‘;

TABLE_NAME naposledy analyzováno

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

XLA_AE_LINES_BKP 09-SEP-16  10:45:18

vyberte partition_name,to_Char(last_analyzed,’DD-MON-YY HH24:MI:SS’) „last_analyzed“ z dba_Tab_partitions kde ta

ble_name jako „XLA_AE_LINES_BKP“;

PARTITION_NAME naposledy analyzováno

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

AP 09-SEP-16  10:35 :30

AR 09-SEP-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

ZÁBAVA 9-SEP-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-SEP-16  10:35 :10

OKL 09-SEP-16  10:35 :12

OZF 09-SEP-16  10:35 :30

PA 09-SEP-16  10:35 :12

Důležité věci, které je třeba poznamenat, shromažďují se statistiky, datum last_analyzed se mění pouze pro oddíl AR a načasování se také zkrátilo.

Vidíme tedy, že přírůstkové shromažďování statistik zkracuje načasování shromažďování statistik a může být docela výhodné pro velké tabulky oddílů.


  1. Jak psát vybraná prohlášení

  2. Pochopení nasazení Amazon Auroras Multi-AZ

  3. Jak nahradit NULL jinou hodnotou v SQL Server – ISNULL()

  4. MariaDB JSON_VALUE() vs JSON_QUERY():Jaký je rozdíl?