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

Oracle SEQUENCE – 'přírůstek o' a 'mezipaměť'

Ani. Mezi INCREMENT BY a CACHE není žádný vztah.

INCREMENT BY řídí monotónní aspekt sekvence. S INCREMENT BY 50 bude řada 1, 51, 101, 151 a tak dále.

CACHE řídí, kolik sekvenčních čísel je uloženo v paměti pro obsluhu požadavků NEXTVAL. Čím menší je číslo CACHE, tím častěji musí databáze číst ze svých interních tabulek, aby získala další alokační rozsah. Takže ve středně vytíženém systému bychom chtěli minimalizovat počet získaných latchů, takže nastavíme CACHE na vysoké číslo, řekněme 1000.

Lidé jsou posedlí nastavením hodnoty CACHE, protože si myslí, že pokud je příliš vysoká, mohli by „ztratit“ některé hodnoty a mít mezery v řadě. Je extrémně nepravděpodobné, že se to stane, a i kdyby k tomu došlo, nemělo by nám to být jedno. Sekvence jsou zdrojem zaručených jedinečných hodnot a nemají žádný další význam.

I když po opětovném přečtení vaší otázky si nemyslím, že to bude mít nějaký dopad na výkon vašich hromadných vložek. Proč jste se rozhodli zaměřit na alokaci sekvencí? Spustili jste nějakou stopu, abyste zjistili, kde je úzké hrdlo? Mluvil jste se svým DBA?




  1. Přidání sloupce do všech uživatelských tabulek v t-sql

  2. Převést „datetime2“ na „čas“ v SQL Server (příklady T-SQL)

  3. Zobrazit výsledky dotazu SQL v php

  4. Zobrazit mezery mezi daty v MySQL