Форум сайта python.su
Я уже спрашивала на этом форуме о работе с базой данных:
http://python.su/forum/topic/14442/?page=1
Кратко задача такая:
Есть база данных белков, в которой порядка 11 миллионов записей. Периодически нужно делать выборки, а так же записывать в нее много данных. База данных - sqlite.
На моем домашнем компьютере запись данных (около 10 тысяч) в базу данных занимает несколько часов.
Так жить нельзя
Данные записываются примерно так:
cu.executemany("UPDATE proteins SET taxon=?, status=? WHERE ID=?", datum)
Офлайн
Надеюсь индекс по полю ID создан?
Офлайн
Проверьте, использует ли executemany одну транзакцию. Скорее всего да, но проверить не помешает.
Вот здесь основные приемы оптимизации Sqlite описаны: http://web.utk.edu/~jplyon/sqlite/SQLite_optimization_FAQ.html
Офлайн
Спасибо, пойду читать
Офлайн
Проверьте, использует ли executemany одну транзакцию. Скорее всего да, но проверить не помешает.А как это проверить?
Надеюсь индекс по полю ID создан?О глупый я человек, женщина! Нет, не создан.
Офлайн
ElkaОдин момент, если поле описано как
Нет, не создан.
Пойду разбираться, как это делать.
ID PRIMARY KEY
ID INTEGER
Офлайн
Всем спасибо за советы!
Помогли индексация и изменение размера кеша в памяти при обновлении. К тому же нашла еще в коде ошибку, из-за которой тоже были заметные тормоза.
Офлайн
Ну и сколько по времени сейчас это занимает?
Офлайн
Порядка секунды (или меньше), точно время не засекала, но очень быстро.
Офлайн