Переключение на Главную Страницу Страницы: 1 ... 53 54 [55] 56 57 ... 79 ОтправитьПечать
Очень популярная тема (более 25 ответов) 1sqlite (число прочтений - 532237 )
Ветер в поле
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 44
Зарегистрирован: 06. Октября 2010
Пол: Мужской
Re: 1sqlite
Ответ #810 - 16. Сентября 2015 :: 07:11
Печать  
Спасибо за исправление!

А с чем связано, что размер оригинальной версии 2.6 878 КБ, а новой 584?
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 635
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #811 - 16. Сентября 2015 :: 08:35
Печать  
Ветер в поле писал(а) 16. Сентября 2015 :: 07:11:
Спасибо за исправление!
А с чем связано, что размер оригинальной версии 2.6 878 КБ, а новой 584?

Версия движка то другая, разработчики за размером следят. И ключи компиляции чуток другие. Но на скорость они почти не влияют, все таки sqlite чистый си, его заоптимизировать сложно.
В процессе экспериментов получил как то мутанта в 2.5мб, собирая sqlite icc15, а 1с`овскую часть на vc6. Линкуется однако!
Даже удалось заcтавить sqlite работать в многопоточном варианте и сожрать все 4 ядра в процессе работы - не впечетлило.
Откатился на vc6.
  
Наверх
www  
IP записан
 
Ветер в поле
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 44
Зарегистрирован: 06. Октября 2010
Пол: Мужской
Re: 1sqlite
Ответ #812 - 16. Сентября 2015 :: 10:02
Печать  
Понятно, спасибо за ответ!
  
Наверх
 
IP записан
 
Asakra
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 83
Местоположение: Иркутск
Зарегистрирован: 28. Августа 2012
Пол: Мужской
Re: 1sqlite
Ответ #813 - 17. Сентября 2015 :: 00:01
Печать  
Djelf писал(а) 15. Сентября 2015 :: 17:28:
Да я уже понял... Оптимизацию по IN, как ни печально, придется отключить.
Пытался починить но пока безрезультатно.
Вот тут, надеюсь, она отключена полностью (во всяком случае и баг по IN, который я ранее пытался пофиксить не проявляется и IsMark='' без пробела работает, ну и этот IN не ищет больше индексы в таблицах 1с). Недоглядел в прошлый раз, вырубать IN надо не в одном месте, там стадийный алгоритм.
Надо, конечно 3.8.11 приводить в чувство, но оно сопротивляется.


подскажите в 1sqlite_3_7_17_bf2 такая же проблема с IN?
для работы ее использовать можно? вы сейчас в работе какаю используете?
спасибо.
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 635
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #814 - 17. Сентября 2015 :: 00:40
Печать  
Asakra писал(а) 17. Сентября 2015 :: 00:01:
[quote author=Djelf link=1214205575/795#809 date=1442338114]
подскажите в 1sqlite_3_7_17_bf2 такая же проблема с IN?
для работы ее использовать можно? вы сейчас в работе какаю используете?
спасибо.

Лично я IN в sqlite вообще не перевариваю. Пытаюсь выкручиваться RIHT JOIN`ами. Поэтому проблема и не была мной замечена.
В 3.7.17.бф2 оптимизация по IN была недоубита и работает только если на эту недоубитость не наступить.
Мой косяк, виноват, не догладел.
Использовать бф2-бф3 можно, но очень осторожно!!! Баг проявляется, если после IN использовать еще несколько условий в WHERE для той же таблицы.
бф2 - попытка фикса IN, работает, но не во всех случаях.
бф3 - микрофикс к 1sqlte по поводу неправильной типизации неопределенного перечисления - ничего сломать не может.
бф4 - для IN выключен подбор индекса для виртуальных таблиц (сделано по коду аналогично отключению поиска индекса по NULL, по NULL индекса то нет).
Т.е. сейчас бф4 - сэйф моде, бф3 - турбо моде, но возможныы глюки.
  
Наверх
www  
IP записан
 
