powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Сборки SQLite
25 сообщений из 57, страница 1 из 3
Сборки SQLite
    #36762866
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выкладываю мою сборку SQLite 3.7.0 c ICU для WINDOWS
Опции компиляции:
ENABLE_COLUMN_METADATA;
ENABLE_FTS3;
ENABLE_ICU;
ENABLE_RTREE;
TEMP_STORE=1;
THREADSAFE=1.
...
Рейтинг: 0 / 0
Сборки SQLite
    #36794586
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сборка SQLite 3.7.0.1 c ICU для ОС WINDOWS
Опции компиляции:
ENABLE_COLUMN_METADATA
ENABLE_FTS3
ENABLE_ICU
ENABLE_LOAD_EXTENSION
ENABLE_RTREE
TEMP_STORE=1
THREADSAFE=1
...
Рейтинг: 0 / 0
Сборки SQLite
    #36796656
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
Alexbootch,

Дело хорошее, но стоило бы еще размер страницы и кэша подкрутить.
...
Рейтинг: 0 / 0
Сборки SQLite
    #36796660
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBGAlexbootch,

Дело хорошее, но стоило бы еще размер страницы и кэша подкрутить.

Какой размер страницы и кэша нужно?
...
Рейтинг: 0 / 0
Сборки SQLite
    #36798214
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
AlexbootchКакой размер страницы и кэша нужно?

Для PostgreSQL, MS SQL и, возможно, других популярных СУБД размер страницы 8к. По моим тестам - для эскулайт оптимален этот же размер, скорость работы с диском утраивается по сравнению с дефолтовой страницей 1к.

Что касается размера кэша, тут интереснее. Увеличив в 8 раз размер страницы, мы во столько же раз увеличили размер кэша. По умолчанию 2000 страниц, считая 8к каждая, получится 16 Мб кэш. Но и этого мало. Полагаю, для десктопа оптимально 64Мб, т.е. размер кэша равен 8000 страниц.
...
Рейтинг: 0 / 0
Сборки SQLite
    #36799056
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBG, если я все правильно понял - при компиляции добавить такие ключи:

SQLITE_DEFAULT_PAGE_SIZE=8192
SQLITE_DEFAULT_CACHE_SIZE=8000
...
Рейтинг: 0 / 0
Сборки SQLite
    #36799996
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
Alexbootch MBG, если я все правильно понял - при компиляции добавить такие ключи:

SQLITE_DEFAULT_PAGE_SIZE=8192
SQLITE_DEFAULT_CACHE_SIZE=8000

Еще стоит указать DEFAULT_TEMP_CACHE_SIZE=2000. Но это далеко не все, что полезно подкрутить.

Для десктопа предлагаю собирать вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    -DSQLITE_CORE=1 \
    -DSQLITE_ENABLE_COLUMN_METADATA \
    -DSQLITE_ENABLE_STAT2 \
    -DSQLITE_DEFAULT_RECURSIVE_TRIGGERS=1 \
    -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS \
    -DSQLITE_ENABLE_RTREE \
    -DSQLITE_ENABLE_ICU \
    -DSQLITE_DEFAULT_PAGE_SIZE=8192 \
    -DSQLITE_DEFAULT_CACHE_SIZE=8000 \
    -DSQLITE_DEFAULT_TEMP_CACHE_SIZE=2000 \
    -DSQLITE_DEFAULT_FILE_FORMAT=4 \
    -DSQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576 \
    -DSQLITE_THREADSAFE=1

Здесь включены некоторые дополнительные возможности полнотекстового поиска и оптимизатора. По сравнению со значениями по умолчанию такие настройки дают огромный прирост производительности (для эскулайт умолчания ориентированы традиционно для эмбеддед устройств).
...
Рейтинг: 0 / 0
Сборки SQLite
    #36800028
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что еще кроме следующего влияет на производительность ?
Код: plaintext
1.
2.
3.
4.
-DSQLITE_DEFAULT_PAGE_SIZE= 8192  \    
-DSQLITE_DEFAULT_CACHE_SIZE= 8000  \    
-DSQLITE_DEFAULT_TEMP_CACHE_SIZE= 2000  \    
-DSQLITE_DEFAULT_FILE_FORMAT= 4  \    
-DSQLITE_DEFAULT_JOURNAL_SIZE_LIMIT= 1048576  \
...
Рейтинг: 0 / 0
Сборки SQLite
    #36800823
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
Dmitry ArefievА что еще кроме следующего влияет на производительность ?

-DSQLITE_ENABLE_STAT2, вестимо. Об этом мало информации, но планировщик эскулайт пользуется собранной статистикой для оптимизации запросов. Сбор статистики выполняется командой ANALYZE, ее временами нужно запускать, если есть проблемы с производительностью (актуально для средних и больших баз).

У меня базы от нескольких мегабайт до гигабайт, тестовые до десятков гигабайт, и указанный параметр весьма актуален. Поскольку апстрим недавно поддался моим аргументам и включил в свои тесты базы в 5 гигабайт (наконец-то!), то можно считать базы в гигабайты и десятки гигабайт официально поддерживаемыми и спокойно работать с ними. Кстати, на SSD дисках эскулайт показывает чудеса производительности, 100 миллионов записей с полнотекстовым поиском и индексами - запросто на нетбуке. Тесты я выкладывал:

http://book.mobigroup.ru/dir?name=web_project_DBMS/distributed_schema

P.S. Сейчас планирую покупать сервер с рэйдом на несколько терабайт, будет интересно проверить, как терабайтные эскулайт базы будут работать. На 32-бит ОС, к тому же :-)
...
Рейтинг: 0 / 0
Сборки SQLite
    #36801488
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBG, скомпилировал библиотеку SQLite 3.7.0.1 с предложенными Вам ключами. От себя добавил ключ -DSQLITE_ENABLE_LOAD_EXTENSION=1, т.к. использую дополнительные расширения библиотеки SQLite. Протестировал - действительно скорость работы на больших базах данных заметно увеличивается. Оптимизированную библиотеку SQLite 3.7.0.1 собранную с ключами:

-DSQLITE_CORE=1 \
-DSQLITE_ENABLE_COLUMN_METADATA \
-DSQLITE_ENABLE_STAT2 \
-DSQLITE_DEFAULT_RECURSIVE_TRIGGERS=1 \
-DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS \
-DSQLITE_ENABLE_RTREE \
-DSQLITE_ENABLE_ICU \
-DSQLITE_DEFAULT_PAGE_SIZE=8192 \
-DSQLITE_DEFAULT_CACHE_SIZE=8000 \
-DSQLITE_DEFAULT_TEMP_CACHE_SIZE=2000 \
-DSQLITE_DEFAULT_FILE_FORMAT=4 \
-DSQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576 \
-DSQLITE_THREADSAFE=1 \
-DSQLITE_ENABLE_LOAD_EXTENSION=1 \

можно скачать здесь
...
Рейтинг: 0 / 0
Сборки SQLite
    #36804187
leone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте,Други)
Хотел поинтересоваться, какая версия ICU нужна для сборки sqlite 3.7.1(с ключем ENABLE_ICU,естественно) ?
А то что-то вот:
,,,,
./.libs/libsqlite3.so: undefined reference to `uregex_matches_44'
./.libs/libsqlite3.so: undefined reference to `uregex_setText_44'
./.libs/libsqlite3.so: undefined reference to `u_isspace_44'
./.libs/libsqlite3.so: undefined reference to `uregex_close_44'
./.libs/libsqlite3.so: undefined reference to `ucol_strcoll_44'
,,,,
Без icu собирается и даже работает)
icu 4.4.1 тоже собралось и поставилось...
сборка под openSuse
Спасибо
...
Рейтинг: 0 / 0
Сборки SQLite
    #36804693
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leoneЗдравствуйте,Други)
Хотел поинтересоваться, какая версия ICU нужна для сборки sqlite 3.7.1(с ключем ENABLE_ICU,естественно) ?
А то что-то вот:
,,,,
./.libs/libsqlite3.so: undefined reference to `uregex_matches_44'
./.libs/libsqlite3.so: undefined reference to `uregex_setText_44'
./.libs/libsqlite3.so: undefined reference to `u_isspace_44'
./.libs/libsqlite3.so: undefined reference to `uregex_close_44'
./.libs/libsqlite3.so: undefined reference to `ucol_strcoll_44'
,,,,
Без icu собирается и даже работает)
icu 4.4.1 тоже собралось и поставилось...
сборка под openSuse
Спасибо


