RuOUG

На RuOUG  я послушал презентацию Ю. Пудовченко про Exadata (все презентации с RuOUG доступны тут). Хочу отметить очень высокое качество презентации. Хотя и не обошлось без слайда про ускорение в 300 раз -)), в целом презентация была очень взвешенной и основанной на реальном опыте. Безусловно рекомендую ее к просмотру. Особенно ценным, мне показались слайды с упоминанием мест в коде, с которыми могут возникнуть проблемы,  а также как понять из AWR есть ли смысл в переносе приложения на Exadata.


Единственное в чем я не согласен с Юрием, это с его определением, что Exadata storage   выполняет sql.  Возможно это чисто теоретический спор, однако мне он кажется важным.

Давайте посмотрим, что Oracle понимает под выполнением sql запроса. Слева, вы видите семантическую диаграму.

 Думаю, что большинство согласится, что parsing выполняет ядро СУБД Oracle. К фазам Optimization/Row Source Generation  кажется тоже нет претензий - делается на стороне СУБД. Надеюсь пока все согласны.

Итак, мы подошли к Execution. Насколько я понял Юрия, поскольку Exadata storage выполняет I/O это и позволяет говорить, что она выполняет sql. Однако, берем определение:  During execution, the SQL engine executes each row source in the tree produced by the row source generator.

Еще раз - все делает SQL Engine. Нужно ли говорить, что нет SQL Engine на стороне Exadata storage ? Exadata storage даже не получает текстов sql запросов, а только условия фильтрации и/или  битовые маски для join. Если же аргумент 'Exadata storage делает ввод-вывод' для вас достаточен, чтобы решить,  что это выполнение sql запроса, тогда любой storage, который делает ввод-вывод также выполняет sql запросы -)

