|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Сразу скажу, я не знаток в шарпе, есть тестовый вариант кода Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58.
выгребаются фотки из базы и создается на их основе превью. Жопа в том, что команда qUpdate.ExecuteNonQuery(); вываливается по таймауту с сообщением авторTimeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding При этом, если я в селекте ограничу выборку Top 1. то все проходит "на ура". При этом таблица точно не лочится, так как я имею к ней доступ и могу свободно работать во время выполнtния update ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 10:37 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
ther, Удерживать открытое соединение с базой слишком долго, это плохая идея в случае c web. Как вариант, можно проводить работу с изображениями обдельно от работы с базой, затем передать список изменений для update. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 10:57 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
ther Код: c# 1.
а с какой целью закомментирована строчка? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 10:58 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
therПри этом, если я в селекте ограничу выборку Top 1.копайте дальше. Сколько записей? Миллион? Время таймаута реальное? Время апдейта необходимое? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:05 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
therПри этом таблица точно не лочится, так как я имею к ней доступ и могу свободно работать во время выполнtния update Уверены? Что значит работать? SELECT накладывает shared lock, что позволяет другим транзакциям читать из таблицы, но не изменять. Так что работать Вы можете, а вот UPDATE не пройдёт. Смотрите какого типа блокировки и на какие объекты (строки, таблицы, индексы) наложены. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:25 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
ther, для простоты сначала считайте в словарь Dictionary<string, byte[]> данные из RPF_ID, RPF_Photo. Закройте reader (dr = query.ExecuteReader()). А после этого в цикле делайте Resize и UPDATE. А вообще предлагаю Вам готовить preview сразу при загрузке фотографии. И разом вставлять и в RPF_Photo, и RPF_Preview. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:29 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Можно легко проверить - поставить в селекте хинт WITH (NOLOCK) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:36 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Petro123Сколько записей? Миллион?Петя как всегда не читатель. Обновление идет только для одной записи ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:37 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Дмитрий Мухдля простоты сначала считайте в словарь Dictionary<string, byte[]>А если там несколько сотен фоток? У него память лопнет. Да и не дождется перекачки на клиента. Можно просто прочитать все ID-шники картинок в List, потом по одной дергать картинки из базы, закрывая ридер. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:39 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Пасиб на идеи. Фотки тянутся из другой базы в полном размере (база->база), там не было необходимости их сжимать. Дмитрий Мух Пасиб, попробую через дикт ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:44 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Shocker.ProДмитрий Мухдля простоты сначала считайте в словарь Dictionary<string, byte[]>А если там несколько сотен фоток? У него память лопнет. В коде я вижу select top 3 И я же пишу, сначала, для простоты. Чтобы он убедился в блокировках. Так ведь не поверит Да и с чего память на нескольких сотнях лопнет? Фотка 2-3 MB, несколько сотен - это 400-600 MB. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:45 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Shocker.ProPetro123Сколько записей? Миллион?Петя как всегда не читатель. Обновление идет только для одной записиторопыга, для одной записи у него работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:45 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Дмитрий МухВ коде я вижу select top 3 экспериментальное, по всей видимостиtherесли я в селекте ограничу выборку Top 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:46 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Petro123для одной записи у него работает.ты не почитал код. Падает на апдейте, а про одну запись он говорит при выборке. Мух, скорее всего, прав, но, думаю, самое простое поставить NOLOCK и вряд ли придется менять что-то еще ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:47 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
therФотки тянутся из другой базы в полном размере (база->база), там не было необходимости их сжимать. Дмитрий Мух Пасиб, попробую через дикт В той базе нет необходимости, а в этой есть. Я вам предлагаю перед тем, как вставить в Эту базу и выполнить Resize. И вставить в таблицу Ref_PersonPhoto разом и RPF_Photo, и RPF_Preview. Это сложно? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:48 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Я в цикле буду выбирать по 10-100 штук(еще не решил) загонять в дикт и обрабатывать ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:50 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Shocker.Proсамое простое поставить NOLOCK и вряд ли придется менять что-то еще Вариант конечно. Но чем он аукнется? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:51 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
да, сначала попробую NOLOCK , если не выйдет, гляну на дикт. Спасибо еще раз ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:52 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Дмитрий Мух по идее ничем, это не критичная таблица и ее никто, кроме сервака не обрабатывает. Усер туда не лезет ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:53 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Shocker.ProПадает на апдейте, а про одну запись он говорит при выборке.это не отменяет знание анализов у врача) - сколько висит апдейт и нужен ли промежуточный коммит для базы. Но ты мешаешь ТСу отвечать на простые вопросы мемберов. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:54 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Дмитрий МухВариант конечно. Но чем он аукнется?По идее ничем - цикл ведь идет только вперед, он не будет дергать повторно только что измененную запись. А если ошибка вылезет, то она вылезет сразу. Код: sql 1.
тоже вариант, никаких словарей, в общем-то и не надо ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:55 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Shocker.Proтоже вариант, никаких словарей, в общем-то и не надоой, ну то есть - надо для этих 10-100-1000 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:56 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Shocker.Pro, Никаких блокировок там нет. А нужен ли пакетный режим решается индивидуально. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 12:02 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Petro123Никаких блокировок там нетSelect без Nolock - это уже блокировка. Тебе уже сказалиДмитрий МухSELECT накладывает shared lockа, ну да, для тебя авторитетов не существует. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 12:15 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Shocker.ProSelect без Nolock - это уже блокировка. Тебе уже сказаливернулись ко временам access? Табличной блокировке. Смешно. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 12:22 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Petro123Shocker.ProSelect без Nolock - это уже блокировка. Тебе уже сказаливернулись ко временам access? Табличной блокировке. Смешно. Удачи! Почитай документацию, полезно: Transaction Locking and Row Versioning Guide . Shared (S) locks used for read operations that do not change or update data, such as a SELECT statement. Shared (S) locks allow concurrent transactions to read (SELECT) a resource under pessimistic concurrency control. No other transactions can modify the data while shared (S) locks exist on the resource. Shared (S) locks on a resource are released as soon as the read operation completes, unless the transaction isolation level is set to repeatable read or higher, or a locking hint is used to retain the shared (S) locks for the duration of the transaction. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 12:32 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Shocker.ProДмитрий МухВариант конечно. Но чем он аукнется?По идее ничем - цикл ведь идет только вперед, он не будет дергать повторно только что измененную запись. А если ошибка вылезет, то она вылезет сразу. Код: sql 1.
тоже вариант, никаких словарей, в общем-то и не надо Вперёд? Я так понял, что у ТС две базы, записи из одной добавляются в другую, а код, что мы видим, бежит по ним и обновляет. Какие индексы при этом есть на таблице, мы не знаем. Как там что на уровне страниц будет перемешано, соответственно тоже. Откуда такая уверенность, что только вперёд? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 12:42 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
skyANAЯ так понял, что у ТС две базыхм, а я так понял, что qUpdate и query создаются с применением одного коннекшена ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 12:45 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Shocker.ProskyANAЯ так понял, что у ТС две базыхм, а я так понял, что qUpdate и query создаются с применением одного коннекшена Да, верно. skyANAзаписи из одной добавляются в другую, а код, что мы видим, бежит по ним и обновляет Так соединение в стартовом топике одно, то я и трактую следующее: therФотки тянутся из другой базы в полном размере (база->база) как то, что есть ещё какой-то код, что переливает фотки из базы в базу. И вот идёт добавление, а мы берём и грязно читаем. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 12:49 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Shocker.Pro, вообщем я бы поостерёгся советовать WITH (NOLOCK) тому, кто явно не в теме, что происходит. Я за то, чтобы формировать preview до вставки в Ref_PersonPhoto. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 12:52 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
skyANA, Нефиг трактовать, там одно соединение с MARS ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 14:13 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
он сам себя и блокирует ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 14:16 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
ViPRos, дак я про то и пишу, что он сам себя и блокирует. Ты какое решение предлагаешь-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 14:19 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
skyANA, изучить транзакции в MARS ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 14:26 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
ViPRosskyANA, изучить транзакции в MARS На MARS то ты к чему напираешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 14:32 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
skyANA, к тому что каждая команда сейчас работает в собственной транзакции (потому и блокировки), а надо бы в одной транзакции ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 14:39 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
skyANAViPRosskyANA, изучить транзакции в MARS На MARS то ты к чему напираешь? А без MARS этот код просто не будет работать ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 14:40 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
ViPRosskyANAпропущено... На MARS то ты к чему напираешь? А без MARS этот код просто не будет работать Верно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 15:08 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
ViPRosskyANA, к тому что каждая команда сейчас работает в собственной транзакции (потому и блокировки), а надо бы в одной транзакции И что делать, если на одном из ста Resize упадёт? Читаем следующую запись, или откатываемся? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 15:11 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
skyANAViPRosskyANA, к тому что каждая команда сейчас работает в собственной транзакции (потому и блокировки), а надо бы в одной транзакции И что делать, если на одном из ста Resize упадёт? Читаем следующую запись, или откатываемся? Да что тебе надо, то и делаешь, Resize меня не волнует :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 15:19 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
Кстати подумал, что тема пересекается с этой: Стандартный стек технологий для .net программиста ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 15:31 |
|
SqlCommand Select и Update в циклеTimeout expired.
|
|||
---|---|---|---|
#18+
skyANA, ADO.NET ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 15:47 |
|
|
start [/forum/topic.php?all=1&fid=18&tid=1355101]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
others: | 254ms |
total: | 415ms |
0 / 0 |