За и против индекси в отделен тейбълспейс

За и против индекси в отделен тейбълспейс

Мнениеот bgyurov » Сря Юни 10, 2009 9:22 am

Наскоро с едни колеги бяхме подели тази тема та реших да я постна и тук.
Известен е "постулата" че е добре индексите да са в тейбълпейс различен от таблиците. Принципната обосновка е че така "силно променливие" таблици не водят до фрагментация на много по-малко променливите индекси, а това е нещо в което аз лично не съм много убеден та бих се радвал да чуя и вашите мнения
Ето и моите аргументи
1) Когато вкарваме и трием редове от таблицата, фрагментираме самата таблица но не и тейбълспейса, доколкото екстентите си остават алокирани към нея. Единствено при Truncate и Drop можем да говорим за някаква фрагментация
2) Дори индекса да е фрагментиран и екстентите му да са пръснати в целия тейбълспейс, ние най-често го обхождаме в логически а не във физически ред. Тоест четем блок по блок а не големи парчета последователни блокове, откъдето пък следва че не се интересуваме особено колко са разпръснати екстентите му

Като някакви идеи за полза от подобен подход виждам
1) При загуба на тейбълспейса можем да не го restoreваме а да го пресъздадем и да пресъздадем и индексите, в случай че имаме скрипт за целта. Кое от двете обаче е по-бързо е спорно, предвид че създаването на индекс далеч не е лесна и бърза работа, а какво остава на много индекси
2) Индексите имат тенденцияата да са доста по-малки като размер в сравнение с таблиците (обяснимо и разбираемо е). Тогава, особено ако ползваме locally managed tablespacес и uniform extent allocation, има логика да ги отделим в отделен тейбълспейс с по-малък uniform size с цел да не се губи много място
Work as if you do not need money,
Dance as if nobody is watching
and every time you feel complaining
remember that your garbage disposal eats better
than one third of the people in the world
bgyurov
 
Мнения: 6
Регистриран на: Чет Фев 26, 2009 12:26 pm

Назад към Server Technology