Я могу заменить точками сохранения запуск новых транзакций в Oracle?

Я собираюсь предположить, что Вы хотите соответствовать против шестнадцатеричного печатного представления SHA1, а не против эквивалентных 20 необработанных байтов. Кроме того, я собираюсь предположить, что рассматриваемый SHA1 использует только строчные буквы для представления шестнадцатеричных цифр. Необходимо будет скорректировать регулярное выражение, если требования отличаются.

grep -o -E -e "[0-9a-f]{40}"

будет соответствовать такому SHA1. Необходимо будет перевести вышеупомянутое регулярное выражение с диалекта egrep на любой инструмент, который Вы, оказывается, используете. Так как соответствие должно быть точно 40 символами долго, я не думаю, что Вы подвергаетесь риску случайно соответствующих слов. Я не знаю ни о каких словах с 40 символами, которые состоят только из букв A через f.

редактирование:

Еще лучше: используйте А Regex для соответствия SHA1, поскольку его решение включает проверку границы слова в обоих концах. Я пропустил это выше.

6
задан Jason Baker 3 October 2009 в 19:54
поделиться

2 ответа

Транзакция должна быть значимой единицей работы. Но то, что составляет Единицу работы, зависит от контекста. В системе OLTP единицей работы может быть одно лицо вместе с их адресной информацией и т. Д. Но это звучит так, как будто вы реализуете некоторую форму пакетной обработки, которая загружает множество людей.

Если у вас есть Проблемы с ORA-1555 почти наверняка связаны с тем, что у вас есть длительный запрос, предоставляющий данные, которые обновляются другими транзакциями. Фиксация внутри вашего цикла способствует циклическому использованию сегментов UNDO и, таким образом, будет иметь тенденцию к увеличению вероятности того, что сегменты, на которые вы полагаетесь для обеспечения согласованности чтения, будут повторно использованы. Так что не делать этого, вероятно, хорошая идея.

Другой вопрос, является ли использование SAVEPOINT решением. Я' Я не уверен, какое преимущество это даст вам в вашей ситуации. Поскольку вы работаете с Oracle10g, возможно, вам следует рассмотреть возможность использования вместо этого массового журнала ошибок DML .

В качестве альтернативы вы можете захотеть переписать управляющий запрос, чтобы он работал с небольшими порциями данных. Не зная больше о специфике вашего процесса, я не могу дать конкретных советов. Но в целом, вместо открытия одного курсора для 10000 записей, может быть лучше открыть его двадцать раз для 500 строк за раз. Еще одна вещь, которую следует учитывать, - можно ли сделать процесс вставки более эффективным, например, с помощью массового сбора и FORALL.

В качестве альтернативы вы можете захотеть переписать управляющий запрос, чтобы он работал с небольшими порциями данных. Не зная больше о специфике вашего процесса, я не могу дать конкретных советов. Но в целом, вместо открытия одного курсора для 10000 записей, может быть лучше открыть его двадцать раз для 500 строк за раз. Еще одна вещь, которую следует учитывать, - можно ли сделать процесс вставки более эффективным, например, с помощью массового сбора и FORALL.

В качестве альтернативы вы можете захотеть переписать управляющий запрос, чтобы он работал с небольшими порциями данных. Не зная больше о специфике вашего процесса, я не могу дать конкретных советов. Но в целом, вместо открытия одного курсора для 10000 записей, может быть лучше открыть его двадцать раз для 500 строк за раз. Еще одна вещь, которую следует учитывать, - можно ли сделать процесс вставки более эффективным, например, с помощью массового сбора и FORALL.

скажем, используя массовый сбор и FORALL.

скажем, используя массовый сбор и FORALL.

5
ответ дан 17 December 2019 в 02:31
поделиться

Некоторые мысли. ..

  1. Мне кажется, что одним из пунктов асктомной ссылки было правильно определить размер отката / отмены, чтобы избежать 1555-х годов. Есть ли причина, по которой это невозможно? Как он отмечает, купить диск намного дешевле, чем писать / поддерживать код для обхода ограничений отката (хотя мне пришлось сделать двойной дубль после прочтения ценника в 250 долларов для диска 36 ГБ - этот поток начался в 2002 году. ! Хорошая иллюстрация закона Мура!)
  2. Эта ссылка (Burleson) показывает одну возможную проблему с точками сохранения.
  3. Находится ли ваша транзакция на этапах 2, 3 и 5 в вашем втором сценарии? Если да, то я бы сделал это - зафиксировал каждую транзакцию. Мне кажется, что сценарий 1 представляет собой набор транзакций, объединенных в одну?
1
ответ дан 17 December 2019 в 02:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: