![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
leniviy |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 552 Регистрация: 8.2.2003 Где: Спб Репутация: нет Всего: 5 |
Есть многопоточная прога, которая работает с ораклом и считает интернет трафик юзера.
Инфа о трафике приходит маленькими кусочками в случайный поток. Входная структура:
На одного юзера и день кусок трафика может прийти в разные потоки. Задача: если сумма traffic превышает 30кб в день, надо создать выполнить определенное действие. Единожды. В памяти хранить нельзя, их слишком много, поэтому создал таблицу с теми же полями, что в структуре:
Программа работает так:
Я считаю, что в этой схеме нет ошибок, но не уверен. Я раньше так не делал. Это сообщение отредактировал(а) leniviy - 29.1.2013, 10:40 |
||||||
|
|||||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
Удаляться данные из табилцы могут?
Если да, надо анализировать rowcount апдейта и возвращаться на insert, если он 0. Селект тут можно опустить, если инструментарий позволяет получить returning апдейта. Если в пределах транзакции ты добавляешь/обновляешь несколько записей, думай о дедлоках. наверное ошибка здесь т.к. volume, по сути это дельта, мне кажется надо newvolume - volume сравнивать с freevol Это сообщение отредактировал(а) Zloxa - 29.1.2013, 11:54 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
и... на сколько я понимаю суть, вероятность апдейта у нас куда выше вероятности инсерта, потому, наверное, лучше пробовать сразу апдейтить, если rowcount = 0, переходить на insert
Это сообщение отредактировал(а) Zloxa - 29.1.2013, 12:16 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
leniviy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 552 Регистрация: 8.2.2003 Где: Спб Репутация: нет Всего: 5 |
удаляются через два дня
возможно обновление нескольких записей в рамках транзакции, если кусок трафика начался вчера, а закончился сегодня. Коммит каждый раз делать не могу: в проге есть фича replay transaction при отказе ноды кластера, и для простоты есть только одна точка, с которой он повторяет транзакцию целиком. да, уже сам нашел. |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
если только в этом случае, то, думаю, дедлока можно избежать если мы строго упорядочим операции в одной транзакции по дате. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Oracle" | |
|
Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Oracle | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |