Форум программистов, компьютерный форум CyberForum.ru

Скорость выполнения запросов в SQLite - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.81
OMu4KA
0 / 0 / 0
Регистрация: 10.12.2007
Сообщений: 5
03.04.2008, 12:40     Скорость выполнения запросов в SQLite #1
Здравствуйте!
Собственно, мне нужно осуществлять динамическую запись в журнал происходящих в программе изменений. Делаю это с помощью базы данных SQLite. Пишу на С++, используя исходные тексты на С - sqlite-source-3_3_15.
Хотелось бы оптимизировать скорость выполнения записи в таблицу. Так как вставка записей в таблицу (INSERT) происходит очень часто (несколько сотен в секунду), то программа сильно тормозит. Судя по всему, медленная работа винчестера, так как загрузка процессора при этом небольшая.
Вроде движок SQLite называют самым быстрым.
Или для этой цели вообще любая база данных не подойдет и надо использовать другие механизмы, вроде записи в текстовые или бинарные файлы?
Может кто-нибудь подсказать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mik-a-el
CyberForum Owner
 Аватар для mik-a-el
56385 / 36135 / 231
Регистрация: 10.04.2006
Сообщений: 12,598
03.04.2008, 13:06     Скорость выполнения запросов в SQLite #2
Цитата Сообщение от OMu4KA
Так как вставка записей в таблицу (INSERT) происходит очень часто (несколько сотен в секунду), то программа сильно тормозит.
Используйте ADO. Запись осуществляейте через датасет в пакетном режиме.
OMu4KA
0 / 0 / 0
Регистрация: 10.12.2007
Сообщений: 5
04.04.2008, 07:32  [ТС]     Скорость выполнения запросов в SQLite #3
Цитата Сообщение от mik-a-el Посмотреть сообщение
Используйте ADO. Запись осуществляейте через датасет в пакетном режиме.
Пыталась, но насколько я поняла, ADO не умеет создавать базы и таблицы :-(, а только подключается к уже созданным.
mik-a-el
CyberForum Owner
 Аватар для mik-a-el
56385 / 36135 / 231
Регистрация: 10.04.2006
Сообщений: 12,598
04.04.2008, 10:38     Скорость выполнения запросов в SQLite #4
ADO умеет создавать таблицы. Базы думаю тоже, но это нуждается в проверке.
OMu4KA
0 / 0 / 0
Регистрация: 10.12.2007
Сообщений: 5
04.04.2008, 13:55  [ТС]     Скорость выполнения запросов в SQLite #5
Цитата Сообщение от mik-a-el Посмотреть сообщение
ADO умеет создавать таблицы. Базы думаю тоже, но это нуждается в проверке.
Извините, я не нашла в компонентах ADO, что-нибудь напоминающее метод CreateTable (как в BDE). :huh:

Решила проблему следующим образом:
На выполнение транзакций требуется относительно много времени.
Теперь записи накапливаю в отдельном списке, а потом все сразу записываю в таблицу в одной транзакции:
Код
BEGIN; 
INSERT INTO Log VALUES (...);
INSERT INTO Log VALUES (...);
INSERT INTO Log VALUES (...);
...
COMMIT;
(мультистроковый ввод моя версия SQLite не поддерживает).

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

Спасибо всем!
mik-a-el
CyberForum Owner
 Аватар для mik-a-el
56385 / 36135 / 231
Регистрация: 10.04.2006
Сообщений: 12,598
04.04.2008, 14:00     Скорость выполнения запросов в SQLite #6
Цитата Сообщение от OMu4KA
Извините, я не нашла в компонентах ADO, что-нибудь напоминающее метод CreateTable (как в BDE)
Учите SQL
OMu4KA
0 / 0 / 0
Регистрация: 10.12.2007
Сообщений: 5
04.04.2008, 14:06  [ТС]     Скорость выполнения запросов в SQLite #7
Цитата Сообщение от mik-a-el Посмотреть сообщение
Учите SQL
Тогда и нет смысла в ADO, с задачей SQL-запросов прекрасно справляется, например, тот же SQLite.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2008, 14:09     Скорость выполнения запросов в SQLite
Еще ссылки по теме:

Как узнать скорость выполнения программы? C++
Начать работать с SQLite C++
C++ Работа с SQLite
Скорость выполнения delete C++
Найти количество счастливых билетов учитывая скорость выполнения программы C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
mik-a-el
CyberForum Owner
 Аватар для mik-a-el
56385 / 36135 / 231
Регистрация: 10.04.2006
Сообщений: 12,598
04.04.2008, 14:09     Скорость выполнения запросов в SQLite #8
Цитата Сообщение от OMu4KA
Тогда и нет смысла в ADO, с задачей SQL-запросов прекрасно справляется, например, тот же SQLite.
Задача ADO - не в подмене средств выполнения запросов.
Yandex
Объявления
04.04.2008, 14:09     Скорость выполнения запросов в SQLite
Ответ Создать тему
Опции темы

Текущее время: 00:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru