Текущий архив: 2008.10.19;
Скачать: CL | DM;
ВнизВопрос к знатокам оракла. Есть ли ограничение на кол-во действий Найти похожие ветки
← →
data © (2008-08-29 13:47) [0]в рамках одной транзакции? (версия 9).
← →
Игорь Шевченко © (2008-08-29 13:50) [1]что такое "действие" ?
← →
Игорь Шевченко © (2008-08-29 13:51) [2]по сабжу - ограничение диктуется размером REDO-лога
← →
data © (2008-08-29 13:53) [3]сорри, не уточнила, под "действием" я понимала Insert одной записи, Update одной записи.
← →
data © (2008-08-29 13:57) [4]
> размером REDO-лога
спасибо, Игорь.
← →
Игорь Шевченко © (2008-08-29 14:14) [5]
> Insert одной записи, Update одной записи.
сколько угодно, ограничения нет, пока место в REDO не кончится.
то есть, update сотен миллионов записей в одной транзакции вполне допустимое действие
← →
data © (2008-08-29 14:39) [6]
> то есть, update сотен миллионов записей в одной транзакции
> вполне допустимое действие
как раз это и нужно.. спасибо еще раз.
← →
Petr V. Abramov © (2008-08-29 14:41) [7]
> Игорь Шевченко © (29.08.08 13:51) [2]
только не REDO, а UNDO, и не лога, а tablespace
:)
← →
Vlad Oshin © (2008-08-29 14:44) [8]У Тома Кайта в начале первой книги(из 2х, "Oracle для профессионалов") про это написано подробнее.
В т.ч. как конфигурируются, из каких соображений.
Никак не прочитаю.. :)
← →
data © (2008-08-29 14:51) [9]
> REDO, а UNDO, и не лога, а tablespace
А если этого спейса всеже не хватит - транзакция корректно откатится?
← →
Petr V. Abramov © (2008-08-29 14:55) [10]
> data © (29.08.08 14:51) [9]
да
← →
data © (2008-08-29 15:15) [11]То есть получается, если планируется больше update/insert, чем выдерживает Undo, то нужно разделять на неск. транзакций. Есть ли способы вычислить не опытным путем (эксперименты нежелательны) хотя бы приблизительно кол-во единичных update/insert, доступных для одной транзакции, по известному размеру UNDO и известному формату таблицы, куда будут вставляться (или меняться, если есть) записи?
← →
Vlad Oshin © (2008-08-29 15:24) [12]
> У Тома Кайта в начале первой книги(из 2х, "Oracle для профессионалов")
> про это написано подробнее.
там :) вычисляется до процента, кажется
по-логике, туда должна попасть инф-ция, чтоб можно было восстановить
insert - не тяжелая оп-ция, для восстановления достаточно id
delete тяжелее, запись надо скэшировать, чтоб восстановить
update, насколько помню, более тежеловесная оп-ция. Это и delete и insert
А если предусмотрен каскадный update.. как тут вычислить?
← →
Игорь Шевченко © (2008-08-29 15:34) [13]
> если планируется больше update/insert, чем выдерживает Undo,
> то нужно разделять на неск. транзакций
нужно увеличивать undo
← →
data © (2008-08-29 15:40) [14]
> А если предусмотрен каскадный update.. как тут вычислить?
каскадного нет.
Операция такая: из источника (пусть это будет текстовый файл) с известным конечным кол-вом записей с уникальными ID нужно вставить все эти записи в некую таблицу БД, если запись там уже есть (определяется по полю с ID), то сделать update.
Хочется до начала операции знать на сколько транзакций ее делить, взависимости от кол-ва записей в текстовом файле, текущего свободного объема в UNDO, формата записей (формат у всех одинаковый и от операции к опрерации не меняется, таблица - приемник тоже всегда одна и таже).
← →
data © (2008-08-29 15:46) [15]
> нужно увеличивать undo
залив происходит в автоматич. режиме ночью, и мы не можем знать заранее сколько планируется залить. Может быть 0, может быть неск. миллионов. Не зависит от нас, и с достаточной для настройки Undo точностью пока не прогнозируется. Для железного срабатывания в данной ситуации, мне кажется проще бить на транзакции, чем гадать с Undo, тем более, каждая прощелканная загрузка плохо отражается на бизнесе :).
← →
Petr V. Abramov © (2008-08-29 16:02) [16]
> data © (29.08.08 15:15) [11]
> Есть ли способы вычислить не опытным путем (эксперименты
> нежелательны) хотя бы приблизительно кол-во единичных update/insert
ну плюс-минус много лаптей по карте так: смотришь размер вставляемой записи (сколько какой datatype занимает описано в Concepts) или (размер обновляемых полей) x 2, прибавляешь байт 100 на заголовок блока, получаешь размер change-вектора (которые в undo и пишутся) на insert/update записи. Если помножишь на 2-3, есть большие шансы, что влезет.
← →
Petr V. Abramov © (2008-08-29 16:05) [17]> Petr V. Abramov © (29.08.08 16:02) [16]
забыл про блоки индексов.
← →
Vlad Oshin © (2008-08-29 16:13) [18]
> У Тома Кайта в начале первой книги(из 2х, "Oracle для профессионалов")
:)
категорически не советуется
> бить на транзакции
да и зачем нужны будут, первые изменения, если остальные не произойдут?
Хотя, может и нужны, от логики зависит..
Но думается, что сделать размер отката поболее предпочтительнее. Потом можно и сократить.
Жалко книжка дома..
← →
Petr V. Abramov © (2008-08-29 16:19) [19]
> да и зачем нужны будут, первые изменения, если остальные
> не произойдут?
затем что можно будет подправить и залить проблемный кусок отдельно.
← →
Ламо777 (2008-08-29 16:30) [20]А savepoint"ы не помогут?
← →
ANB (2008-08-29 17:13) [21]
> А savepoint"ы не помогут?
Нет.
Страницы: 1 вся ветка
Текущий архив: 2008.10.19;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.005 c