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

Oracle RAC i sekwencje

Co dokładnie rozumiesz przez „zamówione” w tym kontekście?

Domyślnie każdy węzeł w klastrze ma osobną pamięć podręczną numerów sekwencyjnych. Zatem węzeł 1 może rozdawać wartości 1-100, podczas gdy węzeł 2 rozdaje wartości 101-200. Wartości zwracane z pojedynczego węzła są sekwencyjne, ale sesja A w węźle 1 może otrzymać wartość 15, podczas gdy sesja B w węźle 2 otrzyma wartość 107, więc wartości zwrócone przez sesje wydają się niewłaściwie uporządkowane.

Jeśli określisz, że sekwencja ma być uporządkowana, w zasadzie pokonujesz cel pamięci podręcznej sekwencji, ponieważ Oracle musi teraz komunikować się między węzłami za każdym razem, gdy żądasz nowej wartości sekwencji. Ma to potencjał, aby stworzyć przyzwoitą ilość narzutu na wydajność. Jeśli używasz sekwencji jako swego rodzaju znacznika czasu, może to być konieczne, ale generalnie nie jest to pożądane.

Różnica narzutu w kategoriach praktycznych będzie w dużym stopniu zależna od aplikacji — w przypadku niektórych aplikacji będzie niewymiernie mała, a dla innych będzie poważnym problemem. Liczba węzłów RAC, szybkość połączenia międzysieciowego i natężenie ruchu międzysieciowego również będą miały wpływ. A ponieważ jest to przede wszystkim kwestia skalowalności, praktycznym efektem będzie ograniczenie skalowania aplikacji, co jest z natury nieliniowe. Podwojenie wolumenu transakcji, które obsługuje Twoja aplikacja, spowoduje znacznie więcej niż podwojenie kosztów ogólnych.

Jeśli podasz NOCACHE, wybór ORDER lub NOORDER jest w zasadzie nieistotny. Jeśli podasz ORDER, wybór CACHE lub NOCACHE jest w zasadzie nieistotny. Tak więc CACHE NOORDER jest zdecydowanie najbardziej wydajny, pozostałe trzy są stosunkowo wymienne. Wszystkie będą obejmować koordynację między węzłami i ruch sieciowy za każdym razem, gdy zażądasz wartości sekwencji, która oczywiście jest potencjalnym wąskim gardłem.

Ogólnie rzecz biorąc, lepiej byłoby dodać do tabeli kolumnę TIMESTAMP w celu przechowywania rzeczywistego znacznika czasu, zamiast polegać na sekwencji w celu zapewnienia kolejności znaczników czasu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dodaj zbiorczo brakujące dane z poprzedniego miesiąca lub roku

  2. SSIS - wartość nie może zostać przekonwertowana z powodu potencjalnej utraty danych

  3. C# - Jak uzyskać wartość typu Oracle Long Raw?

  4. WYCZYŚĆ EKRAN — skrót do Oracle SQL Developer?

  5. Błąd odpytywania KGXGN (15)