LINUX.ORG.RU

Быстрое чтение строк в sqlite3

 


0

1

Подскажите, а есть в sqlite3 способ забрать из sqlite результат SELECT быстрее чем sqlite3_prepare/sqlite3_step/sqlite3_finalize?

Результат SELECT около 300k строк. Таким циклом читается пример за 16 секунд. Это очень много. Хотелось бы на порядок быстрее...

★★★★★

Не совем понимаю, зачем prepare/finalize на каждой итерации (если сам запрос не меняется, конечно).

Makhno
()
Ответ на: комментарий от Makhno

Я имел ввиду сам подход. В цикле разумеется только sqlite3_step.

atrus ★★★★★
() автор топика

Скорее всего тормозит твоё приложение. Профайлер в зубы и вперёд. Для проверки можешь закомментить весь код обработки записи.

anonymous
()
Ответ на: комментарий от anonymous

Можешь не отвечать, я уже посчитал. 60М/300К=200 байт на запись. Меняй диск на SSD. Проверить что дело в нём можно в iotop

anonymous
()
Ответ на: комментарий от anonymous

Хм... Что-то я в таком разрезе не думал. Не, ssd не вариант. В боевых условиях прога на откровенных помойках может запускаться.

Но хотя бы понятно что делать. Поскольку запрос лишь кеширует в памяти необходимые данные придётся сделать его заранее и сильно сжать результат. Благо там повторяющегося текста овердофига.

atrus ★★★★★
() автор топика

Это с холодным дисковым кешем оси? А если повторить запуск?

anonymous
()

Можно попробовать открыть стройней прогой, типа sqlitebrowser. И если и она тормозит - тогда уже разбираться.

RazrFalcon ★★★★★
()

Ммм... Попробуй отключить autocommit, обернув чтение в транзакцию. Может быстрее будет читать.

ilammy ★★★
()

Это sqlite3, сынок. Это значит только и исключительно оверхед и тормоза на ровном месте. Бери или пиши нормальное хранилище оптимизированное под bulk read.

slovazap ★★★★★
()
Ответ на: комментарий от i-rinat

Отрицательный кеш удвоил время выполнения.

atrus ★★★★★
() автор топика
Ответ на: комментарий от ilammy

autocommit уже отключен, ибо база вообще открывается read only.

atrus ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

sqlite.exe выполняет этот запрос даже с записью в файл примерно за 2 секунды. Кажется всё-таки стоит поразбираться. :)

atrus ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.