Asakra
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 83
Местоположение: Иркутск
Зарегистрирован: 28. Августа 2012
Пол: Мужской
Re: 1sqlite
Ответ #815 - 17. Сентября 2015 :: 02:10
Печать  
Djelf писал(а) 17. Сентября 2015 :: 00:40:
Asakra писал(а) 17. Сентября 2015 :: 00:01:
[quote author=Djelf link=1214205575/795#809 date=1442338114]
подскажите в 1sqlite_3_7_17_bf2 такая же проблема с IN?
для работы ее использовать можно? вы сейчас в работе какаю используете?
спасибо.

Лично я IN в sqlite вообще не перевариваю. Пытаюсь выкручиваться RIHT JOIN`ами. Поэтому проблема и не была мной замечена.
В 3.7.17.бф2 оптимизация по IN была недоубита и работает только если на эту недоубитость не наступить.
Мой косяк, виноват, не догладел.
Использовать бф2-бф3 можно, но очень осторожно!!! Баг проявляется, если после IN использовать еще несколько условий в WHERE для той же таблицы.
бф2 - попытка фикса IN, работает, но не во всех случаях.
бф3 - микрофикс к 1sqlte по поводу неправильной типизации неопределенного перечисления - ничего сломать не может.
бф4 - для IN выключен подбор индекса для виртуальных таблиц (сделано по коду аналогично отключению поиска индекса по NULL, по NULL индекса то нет).
Т.е. сейчас бф4 - сэйф моде, бф3 - турбо моде, но возможныы глюки.


эх... яфно. спасибо за ответ!
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 635
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #816 - 19. Сентября 2015 :: 19:59
Печать  
Нормально работающая с виртуальными таблицами и их индексами в 1С версии 3.8.х - 1.0.2.6/3.8.11.1 наконец испеклась!

Изменения:
bf0
1. 1sqlite - исправлен баг с типизацией неопределенных перечислений (уже было в 3.7.17.bf3-bf4);
2. 1sqlite - изменен возврат информации об индексах из 1sqlite в sqlite, из-за изменений оптимизатора запросов в 3.8.х:
  - 3.8.11 запрашивает индекс по сортировке, но без наложения условий, оригинальный планировщик выдает log(КолВоСтрок), измененный просто КолВоСтрок;
  - при не подании в индекс возвращалось 10000-log(КолВоСтрок), сейчас просто КолВоСтрок
  - при попадании в индекс возвращалось log(КолВоСтрок)*f(вхождения в индекс), сейчас просто log(КолВоСтрок)
При таких условиях планировщик работает достаточно предсказуемо.
Тест идиотского, но нужного запроса обновлен http://www.1cpp.ru/forum/YaBB.pl?num=1214205575/789#789
bf1
sqlite - регистронезависимые поля в запросе.
bf2
sqlite - фикс вылета при запросе к базам sqlite (которые не :memory:), появившийся после bf1 (не учел некоторые оптимизации в коде sqlite). фикс определения типа данных в таблицах.
bf3
1sqlite - фикс SQLiteDataProvider для ТабличногоПоля. ТекущаяСтрока в табличном поле теперь работает на чтение/запись.
bf5
sqlite - фикс патча регистронезависимости like

P.S. Баги по IN (пока?) не провяляются. В отличие от 3.7.17, индекс по IN работает.

P.P.S. Изменения планировщика еще в процесс продумывания...
Классический пример: регистр продажи и 2 условия номенклатура и склад. По обоим есть индекс. Стоимость индекса по методике Орефкова одинакова, преимущество получает первый в списке WHERE. Есть и плюсы и минусы в таком решении.
Можно же и потелапатировать - взять 20% от справочника, по аналогии с АБС-анализом считаем что 80% мусор, поделить продажи на эти 20% и взять с них логарифм (или еще какой то бред вычисления). Нужно ли вообще предсказываение от зависимых таблиц, или это все от лукавого? Будет менее зависимо от расположения строк, но зато расположением строк поиграть не удасться.
Компромисc - сделать переменную ВерсияПланировщика. Что думаете?
« Последняя редакция: 12. Октября 2015 :: 18:58 - Djelf »  

1sqlite_3_8_11_1_bf5_001.zip ( 333 KB | Загрузки )
Наверх
www  
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 635
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #817 - 20. Сентября 2015 :: 18:39
Печать  
Ветер в поле писал(а) 15. Сентября 2015 :: 15:45:
SELECT ... FROM Справочник_РасписаниеРаботы as Спр ...

Сколько по времени выполняется?
  
Наверх
www  
IP записан
 
nicesc
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 53
Зарегистрирован: 13. Июня 2009
Пол: Мужской
Re: 1sqlite
Ответ #818 - 21. Сентября 2015 :: 10:29
Печать  
Получается запросы стали регистрозависимые?

Так уже не работает:
$спр.номер = :стрПоиска

а так работает
$спр.Номер = :стрПоиска

// Добавлено
супер! запросы стали выполнятся быстрее, ушла задержка при первом обращении. Большое спасибо!  Очень довольный
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 635
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #819 - 21. Сентября 2015 :: 11:17
Печать  
nicesc писал(а) 21. Сентября 2015 :: 10:29:
Получается запросы стали регистрозависимые?

Спасибо! Очень много изменений 3.7>3.8 в самом sqlite, с регистрозависимостью кое-где значит не допилил. Это я поправлю.  
Поправленная версия 1.0.2.6/3.8.11.1 тут http://www.1cpp.ru/forum/YaBB.pl?num=1214205575/816#816

P.S. Особенно радует рабочий сте.
Код
Выбрать все
-- Все товары в группе, +_Родитель  для ускоренной группировки в ИндексированнойТаблице
WITH RECURSIVE Goods(ID,PARENTID,ISFOLDER) AS (
	SELECT ID,PARENTID,ISFOLDER
	FROM [Справочник.Номенклатура]
	WHERE ID   IN('     2Б  ')
	UNION SELECT Спр.ID,Спр.PARENTID,Спр.ISFOLDER
	FROM [Справочник.Номенклатура] AS Спр
    INNER JOIN Goods ON Goods.ID = Спр.PARENTID
)
SELECT
	Goods.ID  [Номенклатура $Справочник.Номенклатура],
	Goods.PARENTID [Номенклатура_Родитель $Справочник.Номенклатура]
FROM Goods
WHERE Goods.ISFOLDER=2
 

« Последняя редакция: 23. Сентября 2015 :: 17:45 - Djelf »  
Наверх
www  
IP записан
 
Ветер в поле
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 44
Зарегистрирован: 06. Октября 2010
Пол: Мужской
Re: 1sqlite
Ответ #820 - 24. Сентября 2015 :: 16:31
Печать  
Djelf писал(а) 20. Сентября 2015 :: 18:39:
Ветер в поле писал(а) 15. Сентября 2015 :: 15:45:
SELECT ... FROM Справочник_РасписаниеРаботы as Спр ...

Сколько по времени выполняется?


Использую последнюю 3.7.
Обоими версиями запрос выполняется в пределах 1 мс
Справочник слишком маленький (6000 элементов), а селективность условия ДатаПриема очень хорошая - в день примерно 200 элементов. Даже банальным перебором будет очень быстро.

В будущем постараюсь обратить внимание на производительность, но пока к ней не было претензий. А на действительно больших объемах у меня стоит SQL, т.к. его плюшки вкуснее и он банально быстрее после перехода на прямые запросы. Реально бесит только реструктуризация базы - после добавления одного поля может целый час молотить - руки бы оторвал разработчикам...
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 635
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #821 - 24. Сентября 2015 :: 17:49
Печать  
Ветер в поле писал(а) 24. Сентября 2015 :: 16:31:
[quote author=Djelf link=1214205575/810#817 date=1442774356]
Использую последнюю 3.7. Обоими версиями запрос выполняется в пределах 1 мс

А, ну тогда отлично. Мне показалось что справочник дикий по объему, и это побудило на sqlite переползти. Подумал о вариантах ускорения, они есть, но раз 1мс то и так сойдет.
  
Наверх
www  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: 1sqlite
Ответ #822 - 25. Сентября 2015 :: 08:24
Печать  
Djelf, в тесте, что по ссылке - http://www.1cpp.ru/forum/YaBB.pl?num=1214205575/789#789, в последних измерениях времени выполнения указан результат "1.0.2.6/3.8.11.1.bf0 - 3c" - я правильно понял, что это 3 секунды? Или это опечатка и должно быть мс - милисекунды. И в предыдущем замере указано 550с - что, таки да секунд?
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 635
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #823 - 25. Сентября 2015 :: 08:37
Печать  
alyuev писал(а) 25. Сентября 2015 :: 08:24:
Djelf, в тесте, что по ссылке - http://www.1cpp.ru/forum/YaBB.pl?num=1214205575/789#789, в последних измерениях времени выполнения указан результат "1.0.2.6/3.8.11.1.bf0 - 3c" - я правильно понял, что это 3 секунды? Или это опечатка и должно быть мс - милисекунды. И в предыдущем замере указано 550с - что, таки да секунд?

Очепятка конечно, поправил. Было бы в секундах, я бы 3.8 не занимался.
  
Наверх
www  
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 635
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #824 - 27. Сентября 2015 :: 13:35
Печать  
1sqlite 1.0.2.6/3.8.11.1.bf3
Исправлена ошибка в SQLiteDataProvider, приводящая к вылету при попытке установки текущей строки в табличном поле, а также к тому что тп.ТекущаяСтрока выводила пустое значение.
Так что ТекущаяСтрока в табличном поле для постащика SQLiteDataProvider теперь доступна на чтение/запись.
Брать тут: http://www.1cpp.ru/forum/YaBB.pl?num=1214205575/816#816

С этим же багом был связан вылет в обработке ДеревоНаCTE
http://www.1cpp.ru/forum/YaBB.pl?num=1214205575/787#787
http://www.1cpp.ru/forum/YaBB.pl?num=1214205575/792#792

upd: багов в этой сборке пока не нашел...
« Последняя редакция: 28. Сентября 2015 :: 19:41 - Djelf »  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 53 54 [55] 56 57 ... 79
ОтправитьПечать