Переключение на Главную Страницу Страницы: 1 ... 23 24 [25] 26 27 ... 79 ОтправитьПечать
Очень популярная тема (более 25 ответов) 1sqlite (число прочтений - 480253 )
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: 1sqlite
Ответ #360 - 28. Августа 2008 :: 13:59
Печать  
hogik писал(а) 28. Августа 2008 :: 12:19:
1) “hogik наконец-то понял” - Если Вы хотите настроить против себя собеседника, то такие фразы этому очень способствуют.

Извиняюсь.
Тов. hogik так и не понял. Смех

В Совет Федерации обратились субъекты федерации с требованием о запрещении шовинистской поговорки "незваный гость хуже татарина".

Слушали-постановили.
Впредь говорить "незваный гость лучше татарина". Смех
НЛ, разумеется.

--
Я слишком ленив, чтобы идти регистрироваться на инфостарт.
Не нравится он мне.

Я рад, что твоя разработка не нуждается в моих тестах.
И в принципе, понятно, что мы оба не нуждаемся в информации и опыте собеседника.

Мне просто хотелось по-возможности чем-то помочь, да пообщаться за чашкой водки.
А к тому, что это не всегда удается, я давно уже привык.
Ну что делать, возможности второй сигнальной на заре третьего тысячелетия по-прежнему ограничены.

Независимо от всего этого, я рад, что вот есть ты и вот есть твои разработки.
Которые нужны людям.
Так что по-прежнему: "удачи" и "ю а велкам".
  

De quelle planète es-tu?
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 1sqlite
Ответ #361 - 04. Сентября 2008 :: 08:19
Печать  
to Александр Орефков:
Если можно, хотелось бы узнать, в связи с выявленными нюансами по работе 1sqlite, планируются ли какие либо радикальные изменения в функционале/интерфейсе компоненты?
Если честно, очень чешутся руки переписать все под 1sqlite, и в принципе в рамках моей специфики я скорее всего не столкнусь с описанными выше в этой ветке проблемами, но все таки объем работы достаточно большой и переделывать потом все будет довольно хлопотно, поэтому если не сложно, как разработчик, не мог бы ты высказать свою точку зрения по этому вопросу по состоянию на текущий момент?
Читал материалы по компонентам hogik-а, но если честно, как то не внушило...
Заранее спасибо!
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #362 - 04. Сентября 2008 :: 12:44
Печать  
CaBaT писал(а) 04. Сентября 2008 :: 08:19:
to Александр Орефков:
Если можно, хотелось бы узнать, в связи с выявленными нюансами по работе 1sqlite, планируются ли какие либо радикальные изменения в функционале/интерфейсе компоненты?
Если честно, очень чешутся руки переписать все под 1sqlite, и в принципе в рамках моей специфики я скорее всего не столкнусь с описанными выше в этой ветке проблемами, но все таки объем работы достаточно большой и переделывать потом все будет довольно хлопотно, поэтому если не сложно, как разработчик, не мог бы ты высказать свою точку зрения по этому вопросу по состоянию на текущий момент?


Да в-принципе, пока только были проблемы с Begin/End ReadSequnce.

Сегодня почти доделал борьбу с этим, и есть ряд нюансов, которые как раз хотелось бы обсудить с сообществом пользователей.

Радикальных изменений в интерфейсе компоненты не будет.
Возможны некоторые изменения в общении с поставщиком данных для sqlite, благо в официальных релизах он еще не засветился.

Теперь по поводу ReadSequnce.
Удалось технически сделать возможность указывать для таблиц, применять ли для них ReadSequnce.