Вам же написано - undefined reference, т.е. не определена ссылка. Вывод: при компиляции нужно указать путь до собранной icu, а также перечень подключаемых библиотек. Насчет версии, то версия может быть любая поддерживаемая соответствующей ОС.
...
Рейтинг: 0 / 0
Сборки SQLite
    #36805737
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
Dmitry ArefievMBG, интересно ... Похоже только ты один умеешь готовить SQLite БД
на сотни гиг. Большинство других считают, что SQLite дай Бог потянет
100 записей, сумев выбрать их за пол часа

В рассылке sqlite-users есть участники, работающие в продакшене с целыми кластерами баз эскулайт (как пример: 10 серверов с общим объемом ОЗУ 320 гиг, вся память занята эскулайт базами). В то время как у меня базы размером в сто гиг только тестовые были, рабочие не более нескольких десятков гиг. Вот в рунете да, примеров особо не найти, и не только по эскулайт.

Dmitry ArefievКстати, для топика больше ничего не прибавилось ?

Есть еще действующий проект с базой эскулайт на КПК с винмобайл (несколько десятков пользователей примерно в течении 5-ти лет), а также эскулайт используется в разных проектах как вспомогательная база (например, при перезапуске/выключении серверов приложений в базы эскулайт сбрасываются пользовательские сессии и при старте оттуда восстанавливаются). Также система поиска на базе эскулайт в продакшене работает. За исключением приложения под винмобайл, весь вышеназванный софт есть в моих репозиториях. Если в репозитории покопаться, и еще что-то вспомню :-) Да, вспомнил, есть еще база и утилиты для работы с КЛАДР. Имхо нет особого смысла о таких примерах упоминать.
...
Рейтинг: 0 / 0
Сборки SQLite
    #36809268
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оптимизированную библиотеку SQLite 3.7.2 собранную с ключами:

-DSQLITE_CORE=1 \
-DSQLITE_ENABLE_COLUMN_METADATA \
-DSQLITE_ENABLE_STAT2 \
-DSQLITE_DEFAULT_RECURSIVE_TRIGGERS=1 \
-DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS \
-DSQLITE_ENABLE_RTREE \
-DSQLITE_ENABLE_ICU \
-DSQLITE_DEFAULT_PAGE_SIZE=8192 \
-DSQLITE_DEFAULT_CACHE_SIZE=8000 \
-DSQLITE_DEFAULT_TEMP_CACHE_SIZE=2000 \
-DSQLITE_DEFAULT_FILE_FORMAT=4 \
-DSQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576 \
-DSQLITE_THREADSAFE=1 \
-DSQLITE_ENABLE_LOAD_EXTENSION=1 \

можно скачать здесь
...
Рейтинг: 0 / 0
Сборки SQLite
    #36812884
Миколай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОптимизированную библиотеку SQLite 3.7.2 собранную с ключами:
И как ее проинсталировать в систему? Пытаюсь создать ODBC Driver и на создании источника данных появляется ошибка 126
...
Рейтинг: 0 / 0
Сборки SQLite
    #36814111
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МиколайИ как ее проинсталировать в систему? Пытаюсь создать ODBC Driver и на создании источника данных появляется ошибка 126

Никак, эта библиотека не является ODBC Driver и предназначена для замены в программах, работающих непосредственно с библиотекой sqlite3.dll
...
Рейтинг: 0 / 0
Сборки SQLite
    #36842038
aesapronov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрых суток!
Со сборками вы полезное дело затеяли, ибо у самого возникают проблемы при компиляции под Win32 с SQLITE_ENABLE_ICU. Главное, чего хочу достичь - Case Insensitive для кириллицы при FTS.

Код: plaintext
1.
2.
3.
CREATE VIRTUAL TABLE t USING fts3(tokenize=icu ru_RU);
INSERT INTO t VALUES('Однажды в студёную зимнюю пору');
SELECT * FROM t WHERE t MATCH 'Однажды'; --> 'Однажды в студёную зимнюю пору'
SELECT * FROM t WHERE t MATCH 'однажды';  --> 'Однажды в студёную зимнюю пору'


Так вот, попробовал ваши сборки там, где можно заменить sqlite3.dll - SQLite Expert, FireFox SQLite Manager.

Итог:
1. БД создаётся
2. таблица с "tokenize=icu ru_RU" создаётся
3. INSERT в такую таблицу не происходит (ошибки ниже)
4. Посему нельзя проверить CI для кириллицы

Ошибка FF SQlite Manager:

SQLiteManager: Query: INSERT INTO test VALUES('Однажды в студёную зимнюю пору'); - executeStep failed
Exception Name: NS_ERROR_FAILURE
Exception Message: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [mozIStorageStatement.executeStep]

