Я сделал профилирование моей программы python и заметил, что у них много звонков, и они занимают много времени.
Лучше ли это сделать:
db = MySQLcb.connect(...)
c = db.cursor(...)
c.execute('INSERT...)
c.commit()
c.execute('INSERT...)
c.commit()
или же
db = MySQLcb.connect(...)
c = db.cursor(...)
c.execute('INSERT...)
c.execute('INSERT...)
c.commit()
Зная, что я делаю много вложений (тысячи).
До тех пор, пока вы используете таблицы InnoDB, вы можете найти советы на этой странице полезными.
Большинство баз данных имеют возможности для массовой вставки, а MySQL не является исключением.
Если вы медленно находите свои вставки, убедитесь, что у вас нет набора autocommit
, поскольку это заставляет транзакцию работать с каждой отдельной операцией.
db.commit
после каждого c.executemany(...)
я делаю? Или одного в конце достаточно?
executemany()
который вы должны вызывать только один раз в списке значений.
connect()
. И для многих вставок в одну таблицу посмотрите наexecutemany
.