#0
by Lama12
Есть большой запрос. В нем несколько вложенных полностью повторяющих друг друга (да, можно вытащить во временные таблицы, но это пока отложим). Допустим во время выполнения первого вложенного запроса в базе одни данные, во время другого - другие. Вопрос - что будет в результатах запроса (насколько помню 1С использует грязное чтение)? Будет ли сервер пытаться актуализировать результаты первого вложенного запроса после изменения данных в базе или это мой бред?
#0
by Lama12
Есть большой запрос. В нем несколько вложенных полностью повторяющих друг друга (да, можно вытащить во временные таблицы, но это пока отложим). Допустим во время выполнения первого вложенного запроса в базе одни данные, во время другого - другие. Вопрос - что будет в результатах запроса (насколько помню 1С использует грязное чтение)? Будет ли сервер пытаться актуализировать результаты первого вложенного запроса после изменения данных в базе или это мой бред?
#0
by Lama12
Есть большой запрос. В нем несколько вложенных полностью повторяющих друг друга (да, можно вытащить во временные таблицы, но это пока отложим). Допустим во время выполнения первого вложенного запроса в базе одни данные, во время другого - другие. Вопрос - что будет в результатах запроса (насколько помню 1С использует грязное чтение)? Будет ли сервер пытаться актуализировать результаты первого вложенного запроса после изменения данных в базе или это мой бред?
#0
by Lama12
Есть большой запрос. В нем несколько вложенных полностью повторяющих друг друга (да, можно вытащить во временные таблицы, но это пока отложим). Допустим во время выполнения первого вложенного запроса в базе одни данные, во время другого - другие. Вопрос - что будет в результатах запроса (насколько помню 1С использует грязное чтение)? Будет ли сервер пытаться актуализировать результаты первого вложенного запроса после изменения данных в базе или это мой бред?
#1
by Odavid
>>насколько помню 1С использует грязное чтение что есть по-вашему "грядное стение от 1С"??
#3
by ДенисЧ
Хватит уже клоуничать. Если ты не знаешь этого, не надо показывать свою тупость. Ты её и так показал. Тут уже на усмотрение сервера. По моим наблюдениям, одинаковые запросы с одинаковыми параметрами выполняются один раз
#4
by Odavid
запрос выполняется в транзакции, поэтому запрашиваемые таблицы блокируются на время транзакции, и если в запросе получают из одних таблиц данные - они не меняются во время запроса.
#9
by Ёпрст
>>>запрос выполняется в транзакции, поэтому запрашиваемые таблицы блокируются на время транзакции, Почем нынче грибочки то у вас там ?
#13
by Lama12
Грязное чтение. Идет запись данных в базу в транзакции. Транзакция еще не закрыта. Но запросами эти данные уже читаются. Проверял. Именно так и работает.
#14
by vvf1973
как же без этого...мартышки в клетке...банка пауков...дамский коллектив....они просто бледнеют перед страстями уютного коллективчика 1с-ников :-)
#16
by Sammo
Сильно зависит от получившегося плана запроса. Вполне возможно, что будет чтение данных 1 раз.
#18
by Lama12
Мда... что-то подобное подозревал. Просто запрос на Postgre выполняется 20 минут, а на тех же данных в MS SQL server уже больше часа... Буду переписывать на временные таблицы.
#21
by Lama12
Да, для изменения не использую. Там запрос не в проведении документа. Скорость работы не сильно важна.
#22
by MKZM
Вообще, хотя я могу ошибаться, у мс скл по умолчанию рид коммитед, получается 1с сознательно снижает уровень изоляции?
#27
by Odavid
>>Просто запрос на Postgre выполняется 20 минут, а на тех же данных в MS SQL server уже больше часа... блокировки?
#28
by Lama12
Ну если хотите могу и запрос выложить :) Но это для любителей поковыряться в портянках :-D
#31
by Lama12
С трассировкой в SQL сложно. Точнее, до нее буду опускаться если и временные таблицы не помогут.
#32
by KeyKB
Вообщем два одинаковых вложенных запроса будут выполняться много раз, и данные могут отличаться. Что бы этого избежать, надо использовать "управляемые блокировки", но соответственно никто не сможет с этими таблицами работать
#36
by Odavid
>>Грязное чтение. Идет запись данных в базу в транзакции. Транзакция еще не закрыта. Но запросами эти данные уже читаются. это как раз особенности 3хзвеной архитектуры. Это не "грязное" чтение, а запрос на чтение данных опережает завершение транзакции на SQL-сервере, т.к. 1с пользует NOLOCK, игнорирующее все блокировки напрочь. По идее, НачатьТранзакцию в отчете должно согласовываться с 1совым же перепроведением докумнета (движения по которому тоже в транзакции) на уровне 1С-сервера еще, но насколько надежно это работает.. Т.е., получается, ПОЧТИ работает, но далеко не всегда...
#39
by KeyKB
только этим действием процентов 5 скорости выйграешь. Вообще обращение через точку в запросе очень тяжелое.
#41
by Lama12
Знаю :( А что делать? Ладно, попробую сейчас по максимуму использовать физические таблицы. Может что-то изменилось с 8.1, но если так, то это здорово.
#42
by KeyKB
Укажи связь, как произвольное выражение и напиши ЗаказПокупателя.Проект В ИЕРАРХИИ(Проекты.Ссылка) Возвращаемое значение булево, для связи хватит - должно работать.
#43
by MKZM
Не понял. "это как раз особенности 3хзвеной архитектуры". В середине 90 было модно писать трехзвенки. И сам грешен был, но такой особенности не замечал.
#49
by Odavid
Здесь не совсем чистое "грязное" чтение. Со стороны 1С-сервера есть иммитация блокировки таблиц (НачатьТранзакцию), и он же и должен в первую очередь ослеживать пересечения обращений к данным. Т.е. никакого "грязного" чтения для ИБ на строне 1С-сервера нет. А получается - даже если поставить в транзакции запись (причем только перепроведение документа дает такой эффект) на документ и транзакцию на чтение данных в отчет - это не даст 100% гарантии блокировок. Потому как со ст ороны SQL - да, чистое "грязное" чтение без учета наложенных блокировок. Поэтому и есть очередная шизофрения 1С: - обращение в техподдержку дает ответ "используйте транзакцию" - и они правы, если смотреть со стороны 1Сс-сервера (а все оветы 1С затрагивают всегда и исключительно положение на 1Сс-сервере). Транзакция должна работать. - однако, на SQL в силу непонятной реализации этих "транзакций" на 1С-сервере, происходит именно СПЕЦИАЛЬНО указанное "грязное" чтение. Откуда и расхождения. Т.е. они или могут быть, или могут не быть - при прочих равных.
#51
by МихаилМ
конечно нужно проверять, но такой запрос сама 1с может разбить на части. т.к. нарушена куча правил написания запросов сам оптимизатор плана может понизить уровень изоляции тк для запроса, который выполняется час держать час блокировки не гуд. вест текст не осилил, но если в объединениях используются одинаковые таблицы и используется скл >=2008 этот запрос должен работать вечно если не отключен параллелизм.
#55
by Odavid
данный вопрос не стоит выеденного яйца. Запрос разбить на части и все вложенные - загнать во временные таблицы. Где возможно - использовать виртуальные. Но по блокировкам это никакого отношения не имеет, разве что - будет другой запрос, будет другой и лпан выполнения этого запроса на SQL. Но таблицы, блокировки и данные останутся прежними.
#58
by МихаилМ
из-за взаимоблокировок. в скл 2000,2005 выдавалась ошибка "intra query parallelism" в скл 2008 запрос выполняется бесконечно долго.
#59
by MKZM
Слова знакомые. Смысл не улавливаю. Напиши проще. 1с читает то то и то то, вредительски меняет так-то и выдает что-то еще.
#62
by Odavid
>>из-за взаимоблокировок. если вы про деадлоки, то это не совсем "взаимоблокировки". Речь об этом?
#65
by Ёпрст
ЗЫ: можно сообщение в не скрывать ? А то текст запроса "перекосило" - ничего не видать там теперь.
#66
by МихаилМ
в скл 2000,2005 - deadlocks в скл версии > 2005 - скорее всего нет. возможно зависит от уровня совместимости.
#68
by Ёпрст
ага, так видно.. что вот это ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Проекты КАК Проекты полный пэ...
#70
by Salimbek
Да там много... "пердимоноклей", я, честно говоря, даже вдумываться не стал. Но, для любителей пооптимизировать код, вот запросец, работает 10 минут:
#71
by Salimbek
+ Там Понедельник-Воскресенье ресурсы, остальное Измерения. В базе всего 800к записей.
#73
by fisher
Грязное чтение (read uncommited) используется только вне транзакций. В транзакциях - в зависимости от типа транзакции (автоматическая/управляемая). В управляемых - read commited. Да, этот уровень не гарантирует актуальность прочитанных данных. Если это критично, то это должны гарантировать правильно наложенные управляемые блокировки. Повторяемость чтения гарантируется в транзакциях с автоматическими блокировками.
#75
by Odavid
>>Повторяемость чтения гарантируется в транзакциях с автоматическими блокировками. не гарантируется. Т.к. здесь важна не "повторяемость чтения", а порядок чтения одним пользователем данных и перезаписи этих же данных совсем другого процесса и пользователя.
#76
by Odavid
>>В транзакциях - в зависимости от типа транзакции (автоматическая/управляемая). что за "управляемая транзакция" в 1С?? Если далее по тексту "...Если это критично, то это должны гарантировать правильно наложенные управляемые блокировки."
#77
by Maxus43
От вас тоже только голословные утверждения, без каких-то примеров или фактов. Ничем не лучше
#79
by Odavid
Транзакция - в 1С одна, и вид у неё один. А вот режимов управления блокировками - два. Причем если переключать режим в транзакции с "автоматического" на "управляемый" - прокатывает, наоборот, с "управляемого" на "автоматический" - вызывается исключение (сиречь ошибка). И управляемые блокировки - мало того, что нужно полностью переписать всю конфу (все проведения, чтения и т.д. из базы) с учетом управляемых блокировок, так еще это нужно сделать так, чтобы таким образом наложенные блокировки не привели к существенно большим тормозам или вообще к деадлокам.
#80
by Odavid
2) ну тогда да, что я и расписал в ( 79) )) 1) вы тоже не разделяете 1С-архитектуру на три разных малосвязанных звена? ))
#82
by Odavid
кому надо - давно уже прочитали и примеры, и факты. И не спорят. А кому невежество милее - постят всякую ахинею под лозунгом "1С - это круто!" )))
#85
by fisher
Я попытался ответить ТС на его вопросы. Что хотел ты - я не понял. Выговориться, наверное.
#86
by Odavid
восьмерошный так называемый "сервер" работает криво и практически без связи по управлению данными с SQL-сервером (по тем же блокировкам, неустановка хинтов и т.д.)
#87
by Odavid
Так понятно? Хотя сейчас набегут "1С - это круто!" расстаскивать это мое сообщение на цитаты ))) Так как более емкое и "сложное" ими не осилилось ))
#89
by Odavid
пожалуйста. Только непонятно, зачем было писать "Что хотел ты - я не понял." )) Раз и так согласен.
#92
by MM
и все пользователи и покупатели 1С это терпят и платят? :-О Или кто-нибудь подал в суд на разработчиков и у него есть факты достаточные, чтобы обосновать злой умысел или упущенную выгоду? А хинты так, вообще, без необходимости ставить не рекомендуется.
#93
by КонецЦикла
Если лень читать, то вот перевод "Указывает, что заявления может прочитать строки , которые были изменены другими транзакциями , но еще не были зафиксированы ."
#94
by MKZM
У Марка твена есть повесть путешествие в европу, так там был один персонаж, как звать забыл, но как-то по-американски, так вот, он считал, что может убедить любого и действительно, он подходил к любому, брался за пуговицу сюртука собеседника и начинал чтьо-то бубнить совершенно непонятное, собеседник, ничего не понимая и чувствуя неприятный запах изо рта, быстренько соглашается и уходит.
#95
by Odavid
>>и все пользователи и покупатели 1С это терпят и платят? да. а куда деваться? Игла она и есть игла. >>А хинты так, вообще, без необходимости ставить не рекомендуется ну вот 1С и пошла по пути" а зачем?!", почему и меем в результате все то, что описано здесь, и плюс еще масса "удовольствий" при работе в 1С.
#96
by Odavid
>. когда ж тебя забанят уже? будь моя воля, я бы банил всех неофитов. Чтобы темы не изгаживали своим "1С - это круто!!!" Как сказал - получил бан.
#103
by Cyberhawk
Odavid, поделитесь, пож-та, источником ваших знаний про транзакции, блокировки и все такое (Я не в теме, за что тут на вас ополчаются, спрашиваю искренне) - аль статейки или книжки, или дока и пофигуратор
#104
by Odavid
>>аль статейки или книжки, или дока и пофигуратор вы сколько 1С занимаетесь, чтобы спрашивать про "книжки, где все написано про 1С"? )) А все остальное - опыт, форумы, MSDN, снова форумы, и опять опыт...
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- ПолуOFF печатное издание про MS SQL и MS Server посоветуйте
- Цены на MS Server + MS SQL
- Проектирование: 1С 7.7 SQL + Windows 2003 Server + MS SQL Server 2000 (Ent) + сервер термин
- Совместимость MS SQL 2000 и MS SQL 2005 ?
- Установка MS SQL Server 2000 64-bit на MS Windows Server 2003 Enterprise x64 Edition
- MS SQL 2008 Значительная часть памяти процессов SQL Server выгружена на диск
- MS SQL 2008 SP3 замечено что после установки SP3 MS Windows Server 2003 стал как
- MS office 2010:MS Office 2010: не открываются файлы на сетевых дисках (в AD)
- v7: Перенос базы 1С 7.7 MS SQL 2005 на MS SQL 2000
В этой группе 1С
- отладка ВПФ
- Информативные остатки магазина
- v7: 1C++ - как вернуть значок фильтра и скрыть подвал табличного поля?
- Настройка параметров СКД
- 1С УПП отражение зарплаты в рег.учете
- Форма выбора без иерархии
- Перенос настроек пользователя (РИБ)
- Должен ли переоцениваться выданый аванс?
- Для статистики по кодам: ТНВЭД,ОКПО и ОКВЭД, требуется сделать отчет в базе БП.
- Печатная форма авансового отчёта в УТ11
- Поле картинки в таблице значений на управляемой форме
- УФ Как найти строку таблицы по значению в колонке и сделать её текущей?
- Установка 1С 8.2 на сервер 32 бит
- Как закрасить часть текста в ячейке отчета
- Ругается запрос на преобразование к числу. но не пойму как вылечить это.
- Возвращение отдельных объектов конфигурации на замок
- Прикрепленные файлы
- УПП настройка распределение затрат в СКД
- Как настроить итоги в СКД по внутренним группировкам?
- Как "отличить" базу от ее копии?:)