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

Oracle 11g - Jak optimalizovat výběr pomalé paralelní vložky?

Zlepšete statistiky. Odhadovaný počet řádků je 1, ale skutečný počet řádků je více než 7 milionů a stále přibývají. To způsobí, že plán provádění použije vnořenou smyčku namísto spojení hash. Vnořená smyčka funguje lépe pro malá množství dat a spojení hash funguje lépe pro velká množství dat. Oprava, která může být tak snadná, jako zajistit, aby příslušné tabulky měly přesné a aktuální statistiky. To lze obvykle provést shromažďováním statistik s výchozím nastavením, například:exec dbms_stats.gather_table_stats('SIRS_UATC1', 'TBL_RECON_PM'); .

Pokud to nezlepší odhad mohutnosti, zkuste použít nápovědu pro dynamické vzorkování, jako je /*+ dynamic_sampling(5) */ . U takto dlouhotrvajícího dotazu se vyplatí věnovat trochu času navíc předběžnému vzorkování dat, pokud vede k lepšímu plánu.

Používejte paralelismus na úrovni příkazů namísto paralelismu na úrovni objektů. Toto je pravděpodobně nejčastější chyba paralelního SQL. Pokud používáte paralelismus na úrovni objektu, nápověda musí odkazovat na alias objektu. Od 11gR2 není třeba se starat o specifikaci objektů. Tento příkaz potřebuje pouze jednu nápovědu:INSERT /*+ PARALLEL(16) APPEND */ ... . Všimněte si, že NOLOGGING není skutečný náznak.



  1. Připojte SQL Server k SugarCRM

  2. Jak zobrazit datum v jiném formátu v oracle

  3. Kdy použít MongoDB nebo jiné databázové systémy orientované na dokumenty?

  4. MariaDB – MySQL – Zobrazení všech dostupných a podporovaných motorů