Найти - Пользователи
Полная версия: Как ускорить работу с базой данных?
Начало » Базы данных » Как ускорить работу с базой данных?
1
Elka
Я уже спрашивала на этом форуме о работе с базой данных:
http://python.su/forum/topic/14442/?page=1

Кратко задача такая:
Есть база данных белков, в которой порядка 11 миллионов записей. Периодически нужно делать выборки, а так же записывать в нее много данных. База данных - sqlite.
На моем домашнем компьютере запись данных (около 10 тысяч) в базу данных занимает несколько часов.
Так жить нельзя

Данные записываются примерно так:
cu.executemany("UPDATE  proteins SET taxon=?, status=? WHERE ID=?", datum)
datum - это лист из tuples.

Что можно сделать, чтобы все это работало в приемлимое время? Поменять базу данных? Переписать код? Поменять компьютер (а если так, то какие минимальные требования)?
PooH
Надеюсь индекс по полю ID создан?
Ed
Проверьте, использует ли executemany одну транзакцию. Скорее всего да, но проверить не помешает.
Вот здесь основные приемы оптимизации Sqlite описаны: http://web.utk.edu/~jplyon/sqlite/SQLite_optimization_FAQ.html
Elka
Спасибо, пойду читать
Elka
Проверьте, использует ли executemany одну транзакцию. Скорее всего да, но проверить не помешает.
А как это проверить?

Надеюсь индекс по полю ID создан?
О глупый я человек, женщина! Нет, не создан.
Пойду разбираться, как это делать.
PooH
Elka
Нет, не создан.
Пойду разбираться, как это делать.
Один момент, если поле описано как
ID PRIMARY KEY
то индекс уже создан неявно
а вот если
ID INTEGER
тогда да, надо его добавить
Elka
Всем спасибо за советы!
Помогли индексация и изменение размера кеша в памяти при обновлении. К тому же нашла еще в коде ошибку, из-за которой тоже были заметные тормоза.
Ed
Ну и сколько по времени сейчас это занимает?
Elka
Порядка секунды (или меньше), точно время не засекала, но очень быстро.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB