Oracle Database In-Memory. Part 4.

Решил написать о некоторых занятных  публикациях, которые появились в последнее время в области In-Memory. По большей части они касаются лицензирования.

Kevin Closson нашел занятный баг, при котором, если вы обновили свою СУБД до версии 12.1.0.2 и просто выдали команду на создание таблицы

create table <>  inmemory

вместо ошибки, таблица создается, но вот что действительно плохо, Oracle начинает считать, что вы использовали In-Memory опцию, а поэтому пора бы и заплатить.

Почему я ожидал бы ошибку? По умолчанию, параметр INMEMORY_SIZE равен 0 - поэтому, разумно было бы ожидать ошибку, ведь мы не выделили место (память)  под таблицу. Но вот, что путает, так то  что существует отдельный параметр INMEMORY_QUERY, по умолчанию TRUE. Так вот похоже, что если INMEMORY_QUERY=TRUE Oracle начинает считать, что опция использовалась несмотря на значение параметра  INMEMORY_SIZE. Кстати, если, вы запустите (просто запустите!)  СУБД c  INMEMORY_SIZE >0 - вы также начали использовать опцию In-Memory. Итого, совет, если вы не готовы закупаться лицензиями - установите параметр INMEMORY_QUERY = FALSE.

Oracle даже написал разгромную статью, что Kevin не прав -), что не помешало завести bug  -)

James Morle написал архитектурного рода пост, где в том числе, делается вывод, что помимо платы собственно за In-Memory, все ошибки проектирования вашего приложения, вместо того, чтобы оставаться в области ввода-вывода, перейдут на память, а следовательно, вам придется закупить больше CPU. Сами процессоры (x86) относительно дешевы, но вот процессорные лицензии Oracle на них - не очень. Покупая новые процессоры, вы не только заплатите за новые лицензии но и скорее, всего уйдете за возможности 2 сокетного бокса, а с ростом числа сокетов, вы попадете в ловушку с  NUMA архитектурой - доступ к памяти, расположенной на других сокетах дороже доступа к памяти локального сокета.

Интересно, что похожа идея 2-х  сокетных боксов соединенных между собой Infiniband, начинает  побеждать - IBM, который не особенно поддерживал (ok, своеобразно поддерживал)  Infiniband на Power и AIX, решил добавить поддержку Infiniband в свое cloud решение SoftLayer.  Идея небольших коробочек, из 2 или 4-х сокетов соединенных Infiniband начинает завоевывать умы людей. Что интересно, это в точности модель hi-end серверов Power 770/7780/795 -))  с тем отличием, что у hi-enf  общая память организуется на аппаратном уровне, в то время как  у отдельных коробочек на уровне программного обеспечения (Oracle RAC).  Ужасная latency (по сравнению с аппаратным решением), необходимость адаптировать приложение - ничего не останавливает людей - все хотят россыпь маленьких серверов. Это прекрасно - учите RAC и всегда будете получать хорошую зарплату -)

2 комментария:

  1. Анонимный1/8/14 11:13 AM

    That BUG in our In-Memory Option will be fixed in October
    http://www.theregister.co.uk/2014/07/31/oracle_in_memory_bug_fix/

    ОтветитьУдалить
  2. А это у них всегда так. Взять тот же Advanced Compression: защиты от alter table ... compress for oltp не существует.

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