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 и всегда будете получать хорошую зарплату -)
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 и всегда будете получать хорошую зарплату -)
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/
А это у них всегда так. Взять тот же Advanced Compression: защиты от alter table ... compress for oltp не существует.
ОтветитьУдалить