Базы данных Oracle - статьи


Поддержка параллельных систем. - часть 6


Надо сказать, что алгоритм динамического разбиения таблиц весьма непрост, и было бы нечестно утверждать, что в нем с самого начала все было сделано самым оптимальным образом. Однако одно из самых важных преимуществ этого алгоритма в его гибкости, поэтому в него постоянно вносились усовершенствования на основании накопленного опыта эксплуатации в реальных инсталляциях, в результате чего от версии к версии Oracle7 добивался все более оптимальных характеристик параллелизма в выполнении запросов. К примеру, в версии 7.3 основные усовершенствования были связаны с поддержкой MPP-архитектур. Дело в том, что в них диски не равноценны по скорости доступа для каждого из узлов системы (к “своим” дискам доступ осуществляется быстрее, чем к “чужим”), поэтому и динамические разделы стали выделяться параллельным процессам преимущественно на локальных для соответствующих узлов дисках (преимущественно - опять-таки потому, что завершив свою “локальную” работу процесс не прекращает свою деятельность, а начинает помогать “отстающим”).

Как бы то ни было, сейчас можно с уверенностью констатировать, что метод динамического разбиения таблиц оправдал себя, позволив при минимальной дополнительной нагрузке на администратора БД добиться тем не менее практически оптимального распараллеливания выполнения запросов. Высокая масштабируемость Oracle в параллельном выполнении запросов на системах с различной архитектурой иллюстрируется также и тем фактом, что Oracle 7.3 сумел показать рекордные параметры в TPC-D тесте (в варианте с объемом данных 300 ГБ) как среди MPP-систем (на IBM SP/2), так и среди SMP-систем (на Sun Enterprise Server 10000)* .

Чтобы завершить разговор о разбиениях, хочу отметить, что Oracle7 к сожалению не включает в себя явной операции построения статических разделов таблицы (эта возможность вводится в Oracle8), но в неявном виде это тем не менее можно сделать с помощью имитации разделов отдельными таблицами, объединенными в единое представление с помощью операции UNION ALL. При выполнении запросов к такому представлению оптимизатор Oracle7 трактует его именно как таблицу, разбитую на разделы, в частности выполняет исключение разделов, если это возможно (хотя - еще раз подчеркну - параллелизм с этими разделами жестко не увязывается)* .




Начало  Назад  Вперед



Книжный магазин