|
|
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
Добрый день. Есть две таблицы. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. В старой таблице 100 миллионов строк, например, и надо перелить из старой в новую 10 миллионов строк по условию where date_main >= trunc(sysdate-7). При переливке БД не должна тормозить (продолжительность не имеет большого значения), поэтому вариант Код: sql 1. 2. 3. 4. 5. не подходит, как я понимаю. Что же делать? Вставлять построчно через цикл? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 12:27 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
140907При переливке БД не должна тормозитьУ тебя какие-то странные критерии тормознутости. 140907Что же делать?CTAS + exchange partition. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 12:39 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
140907, Как раз таки инсертом будет быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 12:44 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
Elic Про тормознутость - надо чтобы БД оставалась отзывчивой для приложений и других пользователей во время переливки данных (т.е. чтобы никому не мешать). Про "CTAS + exchange partition" почитаю, спасибо. А у приведенного цикла какие недостатки (кроме продолжительности)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 12:46 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
140907, кстати , на твой слип уйдет больше времени, чем на вставку :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 12:46 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
ora601 Боюсь, времени потребуется больше, т.к. даже простой селект Код: sql 1. 2. 3. занимает секунд 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 12:52 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
140907, А ты не бойся и попробуй. Заодно выложи сюда результаты loop (только убери слип а то только на него уйдет 20.000 сек), insert, можешь еще дать результат exchange partition. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 13:05 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
ora601 Мы говорим немного о разном. Мне не важно, сколько времени (10, 20, 30 минут) будет выполниться копирование строк из старой таблицы в новую. Главное - чтобы копирование не мешало другим пользователям работать с БД. Пока что я заметил, что при активной вставке в какую-либо таблицу (без триггеров) вся БД начинает "тормозить". Поэтому использую sleep - медленно, зато никому не мешаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 16:27 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
140907Пока что я заметил, что при активной вставке в какую-либо таблицу (без триггеров) вся БД начинает "тормозить". Ну так и разбирайся с причиной этих тормозов, а не подставляй костыли наобум. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 16:51 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Жесткий стиль. Зря. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 20:28 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
140907Жесткий стиль. Зря. Тебе дело говорят. Кто ж тебе поможет, если ты слушать не хочешь? У меня вот похожая ситуация - нужно удалить пол-миллиарда строк из таблички "так, чтобы было незаметно для пользователей". Работаю над этим, исследую на чём тормозит. И тебе того же желаю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 21:46 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
проходил мимо... Если найдете решение, пожалуйста, напишите в эту тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2016, 14:02 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
CTAS не подходит (я в примере не указал все колонки обеих таблиц, каюсь, а одна из них - виртуальная, а CTAS делает из нее обычную). А Exchange Partition, похоже, подойдет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2016, 14:10 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
140907, Можно экспортнуть из старой таблицы что-то типа: expdp include=TABLE:"IN ('EMP')" query=emp:"where date_main > ???" Дальше через импорт попробовать, может быть не будет тормозить. Как вариант ограничить нагрузку через файловую систему. Можно временно помувать таблицу в другой тебйлспейс, чтобы тот размещался в другом маунпоинте. Беда в том, что как понимаю, проблема происходит из-за нагруженности файловой системы. С этим всегда сложновато бороться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2016, 19:41 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
140907CTAS не подходит (я в примере не указал все колонки обеих таблиц, каюсь, а одна из них - виртуальная, а CTAS делает из нее обычную).Ну если ты используешь звёздочку, то тем самым только измеряешь собственную глупость. 140907А Exchange Partition, похоже, подойдет :)С твоим partitioning и без CTAS? Мозг не включился? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2016, 19:41 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
140907Elic А у приведенного цикла какие недостатки (кроме продолжительности)? Commit после каждой вставленной строчки, это плохая идея. БД может подвиснуть на log_file_sync. Вставлять в одной транзакции 10 млн тоже не хорошо, т.к. может потребоваться много undo, а штатные запросы тогда полетят по ora-01555 или ORA-30036. Можно попробовать найти баланс. А вообще CTAS - хорошее решение. Если возникнут тормоза, надо смотреть план запроса, AWR, ASH. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2016, 09:19 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
140907проходил мимо... Если найдете решение, пожалуйста, напишите в эту тему. "Мальчик, как тебя зовут?" (с) ПОСМОТРИ НА ЧЁМ У ТЕБЯ ТОРМОЗИТ. Напиши об этом сюда - постараемся помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2016, 09:36 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
Lunaire140907Elic А у приведенного цикла какие недостатки (кроме продолжительности)? Commit после каждой вставленной строчки, это плохая идея. БД может подвиснуть на log_file_sync. Вставлять в одной транзакции 10 млн тоже не хорошо, т.к. может потребоваться много undo, а штатные запросы тогда полетят по ora-01555 или ORA-30036. . ну допустим вот так. Вставлять понемногу. Мне помогает, но по причине хренового знания теории объяснить не смогу(((( Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2016, 09:56 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
Может проще использовать Resource Manager И просто зарезать пользователю CPU... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2016, 14:36 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
Resource Manager достаточно плохо управляется с IO. Если "узкое горлышко" диски, то с первого раза приемлемо настроить вряд ли получится IMHO & AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2016, 15:07 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
140907, А Вы пробовали захинтовать Код: plsql 1. Может так оно будет проскакивать быстрее, общее время "тормозов" сократится и всем станет легче? Если опытные коллеги пояснят, когда от этого только хуже - буду благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2016, 16:54 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
Vladimir BaskakovЕсли опытные коллеги пояснят, когда от этого только хуже - буду благодарен. Если вставляются данные, захватывающие много партиций, +append добавит новый экстент к каждой затронутой партиции. Иногда это может быть убийственно. Ну и от +parallel(очень много) поплохеть всем может значительно быстрее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2016, 17:33 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
проходил мимо... - Согласен. Правильно ли я прочитал, Код: plsql 1. 2. 3. 4. 5. что новая таблица партиционирована по три дня, т.е. недельный запрос покроет (и нарастит) 3 партиции ? может и не страшно. Код: plsql 1. 2. а если подгадать моменты вставки раз в 3-6-9 дней - то можно и вовсе попадать строго в нужную партиции. Ну и конечно, слишком много параллелей ставить наверное не стоит.... тоже согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2016, 18:05 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
Спасибо всем, кто хочет помочь. Я пока не могу продолжить беседу. Через день-два :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2016, 00:15 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
Vladimir BaskakovПравильно ли я прочитал Не в том проблема. Если у нас партиции за прошедший год по три дня и там уже есть данные, то вставка +append по одной строке на каждый день прошедшего года заставит выделить новый экстент в 122х партициях. А экстенты могут быть и по 8-64 Мб каждый . А если этот самый +append ещё и делать регулярно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2016, 13:49 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
Проходил мимо - может я недопонял, но мне показалось что как раз не будет по одной строке в каждый день года. там условие отбора стоит - по последним дням, за неделю. т.е. похоже на переливание в архив, некоего прошлого куска. но тогда не очень понятно, почему сразу не писать все в архив, зачем первая часть? ну зачем-то. В оптимизации (у меня) часто оптимизировал то, что нужно было целиком удалить или по другому сделать ((((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2016, 18:52 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
Хочу продолжить тему... т.к. она скоро станет для меня очень актуальной. И так. скоро предстоит загрузка данных на боевой сервер. И на нем вертится БД, с которой работают много пользователей. Загрузка будет длительной. Но радует что она разовая. Надо чтобы пользователям она не мешала работать. И вроде удачно посмотреть в сторону Resource Manager и просто зарезать пользователю CPU. Но настораживает что в оракл Oracle... при неиспользовании ресурсов текущими группами, их мощности переходят в другие группы... А так же операции IO Leonid KudryavtsevResource Manager достаточно плохо управляется с IO....Это очень настораживает... Будет идти какой-нибудь Код: plsql 1. на долгое время, захватив ресурсы пока никто не работает и пока он не закончится, он их не отдаст. Только после окончания операции, оракл начнет у пользователя отнимать ресурсы. Или я неправ ? Посоветуйте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2017, 07:46 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
Владимир САНадо чтобы пользователям она не мешала работать.В ночную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2017, 07:48 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
ElicВладимир САНадо чтобы пользователям она не мешала работать.В ночную.Тут загрузчик будет работать несколько дней (около 3)... Понятно что загрузчик грузит во многие таблицы... и как бы будет перерыв между командами INSERT UPDATE ... Но настораживает.. Как выкручиваться... Данных очень много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2017, 07:50 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
Точнее у загрузчика не только эти команды... там очень сложный алгоритм анализа данных... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2017, 07:51 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
Владимир САТут загрузчик будет работать несколько дней (около 3)...И в выходные. Или использовать другой "загрузчик" (не тормоз) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2017, 07:57 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
ElicВладимир САТут загрузчик будет работать несколько дней (около 3)...И в выходные. Или использовать другой "загрузчик" (не тормоз)В выходные тоже могут работать... А что такое использовать другой "загрузчик" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2017, 08:00 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
Извиняюсь... "другой", т.е. чтобы он прекращал работать в рабочее время... Надо это продумать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2017, 08:02 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
Может кто-то уменьшал не только ресурсы по CPU, а какие-то другие ресурсы для пользователя ? Т.е. к чему я... уменьшить CPU, еще что-то... и пойдет... Ни у кого опыта НЕТ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2017, 08:30 |
|
||
|
Переливка данных с ограничением нагрузки на БД
|
|||
|---|---|---|---|
|
#18+
Владимир СА, Анализ данных происходит на ресурсах загрузчика или субд? Если на уровне загрузчика, то нагрузка на базу и так не должна большой. Если на уровне субд, то разделить эти этапы, вначале загрузить данные, потом делать обработку. Можно каждую часть обработки поделить на потоки и запустить несколькими джобами, уменьшать количество потоков, когда пользователей больше работает, а в свободное время увеличивать. И, конечно, нагрузку мониторить, выставить алерты на комфортный уровень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2017, 17:16 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1886656]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
198ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 559ms |

| 0 / 0 |
