06.01.2009, 08:38 | #1 |
Участник
|
Очередная небольшая революция - переход на Oracle
Собственно хочу поделиться с общественностью - на праздники был совершен "переворот" - перевели рабочую базу на Oracle 10g. Axapta 3 KR2.
Собстенно перенос данных прошел где-то за сутки. Если кому что интересно - спрашивайте. |
|
|
За это сообщение автора поблагодарили: mazzy (2), belugin (3). |
06.01.2009, 13:09 | #2 |
Moderator
|
Я так понимаю - переходили с MS SQL 2005 x64 ? И как данные переносили ? Через SQL Integration services или есть какая-то Оракловская тулза для переноса данных ?
И как впечатления (первые) по поводу сравнения быстродействия Аксапы на MS SQL 2005 x64/Oracle 10g ? |
|
06.01.2009, 13:48 | #3 |
Участник
|
Да, переходили с MS SQL 2005 x64, но это тоже был переходный вариант (чтобы Windows 2003 x64 поставить на рабочий сервер). Насчет тулзов сложнее - предварительно были опробованы и SSIS и оряклячие переносилки (и прочее) - ни одна нормально не работает с image и text (в терминологии МС) полями! Пришлось рисовать генератор скриптов и т.д. - подготовительных исследований много было.
Пока по скорости не понятно - не было "боевой" нагрузки, но для 60-70 человек визуально практически одниаково. Мы расчитываем на другой выигрыш - отсутствие длительных и "многопользовательских" блокировок (разных видов). |
|
06.01.2009, 18:07 | #4 |
Модератор
|
Цитата:
Цитата:
Мы расчитываем на другой выигрыш - отсутствие длительных и "многопользовательских" блокировок (разных видов)
__________________
-ТСЯ или -ТЬСЯ ? |
|
06.01.2009, 21:43 | #5 |
Administrator
|
Ну для полноты картины не хватает информации о размере БД, о соотношении производительности между старым сервером БД и новым. А также об объеме модификаций приложения, который необходимо было сделать для перехода. Ведь как минимум индексы применяются по-другому и то, что раньше "летало" - могло существенно затормозиться
__________________
Возможно сделать все. Вопрос времени |
|
07.01.2009, 00:06 | #6 |
Участник
|
Цитата:
Цитата:
Цитата:
inventItemLocationSelectLocked |
|
07.01.2009, 00:40 | #7 |
Administrator
|
Цитата:
Сообщение от gl00mie
В частности, замечено, что его оптимизатор, порой, как-то "своеобразно" подбирает "наиболее подходящий" индекс и строит совершенно дикие планы запроса - возможно, как раз из-за перекоса весов различных параметров, используемых им при оценке стоимости использования того или иного плана.
Цитата:
Сообщение от gl00mie
Интересно, а кто-нить заморачивался тем, чтобы посчитать и соотнести затраты на эти вот исследования, перенос данных, на тот же Оракл, на поиск и наем Oracle DBA (а без него у вас "само собой" ничего нормально не заработает) - к примеру, в сравнении с докупкой ндцати гигов памяти под сервер БД с Ms SQL 2005 x64?..А вы разбирались в причинах блокировок? А то ведь бывают случаи, когда сменой СУБД ничего не решить
Кстати, в оракле - есть хороший анализатор выполняющихся запросов. Мы так нашли почему постоянно виснет разноска. Оракл показал на запрос UPDATE NumberSequenceTable. Нехитрые исследования показали, что проблема в непрерывных номерных сериях. Т.к. освобождение номера (в отличие от выделения) идет не в отдельной транзакции. В результате - мы максимально сняли везде галку "Непрерывная" (ессно убедившись, что это не приводит к трассировкам стека) и увеличили кол-во номеров на предварительное выделение у наиболее востребованных номерных серий (типа ваучера). Я по себе скажу - что в SQL 2000 такого механизма в помине не было (формально блокировок не было). Насчет 2005 - не знаю, но есть ощущение - что в Оракл все равно выдавал больше нужной информации.
__________________
Возможно сделать все. Вопрос времени |
|
07.01.2009, 12:12 | #8 |
Участник
|
Цитата:
Кстати, есть всякие дополнительные нашлепки для SQL админов типа dbArtisan |
|
07.01.2009, 16:39 | #9 |
Administrator
|
Цитата:
Ну... в отношении доп нашлепок не скажу - но стандартная поставка оракла все равно побогаче будет. Нравится мне его Enterprise Manager с веб-интерфейсом.
__________________
Возможно сделать все. Вопрос времени |
|
08.01.2009, 19:03 | #10 |
MCITP
|
Цитата:
Сообщение от sukhanchik
Цитата:
Сообщение от gl00mie
В частности, замечено, что его оптимизатор, порой, как-то "своеобразно" подбирает "наиболее подходящий" индекс и строит совершенно дикие планы запроса - возможно, как раз из-за перекоса весов различных параметров, используемых им при оценке стоимости использования того или иного плана. Насколько я понимаю, это всё из-за функциональных индексов, с которым оптимизатор (по крайне мере 9i) временами как-то с трудом справляется, даже при наличии самой полной статистики. Я проводил небольшие "исследования", моделируя одинаковые по сути ситуации, но с участием либо FBI, либо и обычных индексов. В результате было очень заметно, что в случае обычных индексов оптимизатор выбирает отличные оптимальные планы, используя по максимуму всё, что нужно по смыслу. В случае же FBI результаты бывают просто непредсказуемые. Навскидку помню следующие две проблемные ситуации, хотя их, конечно, больше: (правда данные эффекты я наблюдал на оракле на Винде. есть шанс, что на каком-нить *nix-e он себя и лучше поведёт) - Берётся абсолютно левый индекс, иногда даже в котором (кроме компании конечно) нет ни одного поля из запроса! И начинает по нему сканировать. Со всеми вытекающими по производительности. Приходится в таких ситуациях в Аксапте лечиться конкретным индекс-хинтом. - В ситуации, когда имеем запрос типа select a.. что-то ещё .... [not]exists join b ... join c. Предполагаем, что а соединено с b, а b c с по селективных индексам, которые можно и нужно использовать.. С обычными индексами Оракл бы "пропихнул" нужное условие на таблицу "b" в джоин a+b+c и выполнил бы по индексам нестед лупами с минимальной стоимостью и, соответственно, мгновенной скоростью запроса. С FBI же такую красоту он сделать уже отказывается. Рассматривает джоин b+c как независимое представление, которое и "разрешает" отдельно, обычно hash-джоином, естественно включая фулл-скан на обе таблицы (b & c). Стоит ли говорить о том, как страдает скорость, когда вместо доступа к нескольким строчкам по индексу, оракл начинает сканировать 2 большие таблицы. Приходится либо переписывать запросы, если это возможно и допустимо, либо "забивать".
__________________
Zhirenkov Vitaly |
|
08.01.2009, 19:11 | #11 |
MCITP
|
Цитата:
Сообщение от sukhanchik
Сия плюшка существует как я понимаю еще со времен 2.5. Но не зная ее - ее обнаружить - для этого нужна доп инфа со стороны БД. В некоторых случаях сам догадываешься (исследуя код), иногда - старшие товарищи помогают... Либо БД указывает. Для моего тогдашнего уровня знаний - эта доп инфа сильно помогла.
Ну... в отношении доп нашлепок не скажу - но стандартная поставка оракла все равно побогаче будет. Нравится мне его Enterprise Manager с веб-интерфейсом. А насчёт информации о выполняющихся запросах в Оракле и МССКЛ - тут я так понимаю дело в том, что с сиквелом аксапта работает на уровне курсоров, если так можно выразиться, и в итоге со стороны Studio видно, что выполняются операции с курсором (fetch,например), но не видно что конкретно за запрос висит. Это конечно действительно напрягает и не удобно. С Ораклом как-то проще такие моменты отслеживаются, согласен.
__________________
Zhirenkov Vitaly |
|
|
За это сообщение автора поблагодарили: sukhanchik (2). |
09.01.2009, 09:35 | #12 |
Участник
|
Драсти! Отдыхал немножко, поэтому задержка с ответами, итак:
Эту вещь юзаю и для МС и для Оракла - мне нравится! Цитата:
Не знаю что там брр, но вполне нормально работает, сие решение было принято после консультаций со знакомыми "собаководами", которые юзают ораклу ну очень давно! Утверждается, что для наших задач разницы практически нет! Есс-но если вдруг будет RAC, то конечно, будет *nix. Цитата:
Цитата:
Сообщение от sukhanchik
Ну для полноты картины не хватает информации о размере БД, о соотношении производительности между старым сервером БД и новым. А также об объеме модификаций приложения, который необходимо было сделать для перехода. Ведь как минимум индексы применяются по-другому и то, что раньше "летало" - могло существенно затормозиться
Приложение пока не модифицировалоь специально для Оракла - возможно чуть поработаем и что-то выявится. Цитата:
Сообщение от gl00mie
Да уж, теперь стоит внимательно почитать на форуме темы, наподобие Axapta 3.0 sp3+oracle 10.2.0.3 optimizer_index_cost_adj, ...
Разбирались, кончно. Кое-где их удалось убрать модификацие кода. Но не везде. Были проведены тестовые "игры" в разных вариантах, в общем это тема ваще отдельная... |
|
09.01.2009, 14:46 | #13 |
Moderator
|
Кстати - в продолжение давней дискуссии на которую тут ссылаются - нашел интересную статью по поводу того, как работать со статистикой при использовании FBI:
http://richardfoote.wordpress.com/20...-no-surprises/ Последний раз редактировалось fed; 09.01.2009 в 14:49. |
|
|
За это сообщение автора поблагодарили: ZVV (1), Logger (4). |
09.01.2009, 16:30 | #14 |
Модератор
|
Ну вот и славно
Цитата:
Ax3 этот read_committed_snapshot как зайцу стоп сигнал. Возможно в 4 что-то и дает, но мы включали его - ни каких изменений в поведении не произошло
Цитата:
мы расчитываем на другой выигрыш - отсутствие длительных и "многопользовательских" блокировок (разных видов)
Ну да ладно. Софт, как я понимаю, по карману компании не ударил , экспириенс получен, система работает, все довольны. Удачи
__________________
-ТСЯ или -ТЬСЯ ? |
|
09.01.2009, 18:29 | #15 |
Участник
|
Цитата:
В нашем случае помогает и даже очень! ps Хотел чег-то дописать, но воздержусь. |
|
10.01.2009, 10:18 | #16 |
Участник
|
Цитата:
PS. Лучше действительно в отдельной теме. |
|
10.01.2009, 19:34 | #17 |
Moderator
|
Цитата:
Сообщение от fed
Кстати - в продолжение давней дискуссии на которую тут ссылаются - нашел интересную статью по поводу того, как работать со статистикой при использовании FBI:
http://richardfoote.wordpress.com/20...-no-surprises/ Согласен, но зачем вообще использовать dbms_stats.gather_table_stats, когда есть dbms_stats.gather_scheme_stats, которая прекрасно обновляет статистику по FBI: X++: Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production With the Partitioning, OLAP and Data Mining options demas@ORCL> create table pink_floyd(table_name varchar2(50)); Table created. demas@ORCL> insert into pink_floyd values('one'); 1 row created. demas@ORCL> insert into pink_floyd values('One'); 1 row created. demas@ORCL> insert into pink_floyd values('ONE'); 1 row created. demas@ORCL> select * from pink_floyd; TABLE_NAME -------------------------------------------------- one One ONE demas@ORCL> select column_name, num_distinct, hidden_column, virtual_column from dba_tab_cols where table_name='PINK_FLOYD'; COLUMN_NAME NUM_DISTINCT HID VIR ------------------------------ ------------ --- --- TABLE_NAME NO NO SYS_NC00002$ YES YES demas@ORCL> begin 2 dbms_stats.gather_schema_stats(ownname=>'DEMAS',cascade=>TRUE); 3 end; 4 / PL/SQL procedure successfully completed. demas@ORCL> select column_name, num_distinct, hidden_column, virtual_column from dba_tab_cols where table_name='PINK_FLOYD'; COLUMN_NAME NUM_DISTINCT HID VIR ------------------------------ ------------ --- --- TABLE_NAME 3 NO NO SYS_NC00002$ 1 YES YES |
|
11.01.2009, 00:48 | #18 |
MCITP
|
Цитата:
Сообщение от Андре
А в чем суть поста? Не забывать использовать 'method_opt=> ‘FOR ALL HIDDEN COLUMNS SIZE 1′ в dbms_stats.gather_table_stats?
Согласен, но зачем вообще использовать dbms_stats.gather_table_stats, когда есть dbms_stats.gather_scheme_stats, которая прекрасно обновляет статистику по FBI: ................. Да нет, суть поста немножко не в этом, как я понял. Скорее в основном он в том, чтоб знать о том, что статистика на эти спрятанные колонки должна быть собрана. Ну и в том, что она не собирается автоматом когда вы создаёте индекс (FBI), а при этом создаётся только статистика на сам индекс. В итоге, если вы хотите, чтоб оптимизатор нормально работал с новым индексом, то вам нужно дособрать статистику на "спрятанные" колонки. А dbms_stats.gather_table_stats собирает статистику на эти колонки так же хорошо, как и dbms_stats.gather_scheme_stats - проверьте сами. И в режиме for all columns и в режиме for all indexed columns. И стандартный GATHER_STATS_JOB, кстати, тоже...
__________________
Zhirenkov Vitaly |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
11.01.2009, 09:00 | #19 |
Moderator
|
Не, создать не забыл, а вот в приведенный листинг не включил.
X++: create index pf_i on pink_floyd(upper(table_name)); X++: demas@ORCL> select column_name, num_distinct, hidden_column, virtual_column from dba_tab_cols where table_name='PINK_FLOYD'; COLUMN_NAME NUM_DISTINCT HID VIR ------------------------------ ------------ --- --- TABLE_NAME NO NO SYS_NC00002$ YES YES Цитата:
Сообщение от ZVV
Да нет, суть поста немножко не в этом, как я понял. Скорее в основном он в том, чтоб знать о том, что статистика на эти спрятанные колонки должна быть собрана. Ну и в том, что она не собирается автоматом когда вы создаёте индекс (FBI), а при этом создаётся только статистика на сам индекс.
Цитата:
А если мы уже используем dbms_stats.gather_scheme_stats, то смысл в exec dbms_stats.gather_table_stats пропадает. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
11.01.2009, 09:23 | #20 |
Участник
|
А кстати никто не разбирался, родной, Аксаптовский job и пакет "правильно" статистику собирает?
|
|