Ошибка SQLite Expert 3.1.11:
Exception:
-----------------------------------------------------------------------------------------
2.1 Date : Sat, 11 Sep 2010 21:38:52 +0400
2.2 Address : 009D5ED7
2.3 Module Name : SQLiteExpertPro.exe - (The complete administration tool for SQLite)
2.4 Module Version: 3.1.11.2087
2.5 Type : ESQLiteException
2.6 Message : SQL logic error or missing database.
2.7 ID : D21E
2.8 Count : 1
2.9 Status : New
2.10 Note :


Зато:
1. SELECT 'ы' LIKE 'Ы' --> 1
2. таблица с "tokenize=simple" создаётся
3. INSERT в неё происходит
4. Выборка данных происходит, работает Case Insensitive для ENG, но не работает для кириллицы (((

Как думаете, почему не работает?
...
Рейтинг: 0 / 0
Сборки SQLite
    #36842537
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
aesapronovКак думаете, почему не работает?

А коллэйшен ru_RU откуда возьмется? :-) Нужно или его создавать по умолчанию при инициализации SQLite (соответствующий патч можно взять из моего репозитория), или создавать вручную при каждом подключении к БД.
...
Рейтинг: 0 / 0
Сборки SQLite
    #36844416
IIITOPOR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MBG Нужно или его создавать по умолчанию при инициализации SQLite (соответствующий патч можно взять из моего репозитория), или создавать вручную при каждом подключении к БД.

А можно подробнее что за патч, где взять и как создать колейшн?
...
Рейтинг: 0 / 0
Сборки SQLite
    #36844922
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
IIITOPORMBG Нужно или его создавать по умолчанию при инициализации SQLite (соответствующий патч можно взять из моего репозитория), или создавать вручную при каждом подключении к БД.

А можно подробнее что за патч, где взять и как создать колейшн?

А поиск по форуму сделать никак?..
Помогите с like и кодировками
...
Рейтинг: 0 / 0
Сборки SQLite
    #36845952
IIITOPOR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скачал icu.c скомпилировал в libsqliteicu.so при подключению выдает ошибку error during initialization:
...
Рейтинг: 0 / 0
Сборки SQLite
    #36846399
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aesapronov, перезалил библиотеку sqlite 3.7.2 - все должно работать, т.к. не работало из-за того, что в первоначальной библиотеке был битый файл icudt38.dll

Проверил все работает
Код: plaintext
1.
2.
3.
CREATE VIRTUAL TABLE t USING fts3(tokenize=icu ru_RU);
INSERT INTO t VALUES('Однажды в студёную зимнюю пору');
SELECT * FROM t WHERE t MATCH 'Однажды'; --> 'Однажды в студёную зимнюю пору'
SELECT * FROM t WHERE t MATCH 'однажды';  --> 'Однажды в студёную зимнюю пору'

Так же можно загружать и другие коллэйшены:

Код: plaintext
SELECT icu_load_collation('pl_PL', 'POLISH');

Сортировать с учетом указанного коллэйшена (после его загрузки)

Код: plaintext
SELECT * FROM tbd ORDER BY name COLLATE POLISH;
...
Рейтинг: 0 / 0
Сборки SQLite
    #36846696
dzh2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MBG,
И где в Вашем репозитарии http://mobigroup.ru/debian.html можно сыскать файлы для Windows?
Раньше была папка http://mobigroup.ru/files/icu-3.8-win/ но сейчас ее нет. Может быть, повторно выложите куда-нибудь.
...
Рейтинг: 0 / 0
Сборки SQLite
    #36846709
dzh2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexbootch
Так же можно загружать и другие коллэйшены:

Код: plaintext
SELECT icu_load_collation('pl_PL', 'POLISH');

Проверил с Вашей сборкой optimal_sqlite3_7_2 в SQLite Maestro, получаю ошибку
SQL Error: ICU error: ucol_open(): U_FILE_ACCESS_ERROR
Как я понимаю, не хватает еще какого-то файла, кроме icudt38.dll, icuin38.dll, icuuc38.dll, mingwm10.dll, sqlite3.dll.
...
Рейтинг: 0 / 0
Сборки SQLite
    #36847099
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dzh2000, у меня все работает. Обновите файлы из выложенного мной архива SQLite 3.7.2
...
Рейтинг: 0 / 0
25 сообщений из 57, страница 1 из 3
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Сборки SQLite
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]