|
|
|
Как реализовать такой механизм?
|
|||
|---|---|---|---|
|
#18+
У меня такая проблема: есть таблица с данными и процедура, которая эти данные пересчитывает. Время выполнения этой процедуры от минуты до часа в зависимости от входных параметров. Нужно решать такие задачи: - Если данные сейчас пересчитываются, то при обращении к ним генерировать ошибку, которая потом будет отлавливаться в клиенте, - Если данные сейчас пересчитываются, то не давать запустить процедуру пересчета еще раз, - Корректная работа, если процедура пересчета была прервана аварийно (разрыв соединения и т.д.), то есть определить, что данные неверны и их нужно пересчитать. Как это реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2002, 18:56:47 |
|
||
|
Как реализовать такой механизм?
|
|||
|---|---|---|---|
|
#18+
Сохраняй во вспомогательной таблице флаг запуска при старте и сбрасывай его при окончании пересчета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2002, 19:21:47 |
|
||
|
Как реализовать такой механизм?
|
|||
|---|---|---|---|
|
#18+
только надо учесть возможность автоматического сбрасывания такого флага в случае аварийного завершения... например job'ом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2002, 20:33:47 |
|
||
|
Как реализовать такой механизм?
|
|||
|---|---|---|---|
|
#18+
2flatron: проблема как раз в том чтобы определить, выполняется ли сейчас процедура пересчета, или нет. На что вешать Job для сбрасывания этого флага? Job на определенное время не годится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2002, 12:20:12 |
|
||
|
Как реализовать такой механизм?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Как-то так, по-моему, должно работать. Типа, если процедура работает, то сработает таймаут и вернётся ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2002, 12:28:12 |
|
||
|
Как реализовать такой механизм?
|
|||
|---|---|---|---|
|
#18+
Можно делать расчет во временную таблицу, тогда ваши обращения к пред. расчету не будут тормозиться. Если расчет сбросить или остановить потеряется только предв. расчет. Определить что выполняется расчет, можно или флажками/блокировкой врем. таблицы/существованием врем. таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2002, 12:29:52 |
|
||
|
Как реализовать такой механизм?
|
|||
|---|---|---|---|
|
#18+
не знаю какая у тебя конкретно задача.... когда то я делал так.. по порядку выставляем флаг... данные для расчета сливаем во временную таблицу(чтоб не блокировать) и занимаемся ими... всю модификацию с основных данных переносим на другие таблички(удаление ,вставка)(по типу лога) основные таблицы - толко читаем.... по завершению выставлям флаг+1(полный запрет)... приводим все таблицы в нормальную форму (можно по ходу и досчитывать свою обработку)..... снимаем все флаги..... а в принципе вариантов много .... все зависит на сколько интенсивно используются данные.... иногда приходится разносить такие реализации на разные сервера... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2002, 15:18:29 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32062070&tid=1819281]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 354ms |

| 0 / 0 |
