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

Oracle 11G - Ефект на производителността на индексирането при вмъкване

Вярно е, че е по-бързо да модифицирате таблица, ако не трябва също така да модифицирате един или повече индекси и евентуално да извършите проверка на ограниченията, но също така е без значение дали след това трябва да добавите тези индекси. Трябва да имате предвид цялостната промяна в системата, която искате да осъществите, а не само една част от нея.

Очевидно, ако добавяте един ред в таблица, която вече съдържа милиони редове, тогава би било глупаво да изпускате и да създавате отново индекси.

Въпреки това, дори ако имате напълно празна таблица, в която ще добавите няколко милиона реда, пак може да бъде по-бавно да отложите индексирането за след това.

Причината за това е, че такова вмъкване се изпълнява най-добре с механизма за директен път и когато използвате вмъквания на директен път в таблица с индекси върху нея, се изграждат временни сегменти, които съдържат данните, необходими за изграждане на индексите (данни плюс редове ). Ако тези временни сегменти са много по-малки от таблицата, която току-що сте заредили, те също ще бъдат по-бързи за сканиране и за изграждане на индексите от тях.

алтернативата, ако имате пет индекса на таблицата, е да направите пет пълни сканирания на таблица, след като сте я заредили, за да изградите индексите.

Очевидно тук има огромни сиви зони, но браво за:

  1. Поставяне под въпрос на авторитет и общи правила, и
  2. Провеждане на действителни тестове за определяне на фактите във вашия собствен случай.

Редактиране:

Допълнителни съображения -- изпълнявате резервно копие, докато индексите са премахнати. Сега, след аварийно възстановяване, трябва да имате скрипт, който проверява дали всички индекси са на мястото си, когато бизнесът ви диша във врата, за да възстановите системата.

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да извика процедура без параметър out като тип таблица от Java клас

  2. създаване на материализиран изглед за годишен отчет въз основа на бавна функция

  3. JBoss се свързва автоматично с базата данни, когато базата данни се рестартира/прекъсне връзката

  4. Как да конфигурирате подчертаване на синтаксиса в SQLcl

  5. Разширете картографирането на диакритично сгъване на Endeca