Работает это так:
В монопольном режиме ReadSequnce применяется всегда.
В разделенном режиме можно либо не применять ReadSequnce (меньше скорость последовательного чтения), либо применять (тогда таблица пытается заблокироватся на запись, и либо запрос вообще не сможет выполнится - не удалось заблокировать таблицу, либо другие юзеры не смогут писать в таблицу. Плюсы - увеличение скорости чтения).
Я конечно, могу сделать для объекта SQLiteQuery флаг - блокировать таблицы или нет, и тогда он будет влиять на режим применения блокировок ко всем таблицам в запросе. Однако есть и пограничные случаи, например:
Запрос в модуле проведения документа, что-нить читает из регистра и джойнится к справочнику. Очевидно, что в таком запросе в разделенном режиме хотелось бы к регистру применить ReadSequnce (потому что так и так в него никто не может в это время писать, а к таблице справочника не применять ReadSequnce, чтобы не мешать записывать в нее другим юзерам.
То есть надо как-то давать информацию запросу, какие таблицы блокировать, а какие нет.
SQLite не позволяет указывать хинты для таблиц, как MSSQL, типа (nolock).
Могу предложить два варианта:
1. В тексте запроса если хотим, чтобы для таблицы применялась блокировка, имя таблицы указывать с хитрым суффиксом/префиксом - например
select from Справочник_Номенклатура_Locked

2. К объекту запроса добавить метод
Блокировать("Список,Таблиц")

Какой из вариантов реализовать?
Замечу, что по умолчанию в разделенном режиме таблицы будут всегда читаться БЕЗ ReadSequnce, тк ПМСМ небольшое снижение скорости последовательного чтения данных гораздо выгоднее, чем завал системы транзакциями.

И спрошу еще у знатоков - при проведении 1С блокирует таблицы регистров сразу или при первой записи в них? Что-то там помню выясняли при попытках использовать фокс в модулях проведения.
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #363 - 04. Сентября 2008 :: 12:52
Печать  
Цитата:
1. В тексте запроса если хотим, чтобы для таблицы применялась блокировка, имя таблицы указывать с хитрым суффиксом/префиксом - например
select from Справочник_Номенклатура_Locked

2. К объекту запроса добавить метод
Блокировать("Список,Таблиц")


А возможно реализовать оба варианта?
Если нет, то 1 вариант.
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 1sqlite
Ответ #364 - 04. Сентября 2008 :: 12:55
Печать  
Спасибо за ответ, пошел работать Улыбка
По поводу блокировок: на мой взгляд, первый вариант более красивый.
  
Наверх
 
IP записан
 
Phoenix
Senior Member
****
Отсутствует


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: 1sqlite
Ответ #365 - 04. Сентября 2008 :: 13:00
Печать  
как минимум 1 вариант, оба еще лучше.
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: 1sqlite
Ответ #366 - 04. Сентября 2008 :: 13:17
Печать  
orefkov писал(а) 04. Сентября 2008 :: 12:44:
1. В тексте запроса если хотим, чтобы для таблицы применялась блокировка, имя таблицы указывать с хитрым суффиксом/префиксом - например
select from Справочник_Номенклатура_Locked

Это более явный вариант - т.е. более очевидный.
Второй может легко выпадать из поля зрения.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 1sqlite
Ответ #367 - 04. Сентября 2008 :: 13:20
Печать  
kms писал(а) 04. Сентября 2008 :: 13:17:
Это более явный вариант - т.е. более очевидный.

+1
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: 1sqlite
Ответ #368 - 05. Сентября 2008 :: 03:00
Печать  
Я верил в Александра и поэтому давно переписал много чего на 1sqlite.
Что касается пути по которому идти...
Я согласен с Михаилом что 1-й более очевидный. НО и второй был бы не плох. Но первого было бы достаточно для начала.  Подмигивание
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #369 - 05. Сентября 2008 :: 10:08
Печать  
Блин, эксперимент отец опыта.

Вобщем, что выяснилось.
Begin/End ReadSequnce к делу мало относится.
Главное - Begin/EndTransaction !
То есть, если я просто вызывал перед выполнением запроса BeginTransaction, то независимо от того, вызывался BeginReadSequnce или нет - время выполнения одинаково.

Однако теперь засада такова - оказывается движок 1С, если начата транзакция, при ЛЮБОМ чтении из ЛЮБОЙ таблицы блокирует ее на запись. То есть разделять на уровне запроса какие таблицы блокировать, а какие нет - не имеет смысла, потому что как только что-либо прочиталось из таблицы, писать в нее не получится до завершения транзакции.

Поэтому предлагаю такое поведения ВКшки:
1. Если при начале выполнения запроса уже начата транзакция, то это хорошо, не делаем лишних телодвижений.
2. Если при начале выполнения запроса транзакция не начата, и режим запуска монопольный - начинаем транзакцию, по завершению запроса - откатываем ее.
3. Если при начале выполнения запроса транзакция не начата, и режим запуска разделенный, то если для объекта SQLiteQuery установлен флаг "Блокировать", начинаем транзакцию, по завершению запроса - откатываем ее, иначе - не начинаем транзакцию, выполняем запрос медленнее.

По умолчанию при создании запроса методом база.НовыйЗапрос, в создаваемом запросе установить флаг Блокировка = 0.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: 1sqlite
Ответ #370 - 05. Сентября 2008 :: 10:43
Печать  
Имел достаточно большой практический опыт по ускорению стандартных запросов 1С при помощи обертки в транзакцию. Даже стандартный запрос при этом ускоряется на порядок (в многопользовательском режиме). До 10 пользователей - все ОК. При >>10 ошибки (Таблица: 1SJOURN Ошибка обращения к данным при транзакции, выполняемой другим пользователем) начинают сильно нарастать (видимо из за того, что очередь не успевает рассосаться ). И как правило такие заторы образовывались в пик отгрузок.
Ругань пользователей, жалобы руководству и т.п.
Параметр 10 человек для разных баз конечно может варьироваться.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: 1sqlite
Ответ #371 - 05. Сентября 2008 :: 11:10
Печать  
orefkov писал(а) 05. Сентября 2008 :: 10:08:
2. Если при начале выполнения запроса транзакция не начата, и режим запуска монопольный - начинаем транзакцию, по завершению запроса - откатываем ее.

А зачем в монопольном режиме транзакция?

  

De quelle planète es-tu?
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #372 - 05. Сентября 2008 :: 11:25
Печать  
kms писал(а) 05. Сентября 2008 :: 11:10:
orefkov писал(а) 05. Сентября 2008 :: 10:08:
2. Если при начале выполнения запроса транзакция не начата, и режим запуска монопольный - начинаем транзакцию, по завершению запроса - откатываем ее.

А зачем в монопольном режиме транзакция?


Я и сам не знаю.
Но как показали эксперименты, если в монопольном режиме обернуть запрос в НачатьТранзакцию/ОтменитьТранзакцию - он выполняется быстрее !
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: 1sqlite
Ответ #373 - 05. Сентября 2008 :: 11:36
Печать  
Интересно.

Скажи, Саша, а 1sqlite позволит DML запросы к таблицам 1С (типа update хотя бы)?
Нет под рукой 1sqlite, а так не помню, потому спрашиваю.

И если да, то не будет ли тут интерференции с автоматической отменой транзакции?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #374 - 06. Сентября 2008 :: 04:06
Печать  
kms писал(а) 05. Сентября 2008 :: 11:36:
Интересно.

Скажи, Саша, а 1sqlite позволит DML запросы к таблицам 1С (типа update хотя бы)?
Нет под рукой 1sqlite, а так не помню, потому спрашиваю.

И если да, то не будет ли тут интерференции с автоматической отменой транзакции?


insert/update/delete скорее всего не будет.
Если только кто-нить не сделает.

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 23 24 [25] 26 27 ... 79
ОтправитьПечать