|
Количество операций в транзакции | ☑ | ||
---|---|---|---|---|
0
User_Agronom
10.04.14
✎
17:21
|
Есть обработка, которая генерит много-много документов.
Но в процессе может быть создан некорректный элемент. Тогда получиться часть документов сгенерирована, а часть нет. Что недопустимо. Есть идея использовать транзакцию. Т.е. перед началом генерации начать транзакцию, а если нашел ошибку транзакцию отменить. Вопросы: 1. Будет ли работать этот вариант? 2. Какие неприятности могут встретиться? 3. Сколько документов (в штуках) может быть в транзакции? PS Другие пути знаю, но эта обработка уже написана, поэтому этот самый наименее затратный путь. |
|||
1
fisher
10.04.14
✎
17:25
|
1. Работать будет, если не (см. ниже)
2. Транзакции не рассчитаны на массовые операции - упор в ресурсы может случиться. 3. Зависит от сервака и объемов изменяемых данных. |
|||
2
Maxus43
10.04.14
✎
17:27
|
поидее можно увидеть будет что каждая следующая "5-ти тыщная" операции будет медленнее и медленнее, опять же от объёма зависит.
|
|||
3
fisher
10.04.14
✎
17:29
|
Короче, с какого-то момента может начать жутко свопить и потом что фиксация транзакции, что её откат будут занимать прорву времени. Не говоря уже о том, что другим пользователям все это время нехорошо будет.
|
|||
4
Maxus43
10.04.14
✎
17:31
|
обмены напримерв транзакции идут, загрузка, у нас бывает и по 2 часа прёт, несколько мильёнов плохих данных... и ничо вроде, фиксится потом. Правда юзеры обычно курят бамбук в это время
|
|||
5
Зойч
10.04.14
✎
17:31
|
на эскалацию блокировок можно нарваться
|
|||
6
Зойч
10.04.14
✎
17:32
|
но если нужно либо все либо ничего то транзакция правильный вариант.
Но почему нужны все 5 тыщ документов одновременно непонятно |
|||
7
User_Agronom
10.04.14
✎
17:37
|
(6) Там две базы и два буха. Один бух выгружает в файл, второй загружает из этого файла. Это уже написано. Но, в случае ошибки, повторная загрузка плодит дубли.
Говорится о 150-200 документах за раз. Базы файловые. Нужно решить задачу с минимальными потерями. |
|||
8
ДенисЧ
10.04.14
✎
17:38
|
(7) переделать обработку, чтобы дубли не возникали - не предлагать?
|
|||
9
Зойч
10.04.14
✎
17:39
|
>>Но, в случае ошибки, повторная загрузка плодит дубли
Лучше пойти по исправлению этого момента |
|||
10
Gepard
10.04.14
✎
17:39
|
(8) +1 по гуиду
|
|||
11
Зойч
10.04.14
✎
17:40
|
А то грузишь 9 999 документов 5 часов а на 10 000 ошибка.
И ты такой "бл.....я" |
|||
12
User_Agronom
10.04.14
✎
17:41
|
(8) см (0) PS Другие пути знаю, но эта обработка уже написана, поэтому этот самый наименее затратный путь
Вставить три строки самый быстрый вариант. |
|||
13
_fvadim
10.04.14
✎
17:43
|
(12) и самый неправильный
а если бух случайно предыдущий файл ещё раз загрузила? |
|||
14
Maxus43
10.04.14
✎
17:50
|
по сабжу да, транзакция спасёт.
То что это всё кривоватенько организовано - уже сказано |
|||
15
User_Agronom
10.04.14
✎
17:50
|
(9) Согласен. Думал об этом.
(13) Переписать: 1. Разобраться в назначении обработки. 2. Разобраться в структуре файла выгрузки. 3. Разобраться в коде загрузки. 4. Переделать код. 5. Тестировать код 6. Если тест не прошел переход к п.4 С транзакцией. 1. Найти цикл. 2. Перед началом цикла вставить команду начала транзакции 3. После конца цикла вставить команду конца транзакции 4. В теле цикла вставить проверку и, в случае непрохождения, команду отката транзакции и завершения процедуры. Не в пример быстрее. Фактор времени актуален. |
|||
16
User_Agronom
10.04.14
✎
17:51
|
(14) Организовано не мной. Нужно с минимальными потерями устранить эту недоработку.
|
|||
17
Зойч
10.04.14
✎
17:53
|
(15) а как борятся с ошибками? вот ошибка в файле и не грузится, как исправлять?
|
|||
18
Maxus43
10.04.14
✎
17:55
|
делай транзакцию, раз переделывать не будешь всё равно.
200 доков за раз - вобще ниочем |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |