powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Обработка списка счетов
6 сообщений из 6, страница 1 из 1
Обработка списка счетов
    #32900249
Физ-Юр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть список счетов, который раз в сутки нужно обрабатывать. Каждый счет может менять свои реквизиты по некоторым правилам. Логично выполнять обработку в хранимой процедуре. Что в данном случае будет более правильным: использовать update-запросы, массово обновляющие счета по выполнению набора условий или открыть курсор по списку счетов и работать с одной записью за раз? Интересует как производительность, так и наименьшее количество блокировок записей в момент обработки.
...
Рейтинг: 0 / 0
Обработка списка счетов
    #32900341
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый Физициско-Юридициский.
А можно немного по подробнее? Тут несклолько непонятных моментов с точки зрения целостности данных. Вы хотите, чтоб усе было одной большой транзакцией (если вдруг ошибка, начинаем сначала, а так, умерла, так умерла) или возможно делать маленькими транзакциями? В какое время опять таки - кады база нагружена, или кады нет.

У меня было нечто подобное - надо было обновлять (менять, вставлять, удалять) некие записи ежедневно.

Обычно одна процедурка профигачивала по всей таблице и делала следуюшие действия:
1) Для новых записей всталяла с флагом disabled
2) Для уже существующих тоже всталяла их обновленные версии с флагом disabled
3) Для тех, кого надо удалять пока ничего не делала
При этом все делалось маленькими транзакциями, пользователи никаких изменений не замечали.

Потом работала вторая процедурка:
1) Для новых записей флаг disabled перводился в enabled
2) Для уже существующих флаги менялись местами
3) Для тех, кого надо удалять флаг выставлялся в disabled
Все делалось _одной_ транзакцией - пользователи получали сразу новый вариант

Ну и под конец третья процедурка-чистильщик фигачила по всем записям с флагом disabled и удаляла их, каждую в своей маленькой транзакции.

Сим я добивался достаточно надежной работы. Тем более, что сей update базы иногда занимал до 12 часов (в среднем 3-4 часа). Но все происходило незаметно и гладко для конечных пользователей.
...
Рейтинг: 0 / 0
Обработка списка счетов
    #32900555
Физ-Юр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrushok,

Одной большой транзакции не требуется, вполне устроит куча маленьких. Планируется обработка счетов когда никто с базой не работает, но хотелось бы иметь возможность запускать ее в любое время, не мешая другим пользователям работать. И еще, не совем понятно, почему вторая процедура в вашем примере должна работать одной транзакцией?
...
Рейтинг: 0 / 0
Обработка списка счетов
    #32900705
Фотография Va1entin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Замечание:
Производительность операций на курсорах
сильно зависит от целевой базы данных.
...
Рейтинг: 0 / 0
Обработка списка счетов
    #32902207
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Физициский Де-Юре
Для меня ето важно. У меня не счета, у меня объекты, которые связаны друг с другом и пользователь должен видеть всегда базу целостной. Так как в базу (теретицески) могут лазить и с Штатов, и с Европы, и с Японии - холостое время угадать сложно. Если у Вас счета развязанны друг от друга - можно делать маленькими транзакциями.

У меня там еще один трюк. Дело в том, что логика, какие объекты устарели - довольно развесистая и на самом деле за первый проход выставляется флаг for_delete для удалякмых объетов. Но пока, они живые и здравствуют. А вот вторая процедурка уже всю выборку с for_delete переводить в disabled. Но ето мой частный случай и его _частное_ решение - у Вас могут быть совсем другие требования.
...
Рейтинг: 0 / 0
Обработка списка счетов
    #32902783
Физ-Юр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Va1entinЗамечание:
Производительность операций на курсорах
сильно зависит от целевой базы данных.
В качестве базы будет использоваться Sybase ASA.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Обработка списка счетов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]