crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Скорость работы БД в приложении
AD
  опции профиля:
сообщение 18.3.2011, 10:38
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Для более быстрого создания файла топографической библиотеки (бинарный файл, в котором хранится содержимое нескольких (многих) карт) определенного формата решено было использовать в качестве промежуточного варианта хранения данных БД. Проблема состоит в том, что после реализации этого подхода выяснилось, что вставка, изменение и выборка из таблиц СУЩЕСТВЕННО замедляет задачу, а не ускоряет ее. Как можно решить данную проблему? Заранее спасибо за подсказку! Как только я комментирую строчки, делающие выборку и внесение данных в таблицы - тут же скорость работы возрастает в разы.

Сообщение отредактировал AD - 18.3.2011, 10:39
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Kagami
  опции профиля:
сообщение 18.3.2011, 17:45
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

Спасибо сказали: 101 раз(а)




Репутация:   9  


Иногда работу СУБД сильно заменяют транзакции - с тем же SQLite они выполняются для каждой операции автоматически. Часто можно сильно ускорить работу если начинать транзакции вручную и завершать после выполнения всех (ну или части, если их можно сгруппировать логически) операций.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 18.3.2011, 17:54
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(Kagami @ 18.3.2011, 17:45) *
Иногда работу СУБД сильно заменяют транзакции - с тем же SQLite они выполняются для каждой операции автоматически. Часто можно сильно ускорить работу если начинать транзакции вручную и завершать после выполнения всех (ну или части, если их можно сгруппировать логически) операций.

Замедляют в смысле?
А как к примеру это сделать, т.е. запускать и завершать транзакции вручную?

Да читаю ассистент. Возник такой вопрос - могу использовать QSqlTableModel при работе с QSQLite?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Kagami
  опции профиля:
сообщение 18.3.2011, 20:59
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

Спасибо сказали: 101 раз(а)




Репутация:   9  


Цитата(AD @ 18.3.2011, 17:54) *
Замедляют в смысле?
А как к примеру это сделать, т.е. запускать и завершать транзакции вручную?
Пусть тебе надо сделать 5 операций вставки. По-умолчанию для каждой операции будет сделана своя транзакция (причем автоматически), т.е. QSqlDatabase::beginTransaction(); QSqlQuery::exec("..."); QSqlDatabase::commit(); ...
А теперь представь что у тебя таких операций в разы больше. При этом для каждой транзакции тот же QSqlLite создает журнал, а фактически - файл на жестком диске.
А если начать транзакцию самому (с помощью явного вызова QSqlDatabase::beginTransaction()), выполнить все свои запросы, а затем завершить ее, то все будет работать быстрее.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 18.3.2011, 22:56
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(Kagami @ 18.3.2011, 20:59) *
Пусть тебе надо сделать 5 операций вставки. По-умолчанию для каждой операции будет сделана своя транзакция (причем автоматически), т.е. QSqlDatabase::beginTransaction(); QSqlQuery::exec("..."); QSqlDatabase::commit(); ...
А теперь представь что у тебя таких операций в разы больше. При этом для каждой транзакции тот же QSqlLite создает журнал, а фактически - файл на жестком диске.
А если начать транзакцию самому (с помощью явного вызова QSqlDatabase::beginTransaction()), выполнить все свои запросы, а затем завершить ее, то все будет работать быстрее.

Ясно, спасибо. При работе с SQLite буду иметь в виду. Пока еще на Paradox. Посмотрел с помощью hasFeature() поддерживает ли мой драйвер Paradox транзакции и увидел, что не поддерживает.

Сообщение отредактировал AD - 18.3.2011, 22:56
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 1.4.2011, 16:41
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Кто-нибудь еще может подсказать, как увеличить скорость работы запросов? СУБД - Paradox. Переход на SQLite не удался в связи с проблемой транзакций. По каким причинам время работы запроса составляет несколько секунд?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- AD   Скорость работы БД в приложении   18.3.2011, 10:38
- - abc   субды быстро работают, сами запросы должны быть, в...   18.3.2011, 11:06
|- - AD   Цитата(abc @ 18.3.2011, 11:06) субды быст...   18.3.2011, 11:12
- - abc   не знаю, я работаю с PostgreSql я не работал с так...   18.3.2011, 13:17
|- - AD   Цитата(abc @ 18.3.2011, 13:17) не знаю, я...   18.3.2011, 14:03
- - abc   это стопудовый нонсенс. а почему взялся за Paradox...   18.3.2011, 14:28
|- - AD   Цитата(abc @ 18.3.2011, 14:28) это стопуд...   18.3.2011, 14:42
- - Kagami   Иногда работу СУБД сильно заменяют транзакции - с ...   18.3.2011, 17:45
|- - AD   Цитата(Kagami @ 18.3.2011, 17:45) Иногда ...   18.3.2011, 17:54
|- - Kagami   Цитата(AD @ 18.3.2011, 17:54) Замедляют в...   18.3.2011, 20:59
|- - AD   Цитата(Kagami @ 18.3.2011, 20:59) Пусть т...   18.3.2011, 22:56
|- - AD   Кто-нибудь еще может подсказать, как увеличить ско...   1.4.2011, 16:41
- - abc   можешь, почему нет   18.3.2011, 20:51
- - Litkevich Yuriy   Цитата(AD @ 18.3.2011, 13:12) Если перейт...   18.3.2011, 22:55
- - Iron Bug   а что в SQLite с транзакциями? по-моему, там не бы...   1.4.2011, 17:27
- - Litkevich Yuriy   я месяц назад пользовал небольшую (по мегабайтам) ...   1.4.2011, 19:48
- - Iron Bug   Цитата(Litkevich Yuriy @ 1.4.2011, 22:48)...   1.4.2011, 20:06
- - Litkevich Yuriy   Цитата(Iron Bug @ 1.4.2011, 23:06) потому...   2.4.2011, 9:21
|- - AD   Повторюсь. Проблема со скоростью - на Paradox, на ...   2.4.2011, 14:13
- - Iron Bug   я не раз сталкивалась с SQLite, на предыдущей рабо...   2.4.2011, 17:16
|- - AD   Цитата(Iron Bug @ 2.4.2011, 18:16) я не р...   3.4.2011, 12:59
- - Iron Bug   это в любом случае наздоровые задержки. может, у т...   4.4.2011, 19:16
|- - AD   Цитата(Iron Bug @ 4.4.2011, 20:16) это в ...   5.4.2011, 8:32
- - Iron Bug   ну, на вид вроде вообще примитив, совершенно ничег...   5.4.2011, 17:52


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 18:07