Замедление вставки в QSQLITE, Загнать большой txt файл в БД |
Здравствуйте, гость ( Вход | Регистрация )
Замедление вставки в QSQLITE, Загнать большой txt файл в БД |
cupersuper |
19.7.2014, 10:16
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 5.5.2011 Пользователь №: 2654 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте! Подскажите, пожалуйста, что можно придумать?
Пытаюсь загнать большой текстовый файл 30ГБ (500 млн строк) в базу данных SQLITE. Миллион строк влетают очень быстро, а дальше запись по мере роста БД начинает замедлятся.
|
|
|
lanz |
19.7.2014, 16:52
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Надо посмотреть где тормозит конкретно - в загрузке, в драйвере БД, в Qt.
|
|
|
cupersuper |
19.7.2014, 17:02
Сообщение
#3
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 5.5.2011 Пользователь №: 2654 Спасибо сказали: 0 раз(а) Репутация: 0 |
По всей видимости в самом цикле возникает проблема, как посмотреть на более низком уровне не совсем понимаю.
В системе жёсткий диск на запись занят на 100%, на чтение на 90-95%, проц почти не грузится |
|
|
Iron Bug |
19.7.2014, 18:33
Сообщение
#4
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
по моим наблюдениям, SQLite работает довольно шустро с базами размером до 300 Мб. базы большего размера начинают вызывать тормоза, вне зависимости от настроек (не знаю, чем это вызвано, память или другие ресурсы при этом особо не пожираются).
при загрузке больших объёмов, если при этом не нужно ничего читать из базы и не нужна синхронизация и транзакционность, можно включать настройку через PRAGMA: synchronous=off, count_changes=off и другие. Вообще, про оптимизацию большой загрузки данных (bulk load) можешь почитать тут, например: http://blog.quibb.org/2010/08/fast-bulk-inserts-into-sqlite/ Сообщение отредактировал Iron Bug - 19.7.2014, 18:35 |
|
|
Текстовая версия | Сейчас: 28.11.2024, 12:08 |