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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.81
OMu4KA
0 / 0 / 0
Регистрация: 10.12.2007
Сообщений: 5
#1

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

03.04.2008, 12:40. Просмотров 4435. Ответов 7
Метки нет (Все метки)

Здравствуйте!
Собственно, мне нужно осуществлять динамическую запись в журнал происходящих в программе изменений. Делаю это с помощью базы данных SQLite. Пишу на С++, используя исходные тексты на С - sqlite-source-3_3_15.
Хотелось бы оптимизировать скорость выполнения записи в таблицу. Так как вставка записей в таблицу (INSERT) происходит очень часто (несколько сотен в секунду), то программа сильно тормозит. Судя по всему, медленная работа винчестера, так как загрузка процессора при этом небольшая.
Вроде движок SQLite называют самым быстрым.
Или для этой цели вообще любая база данных не подойдет и надо использовать другие механизмы, вроде записи в текстовые или бинарные файлы?
Может кто-нибудь подсказать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mik-a-el
CyberForum Owner
57120 / 36870 / 231
Регистрация: 10.04.2006
Сообщений: 12,660
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
57120 / 36870 / 231
Регистрация: 10.04.2006
Сообщений: 12,660
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
57120 / 36870 / 231
Регистрация: 10.04.2006
Сообщений: 12,660
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++
Скорость выполнения, а так же работа с дв. файлами C++
Найти количество счастливых билетов учитывая скорость выполнения программы C++
Влияет ли невыполняющееся условие на скорость выполнения строчки с этим условием? C++
C++ Работа с SQLite

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

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

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