Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle RAC и последователности

Какво точно имате предвид под „поръчан“ в този контекст?

По подразбиране всеки възел в клъстера има отделен кеш с последователни номера. Така възел 1 може да раздава стойности 1-100, докато възел 2 раздава стойности 101-200. Стойностите, върнати от един възел, са последователни, но сесия А на възел 1 може да получи стойност от 15, докато сесия Б на възел 2 получава стойност от 107, така че стойностите, върнати в сесиите, изглеждат неправилни.

Ако посочите, че последователността трябва да бъде подредена, вие по същество побеждавате целта на кеша на последователността, защото Oracle вече трябва да комуникира между възлите всеки път, когато поискате нова стойност на последователността. Това има потенциал да създаде прилично количество режийни разходи за производителност. Ако използвате последователността като вид клеймо за време, тези допълнителни разходи може да са необходими, но обикновено не са желателни.

Разликата в режийните разходи в практическо отношение ще зависи силно от приложението - тя ще бъде неизмеримо малка за някои приложения и значителен проблем за други. Броят на RAC възлите, скоростта на взаимното свързване и колко трафик на междусистемната връзка също ще допринесат. И тъй като това е основно проблем с мащабируемостта, практическият ефект ще ограничи колко добре се мащабира вашето приложение, което по своята същност е нелинейно. Удвояването на обема на транзакциите, с които се справя вашето приложение, ще увеличи повече от два пъти допълнителните разходи.

Ако посочите NOCACHE, изборът на ORDER или NOORDER по същество е без значение. Ако посочите ORDER, изборът на CACHE или NOCACHE по същество е без значение. Така че CACHE NOORDER е най-ефективният, останалите три са относително взаимозаменяеми. Всички те ще включват координация между възли и мрежов трафик всеки път, когато поискате стойност на последователност, което очевидно е потенциално пречка.

Обикновено би било за предпочитане да добавите колона TIMESTAMP към таблицата, за да съхраните действителното времево клеймо, вместо да разчитате на последователността, за да предоставите ред на времеви печат.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Доказване на еквивалентност на SQL заявка

  2. тригери за кръстосано издание напред в R12.2

  3. Как да нулирам последователност в Oracle?

  4. Как да преименувате първичен ключ в Oracle, така че да може да се използва повторно

  5. SQL грешка:ORA-02000:липсва ВИНАГИ ключова дума при създаване на таблица, базирана на колона за идентичност