Russian Qt Forum
Июнь 16, 2024, 00:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: Окно загрузки данных  (Прочитано 16073 раз)
alexis031182
Гость
« Ответ #30 : Июнь 19, 2012, 15:32 »

Для начала скажите, какой из движков Вы используете у таблицы. Если MyISAM, то он транзакции как таковые не поддерживает. У него каждая операция - есть отдельная транзакция. Если InnoDB, то транзакции имеет смысл использовать однозначно.
Записан
Syveren
Гость
« Ответ #31 : Июнь 19, 2012, 16:35 »

QSqlDatabase db;
db.driver ()->hasFeature (QSqlDriver::Transactions); - поддерживаются ли транзакции
Если да, то удобно использовать
db.transaction(); db.rollback();db.commit();
Записан
vovan1982
Гость
« Ответ #32 : Июнь 19, 2012, 16:46 »

Для начала скажите, какой из движков Вы используете у таблицы. Если MyISAM, то он транзакции как таковые не поддерживает. У него каждая операция - есть отдельная транзакция. Если InnoDB, то транзакции имеет смысл использовать однозначно.

использую InnoDB

QSqlDatabase db;
db.driver ()->hasFeature (QSqlDriver::Transactions); - поддерживаются ли транзакции
Если да, то удобно использовать
db.transaction(); db.rollback();db.commit();

насколько я знаю для mysql транзакции поддерживаются
Записан
alexis031182
Гость
« Ответ #33 : Июнь 19, 2012, 17:00 »

использую InnoDB
Зачастую правильное решение.

насколько я знаю для mysql транзакции поддерживаются
Да, но не всеми движками. В мускуле их много. InnoDB как раз поддерживает. И для него транзакции нужны, иначе производительность отличается в худшую сторону от того же MyISAM.
Записан
vovan1982
Гость
« Ответ #34 : Июнь 20, 2012, 09:41 »

Попробовал сделать транзакцию на выборку данных,
сначала выполнил два запроса в самой mysql
1. SELECT * FROM table;
2. BEGIN; SELECT * FROM table; COMMIT;

2-й реально быстрей отрабатывает, но при вставке второго запроса в query.exec(), содержимое query оказывается пустым, хотя в самой mysql всё ок.

В чём может быть проблема, или я что-то делаю не так?
Записан
alexis031182
Гость
« Ответ #35 : Июнь 20, 2012, 09:53 »

Может быть надо запрос этот разбить на три query.exec()
Записан
vovan1982
Гость
« Ответ #36 : Июнь 20, 2012, 13:20 »

на 2-а Улыбающийся

BEGIN и всё остальное
Записан
vovan1982
Гость
« Ответ #37 : Июнь 20, 2012, 13:28 »

спасибо всем за помощь, после оптимизации запросов и использования транзакций удалось в разы сократить время загрузки, теперь вместо 10 сек. загрузка идёт 3 сек.

Без второго потока действительно не обойтись, попытался использовать qApp->processEvents(); но использование gif анимации в таком случае не возможно, анимация начинает работать только после полной загрузки виджета, а если у честь что при полной загрузке виджета окно с анимацией закрывается то смысла в анимации попросту нет.

Так что пошёл разбираться с потоками Улыбающийся.

Ещё раз спасибо за помощь.
Записан
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 20.