crossplatform.ru

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


  Ответ в Многопоточность при работе с БД
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
kibsoft Дата 20.2.2010, 12:46
 
Цитата(Litkevich Yuriy @ 20.2.2010, 1:58) *
Цитата(kibsoft @ 20.2.2010, 3:19) *
Кончилось все хорошо, с 6 секунд парсинга и записи в БД "Войны и мир" ускорил до 1,6
чем ускорил?

Все оставил прежним, но индекс сделал не уникальным(уникальность у меня проверяется в программе). Ну и убрал лишний столбец ID с автоинкрементом(незнаю зачем вообще его в данном случае делал..)
Litkevich Yuriy Дата 20.2.2010, 0:58
 
Цитата(kibsoft @ 20.2.2010, 3:19) *
Кончилось все хорошо, с 6 секунд парсинга и записи в БД "Войны и мир" ускорил до 1,6
чем ускорил?
kibsoft Дата 20.2.2010, 0:19
 
Цитата(MoPDoBoPoT @ 18.2.2010, 20:02) *
Чем, собственно, все закончилось?

Кончилось все хорошо, с 6 секунд парсинга и записи в БД "Войны и мир" ускорил до 1,6 :)
MoPDoBoPoT Дата 18.2.2010, 19:02
  Чем, собственно, все закончилось?
kibsoft Дата 15.2.2010, 21:35
 
Цитата(Litkevich Yuriy @ 15.2.2010, 22:20) *
Цитата(MoPDoBoPoT @ 16.2.2010, 0:07) *
Но попробовать явно начать-закончить транзакцию все равно стоит, а то мало ли (:
тем более, что это не сложно:
QSqlDatabase::database().transaction();
...
QSqlDatabase::database().commit();



При явном указании ничего не изменилось :(
На sql.ru дали вот такой запрос:
alter session set skip_unusable_indexes=true, ошибка теперь не выводится и execBatch() возвращает true, но данные в таблицу не заносятся :huh:
Litkevich Yuriy Дата 15.2.2010, 21:20
 
Цитата(MoPDoBoPoT @ 16.2.2010, 0:07) *
Но попробовать явно начать-закончить транзакцию все равно стоит, а то мало ли (:
тем более, что это не сложно:
QSqlDatabase::database().transaction();
...
QSqlDatabase::database().commit();
MoPDoBoPoT Дата 15.2.2010, 21:07
 
Цитата(Litkevich Yuriy @ 15.2.2010, 20:24) *
вот не могу вспомнить/найти, где это обсуждалось. Явное использование транзакции помогало ускорить процесс.

Ну да, при последовательном выполнении инструкций, но здесь используется execBatch(), который поддерживается Ораклом. В этом случае данные пакуются в массивы и передаются на сервер, где уже вставляются. По-моему так :)

Но попробовать явно начать-закончить транзакцию все равно стоит, а то мало ли (:
kibsoft Дата 15.2.2010, 20:45
  Не явно их не использую..а как beginTransaction() у QSqlDriver?
просто в БД я вообще не силен, по ним ничего толком не читал..
Litkevich Yuriy Дата 15.2.2010, 20:24
 
Цитата(MoPDoBoPoT @ 15.2.2010, 23:07) *
там уже оптимизировано в этом плане.
вот не могу вспомнить/найти, где это обсуждалось. Явное использование транзакции помогало ускорить процесс.
MoPDoBoPoT Дата 15.2.2010, 20:07
 
Цитата(kibsoft @ 15.2.2010, 19:17) *
Не в этом дело..без отлючения/влючения индекса и с позиционным работает...но дольше вставка идет чем без индекса, но зато обновление базы с индексом намного быстрее.. вот я и хочу на время вствки его отключать, но видимо так нельзя..

Я в курсе. Конечной целью у тебя является увеличить скорость записи данных в БД, потому я и сделал замечание. Собственно, подготовка запроса (prepare) служит для того, чтобы СУБД разобрало текст запроса один раз и поместила его в библиотечный кэш, а пользовалось им много раз (сам разбор запроса занимает некоторое время).
Насчет индексов - спроси про это на sql.ru, там прохаванные в этом люди.
Цитата(Litkevich Yuriy @ 15.2.2010, 19:38) *
kibsoft, ты транзакции используешь?

Так он же execBatch() пользуется, там уже оптимизировано в этом плане.
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 23:12