Wednesday, February 29, 2012

Какие приложения будут успешно "взлетать" на Экзадате ?

 

Чтобы ответить на этот вопрос, пройдите короткий тест

1. Тестировали ли Вы свое приложение на DB 11.2.0.3 или хотя бы на 11.2 ?

2. Успешно ли работает Ваше приложение в среде RAC ?
   Возрастает ли производительность приложения при добавлении узлов?

3. Использует ли Ваше приложение параллельное выполнение запросов ?
   Дает ли параллельное выполнение запросов видимый прирост производительности?
   Ограничена ли степень параллельности только возможностями оборудования?
   Идеально отлаженный параллельный запрос должен распараллелиться
   как в масштабах одного сервера, так и по узлам кластера. Это справедливо для Вашего приложения?

 -----------------------------

Результат

Если Вы ответили "Да" менее, чем на два вопроса, то Ваше приложение совершенно не готово к переносу на Экзадату. Рекомендуем вначале отладить Ваше приложение с учетом перечисленных выше требований и набрать хотя бы два "Да" из трех.

Если Вы набрали два "Да", то это значит, что определенные предпосылки для переноса на Экзадату есть, хотя ваше приложение не вполне готово для такого испытания. В общем, однозначно гарантировать "взлет" нельзя, но можно попробовать. Ваши шансы на успех 50/50.

Лучше всего, если Вы положительно ответите на вопросы 2+3.
Это значит, что Ваше приложение успешно работает в RAC и существенно использует параллельное выполнение запросов. В этом случае не столь важно - тестировались ли Вы на 11.2 или нет.

Если Вы уверенно ответили "Да" на все вопросы, то у Вас значительные предпосылки для "взлета" на Экзадате.

Плохие предпосылки

Если Вы найдете в Вашем приложении перечисленные ниже конструкции, то можете быть уверенными,
что  Ваше приложение будет плохо работать в Экзадате.

1) Global temporary tables. Если Ваше приложение существенно использует временные таблицы,
   то это огромный удар по производительности. Данные во временных таблицы доступны только сессии их создавшей,
   поэтому параллельные запросы выполняются со степенью параллельности 1.
   В результате, параллельный запрос выполняется только на одном узле кластера и только на одном ядре одного сервера.
   Экзадата не может распараллелить Ваш запрос по узлам кластера,
   на одном узле кластера запрос выполняется только на одном ядре и одним процессом.

2) Global application context. В 10g эти контексты были локальными, поэтому все работало быстро, но локально.
   В 11g контексты стали глобальными, поэтому в RAC они работают медленно, потому что они
   реализованы как DB link между инстансами.
   Поэтому, если Ваше приложение использует эту конструкцию, то в Экзадате она работает так же медленно,
   потому что Экзадата - это RAC.

3) Все Bad/Worst Practices которые применимы к RAC применимы и к Экзадате.
   А именно: ordered sequence,

Does DEALLOCATE UNUSED or SHRINK SPACE will free space occupied by LOB segment?

Lets check how it works. My env is DB 19.20@Linux-x64 1) I created the table with 4 LOB columns of 4 different LOB types: BASICFILE BLOB, BA...