Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
03.02.2005, 20:14
|
|||
|---|---|---|---|
|
|||
Обработка списка счетов |
|||
|
#18+
Есть список счетов, который раз в сутки нужно обрабатывать. Каждый счет может менять свои реквизиты по некоторым правилам. Логично выполнять обработку в хранимой процедуре. Что в данном случае будет более правильным: использовать update-запросы, массово обновляющие счета по выполнению набора условий или открыть курсор по списку счетов и работать с одной записью за раз? Интересует как производительность, так и наименьшее количество блокировок записей в момент обработки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.02.2005, 23:01
|
|||
|---|---|---|---|
Обработка списка счетов |
|||
|
#18+
Уважаемый Физициско-Юридициский. А можно немного по подробнее? Тут несклолько непонятных моментов с точки зрения целостности данных. Вы хотите, чтоб усе было одной большой транзакцией (если вдруг ошибка, начинаем сначала, а так, умерла, так умерла) или возможно делать маленькими транзакциями? В какое время опять таки - кады база нагружена, или кады нет. У меня было нечто подобное - надо было обновлять (менять, вставлять, удалять) некие записи ежедневно. Обычно одна процедурка профигачивала по всей таблице и делала следуюшие действия: 1) Для новых записей всталяла с флагом disabled 2) Для уже существующих тоже всталяла их обновленные версии с флагом disabled 3) Для тех, кого надо удалять пока ничего не делала При этом все делалось маленькими транзакциями, пользователи никаких изменений не замечали. Потом работала вторая процедурка: 1) Для новых записей флаг disabled перводился в enabled 2) Для уже существующих флаги менялись местами 3) Для тех, кого надо удалять флаг выставлялся в disabled Все делалось _одной_ транзакцией - пользователи получали сразу новый вариант Ну и под конец третья процедурка-чистильщик фигачила по всем записям с флагом disabled и удаляла их, каждую в своей маленькой транзакции. Сим я добивался достаточно надежной работы. Тем более, что сей update базы иногда занимал до 12 часов (в среднем 3-4 часа). Но все происходило незаметно и гладко для конечных пользователей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.02.2005, 08:36
|
|||
|---|---|---|---|
|
|||
Обработка списка счетов |
|||
|
#18+
andrushok, Одной большой транзакции не требуется, вполне устроит куча маленьких. Планируется обработка счетов когда никто с базой не работает, но хотелось бы иметь возможность запускать ее в любое время, не мешая другим пользователям работать. И еще, не совем понятно, почему вторая процедура в вашем примере должна работать одной транзакцией? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.02.2005, 10:17
|
|||
|---|---|---|---|
Обработка списка счетов |
|||
|
#18+
Замечание: Производительность операций на курсорах сильно зависит от целевой базы данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.02.2005, 19:00
|
|||
|---|---|---|---|
Обработка списка счетов |
|||
|
#18+
2 Физициский Де-Юре Для меня ето важно. У меня не счета, у меня объекты, которые связаны друг с другом и пользователь должен видеть всегда базу целостной. Так как в базу (теретицески) могут лазить и с Штатов, и с Европы, и с Японии - холостое время угадать сложно. Если у Вас счета развязанны друг от друга - можно делать маленькими транзакциями. У меня там еще один трюк. Дело в том, что логика, какие объекты устарели - довольно развесистая и на самом деле за первый проход выставляется флаг for_delete для удалякмых объетов. Но пока, они живые и здравствуют. А вот вторая процедурка уже всю выборку с for_delete переводить в disabled. Но ето мой частный случай и его _частное_ решение - у Вас могут быть совсем другие требования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=32&mobile=1&tid=1546065]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 333ms |

| 0 / 0 |