26 комментариев:

  1. Два попроса:
    1) Когда Exadata научилась выполнять count, sum, agv, dense_rank и пр?
    2) Чем Exadata с Flash Cache лучше обычного Оракла с Flash Cache для OLTP приложение?

    ОтветитьУдалить
  2. Анонимный12/12/12 9:38 AM

    Exadata с Flash Cache лучше обычного Оракла с Flash Cache хотя бы тем, что
    - в Exadata он write-back,
    - там можно держать redo,
    - там можно располагать датафайлы и тем самым смартсканнить флешкэш.

    ОтветитьУдалить
    Ответы
    1. >Exadata с Flash Cache лучше обычного Оракла с Flash Cache

      А чем Exadata с Flash Cache лучше чем разместить БД на SSD?

      SSD - write back
      там можно держать redo
      там можно располагать датафайлы и скорость ввода-вывода такова, что нет смысла ничего смарсканить при цене этой фичи

      Удалить
    2. Анонимный12/12/12 12:34 PM

      Дмитрий, странный инжденер, но знатный тролль ;-)
      >> А чем Exadata с Flash Cache лучше чем разместить БД на SSD?
      - Тем, что это будет обычный "cached" со всеми латчами и пр.
      - Задействованы всё те же CPU - в Exadata это нагрузка передается другому серверу
      - смарт скан умеет не делать работу вообще (storage indexes), вместо того чтобы сканнить террабайты на SSD

      Удалить
    3. Ага , я то же жду ответа на этот вопрос )

      Удалить
    4. >но знатный тролль ;-)
      >со всеми латчами и пр.
      Делаем direct patch read и обходимся без латчей (по вашей терминологии)

      >адействованы всё те же CPU -
      на ввод-вывод - нет

      >storage indexes
      А меня partitioning устраивает по скорости, объем подберу так чтобы проблем не возникало

      Удалить
    5. Анонимный12/12/12 2:24 PM

      > Делаем direct patch read и обходимся без латчей (по вашей терминологии)

      кстати, строго говоря, в этом случае тоже без латчей не обходится. попробуй догадаться каких именно :) это тебе задачка как знатоку Oracle :)

      ranger.

      Удалить
    6. >попробуй догадаться
      >ranger

      Попробуй забороть свои детские комплексы.

      >- Тем, что это будет обычный "cached" со всеми латчами и пр.
      >- Задействованы всё те же CPU - в Exadata это нагрузка передается другому серверу
      >- смарт скан умеет не делать работу вообще (storage indexes), вместо того чтобы сканнить террабайты на SSD

      Пара комментариев:
      1) Есть мнение, что сматр-скан данным, расположенным на Flash, да еще и для OLTP особо не нужен, там такого рода запросы с горячим данным (мы же горячие данные на flash хотим положить?) большая редкость.
      2) По поводу CPU - не аргумент, экзадатовские CPU тоже не манна небесная, которая с неба упала, нагрузку другому серверу можно передать расширив RAC (за счет экзадатовских нод), он же у нас масштабируется. Или уже не масштабируется и поэтому стало выгоднее городить огород из дополнительных специализированных нод?

      С остальным согласен. На первый вопрос кто-нибудь ответит?

      Удалить
    7. Анонимный13/12/12 9:15 AM

      > На первый вопрос кто-нибудь ответит?
      Докладчик ошибся. Функции lag и dense_rank не оффлоадятся.
      Как ошибся он и в том, что DML не оффлоадится. Offloadable части плана запроса оффлоадятся в DML также как и в DDL и в SELECT.

      Удалить
    8. Анонимный13/12/12 10:02 AM

      >>storage indexes
      >А меня partitioning устраивает по скорости, объем подберу так чтобы проблем не возникало
      Это равносильно "А меня всё устраивает по скорости, я так круто всё задизайню, что проблем не возникнет". Если всё хорошо, то ничего покупать не надо.
      Я еще таких систем не видел, чтобы всё хорошо. Но это потому что их не Дмитрий дизайнил :-(


      >>адействованы всё те же CPU -
      >на ввод-вывод - нет

      Разделим случаи примерно на OLTP и остальное.
      В чистом OLTP надо запрашивать случайные одиночные блоки данных. Exadata здесь выступает как хранилище с быстрым временем отклика. Даже если построить такое хранилище на SSD, то даже так остаются преимущества в том что это Оракл стек, в поддержке, в том что offloading бэкапов и прочее прочее, что в любом случае будет вокруг OLTP.
      Однако чистого OLTP никто в глаза не видел. И тогда, если нужен SmartScan, то, очевидно, его невозможно заменить SSD. Это передача нагрузки с DB уровня, ядра на DB освобождаются и уже не нужен IBM Power. В случае с SSD сканировать, декомпрессить, фильровать будут ноды DB. При этом внутренний параллелизм и передача уже готового результата. Плюс умение не делать работу вообще, в частности storage indexes.

      Удалить
    9. Анонимный13/12/12 10:26 AM

      >> Или уже не масштабируется и поэтому стало выгоднее городить огород из дополнительных специализированных нод?
      Масштабируется не RAC, а приложение. Даже если приложение хорошо масштабируется SmartScan будет полезен. А если не масштабируется, то и подавно.

      >> Есть мнение, что сматр-скан данным, расположенным на Flash, да еще и для OLTP особо не нужен, там такого рода
      >> запросы с горячим данным (мы же горячие данные на flash хотим положить?) большая редкость.
      Если это чистое OLTP, то может SmartScan там был бы и не нужен. Обычно OLTP это только часть смешанной нагрузки.

      Удалить
    10. >Функции lag и dense_rank не оффлоадятся
      Ну давайте уже будем до конца честными и скажем, что не оффлодятся вообще никакие агрегатные и аналитические функции.

      >Масштабируется не RAC, а приложение.
      А RAC - не приложение? К нему понятие масштабируемости не применимо?

      >Если это чистое OLTP, то может SmartScan там был бы и не нужен. Обычно OLTP это только часть смешанной нагрузки.
      Ну, с тем, что это не помешает я согласен, но стоит ли оно того, если большую часть времени оно будет простаивать и выполнять роль обычного рейд-массива. Ведь смешанная нагрузка разная бывает, можно раз в месяц по выходным гонять отчет и тоже называть это смешанной нагрузкой.

      Удалить
    11. Анонимный13/12/12 12:37 PM

      >>Масштабируется не RAC, а приложение.
      >А RAC - не приложение? К нему понятие масштабируемости не применимо?

      имхо некорректная точка зрения, ибо рак сам по себе вряд ли полезен (рак, так сказать, ради рака).

      >>Если это чистое OLTP, то может SmartScan там был бы и не нужен. Обычно OLTP это только часть смешанной нагрузки.
      >Ну, с тем, что это не помешает я согласен, но стоит ли оно того, если большую часть времени оно будет простаивать и выполнять роль обычного рейд-массива.

      кстати, рискну предположить, что относительно недорогого рейд-массива, так что и с этой точки зрения может быть оправдано.

      ranger.

      Удалить
    12. >кстати, строго говоря, в этом случае тоже без латчей не обходится.

      Ну и кого они волнуют эти латчи? Это главная проблема приложений - конкуренция за латчи при direct path read?

      Кстати, строго говоря, PCI Flash торчащий в экзадате - это обычное блочное утсройство для Linux, соответственно для Oracle DB это обычный диск, данные с которого надо сначал скопировать в SGA\PGA СУБД, прежде чем сделать с ними что-то блолее осмысленное. Итого, имеем эфемерный выигрыш на full scan'ах которые могут быть отСмартСканены, а на одноблочных индексных чтениях, коих даже в самых гибридных и уродских OLPT, которые мне приходилось видеть, все равно около 90%, имеет те же яйца "вид с боку".

      >- смарт скан умеет не делать работу вообще (storage indexes), вместо того чтобы сканнить террабайты на SSD

      Ощутимый выхлоп от этого будет только тогда, когда:
      а) Известен характер запросов к данным
      б) Данные при загрузке предварительно отсортированы таким образом, чтобы учесть пункт а

      Если данные вставляются достаточно случайным образом, то ощутимого выигрыша перед другими механизмами кластеризации данных - нет. Та же хрень существует и в Netezza - называется Zone Maps, и там точно такие проблемы - чтобы почувствовать эффект от них, данные надо сортировать при загрузке.

      Удалить
    13. Анонимный21/12/12 7:30 PM

      >> а на одноблочных индексных чтениях, коих даже в самых гибридных и уродских OLPT, которые мне приходилось видеть,
      >> все равно около 90%, имеет те же яйца "вид с боку".
      А на что более всего жаловались люди, ты спрашивал? Скорость разных операций и отчетов может волновать их больше, чем твои 90% одноблочных чтений. Когда на табблицу нельзя добавить индекс, потому что их уже там 20, а без этого индекса операция занимает в 5 раз больше времени, чем необходимо.
      Вот для этого и нужна Exadata - изменять работу очень тяжелые операций, чтобы они стали быстрыми и максимально ускорить одноблочные чтения для OLTP компоненты. Ускоряется эти одноблочные чтения просто быстрым кешем с write-back, ничего сверх секретного и ничего нового тут еще не придумали. Ускорение же full сканов естественно куда более "умная", навороченная часть, что вообщем и есть соль Exadata.

      Удалить
  3. Анонимный12/12/12 1:37 PM

    > Делаем direct patch read и обходимся без латчей (по вашей терминологии)

    можно поподробнее о прямом чтении патчей? :)

    ranger.

    ОтветитьУдалить
  4. >имхо некорректная точка зрения, ибо рак сам по себе вряд ли полезен (рак, так сказать, ради рака).

    И да, и нет. Если приложение не масштабируется, даже если платформа позволяет, то это конечно проблема прилоежения. Но если платформа не позволяет, то приложение не при чем, так ведь? Если бы дело всегда было лишь в приложениях, то не было бы необходимости в создании Exadata, все сидели бы на RAC и радовались.

    Так что вопрос остается в силе, почему вдруг для OLTP приложения (с DWH понятно) нагрузку выгонее распределять не горизонтально - другой ноде RACа, а вертикально - вниз по стеку на Exadata Cell?

    Единственный аргумент с которым я могу согласится - это случай, когда по той же системе гоняется тяжелая отчетность (что уже давно является моветоном), где SmartScan может пригодится.

    ОтветитьУдалить
    Ответы
    1. Анонимный15/12/12 10:31 PM

      >> Если бы дело всегда было лишь в приложениях, то не было бы необходимости в создании Exadata,
      >> все сидели бы на RAC и радовались.
      Пожалуйста, вопрос только в цене. Чтобы добиться такого же эффекта как в Exadata надо гораздо больше ядер в обычном RAC, и гораздо более масштабный storage. Если подобное решение собирать без Exadata storage, то это будет в 10 раз более дорогое монстрообразное решение. Но и в этом случае не добиться таких эффектов Exadata, как отсутствие работы в некоторых случаях (storage indexes) и внутренний параллелизм на serial операциях с точки зрения DB node. При этом Exadata весь стек родной.

      >> вопрос остается в силе, почему вдруг для OLTP приложения (с DWH понятно)
      >> нагрузку выгонее распределять не горизонтально - другой ноде RACа,
      >> а вертикально - вниз по стеку на Exadata Cell?
      Для абстрактного чистого OLTP никакого распределения вертикально не требуется кроме быстрого одноблочного случайного чтения и быстрой асинхронной записи. Именно это Exadata и предлагает, плюс еще много всего интересного, что скорее всего понадобится, т.к. чистого OLTP никто в глаза не видел.

      Удалить
  5. Анонимный15/12/12 12:45 PM

    Немного по теме:

    >>Насколько я понял Юрия, поскольку Exadata storage выполняет I/O это и позволяет говорить...

    Дмитрий, очевидно, упрощает содержимое доклада, намеренно упуская очень важную часть SQL Execution - Smart I/O, решение о применении которого принимается на этапе Execution выполнения запроса, так же, как и выбор для доступа к данным метода direct path read, например

    Доклад, действительно, продуманный, с описанием и плюсов, и минусов. Более того, по словам автора доклада Юрия Пудовченко, его работодатеть предоставляет возможность проведения бесплатных тестов приложений на своих Exadata-х, и очередь совсем небольшая

    Было бы любопытно увидеть сравнительные тесты какого-нибудь практического приложения на Exadata и IBM Power, например - ведь только практика может являться критерием истины ?)

    ОтветитьУдалить
  6. Анонимный15/12/12 1:33 PM

    Немного по теме:

    >>Насколько я понял Юрия, поскольку Exadata storage выполняет I/O это и позволяет говорить...

    Дмитрий, очевидно, упрощает содержимое доклада, намеренно упуская очень важную часть SQL Execution - Smart I/O, решение о применении которого принимается на этапе Execution выполнения запроса, так же, как и выбор для доступа к данным метода direct path read, например

    >> Exadata storage даже не получает текстов sql запросов, а только (!!!) условия фильтрации и/или битовые маски для join

    - отлично описано важнейшее отличие от любого storage - видимо, неосознанно ;)

    А доклад, действительно, продуманный, с описанием и плюсов, и минусов. Более того, по словам автора доклада Юрия Пудовченко, его работодатеть предоставляет возможность проведения бесплатных тестов приложений на своих Exadata-х, и очередь совсем небольшая

    Было бы любопытно увидеть сравнительные тесты какого-нибудь практического приложения на Exadata и IBM Power, например - ведь только практика может являться критерием истины ?)

    ОтветитьУдалить
    Ответы
    1. >>>Было бы любопытно увидеть сравнительные тесты какого-нибудь практического приложения на Exadata и IBM Power, например - ведь только практика может являться критерием истины ?)

      прекрасное предложение! я бы тоже с удовольствием на сравнительные тесты посмотрел =) не подскажете, где их для экзадаты найти?

      Удалить
    2. Анонимный16/12/12 2:30 AM

      Смысл их сравнивать? Это разные вещи и не конкуренты. Упрощенно говоря IBM Power это CPU, тогда как Exadata это "умный сторадж". Легко придумать задачу (мы ведь говорим о БД Оракл), которая бы решалась только на Exadata и никак на IBM Power. Но сильно сложнее ту, которая бы решалась только на IBM Power и не решилась на Exadata.

      Удалить
    3. Анонимный16/12/12 3:16 AM

      > прекрасное предложение! я бы тоже с удовольствием на сравнительные тесты посмотрел =) не подскажете, где их для экзадаты найти?

      сначала гоните сравнительные тесты для power :)

      ranger.

      Удалить
    4. >>>сначала гоните сравнительные тесты для power :)

      http://bit.ly/US9Xcx -- выбирайте любой )

      Удалить
    5. >>>Смысл их сравнивать? Это разные вещи и не конкуренты.

      согласен. но жизнь показывает, что их сравнивают постоянно все кому не лень )
      вот отличный пример: http://www.crn.com/slide-shows/data-center/240004454/five-companies-that-dropped-the-ball-this-week.htm

      Удалить
  7. Анонимный28/1/13 12:38 PM

    Добрый день.
    А Вы все это тут пишете. А кто-нибудь в глаза-то видел эту EX-adata-ОТИКУ?
    Буквально 21 у меня закончились тесты SPARC SUPER Cluster'а, причем на свой страх и риски (по настоянию Oracle)тесты проводили с переводом реальной нагрузки на узел SuperCluster'а без какой-либо модификации настроек. Впечатление очень, очень положительное. IO как класс полностью исчезло. Из-за конфиденциальности не могу выложить отчет, но наша система смогла утилизировать HDD только на 10%. Т.е. на выходе из сервера было 19000 IPOS до HDD-дисков доходило только 1500 IOPS, по 500 IPOS на каждый Storage CELL. Ничего из фитч не использовали, т.к. не было цели и времени. В отличии от классической системы, как мы сейчас используем, FlashCache более избирательный и интеллектуальный чем "тупое" кеширование всего подряд, которое приводит к автоматическому решению следующих задач эксплуатации
    - постоянному перегрузу кеша, нет необходимости его жесткого деления 'разрезания' между БД или хотами,
    - не требуется специализированного подхода к выделению и переносу на SSD отдельных горячих-дата файлов и REDO
    - нет проблем с понимание принципов работы динамического Tire-йнга и всяких Динамических пулов
    - постоянное низкое время ответа при любой нагрузке, поверьте мы пригрузили хорошенько эту систему
    - простота управления..

    Теперь, правда, Oracle проявляет какую-то полную невменяемость как продавцы, но это уже совсем другая история...

    Удачи...

    Сергей...

    P.S.
    Тебе могут много расказывать о хорошей жизни какие-то дяди и тёти в БЛОГАХ и СТАТЬЯХ но только когда сам делаешь тесты и пробуешь "еду на вскус" ты можешь сказать, что тебе это подходит...

    ОтветитьУдалить