3
저는 SQLite3 데이터베이스에 큰 일괄 처리 삽입을하고 있는데 실제로 기대하고있는 것과 어떤 성능이 필요한지에 대한 감각을 얻으려고합니다.python과 sqlite3을 사용한 insert 성능
cursor.execute(
"CREATE TABLE tweets(
tweet_hash TEXT PRIMARY KEY ON CONFLICT REPLACE,
tweet_id INTEGER,
tweet_text TEXT)"
)
을 내 삽입은 다음과 같이 :
내 표는 다음과 같습니다
cursor.executemany("INSERT INTO tweets VALUES (?, ?, ?)", to_write)
to_write
는 튜플의 목록입니다.
현재 데이터베이스에 약 1,200 만 개의 행이 있으며 50 000
개의 행을 삽입하면 약 16 분이 걸리고 2008 macbook에서 실행됩니다.
이 소리가 합리적인가요? 아니면 어떤 일이 발생 했습니까?
는 각 쿼리에서 여러 값을 삽입하는 시도? 매우 큰 문자열을 만들어야하기 때문에 한 번에 모든 문자열이 아니라 각각 100 개가 될 수 있습니다. 내 경험으로 이것은 삽입 속도를 훨씬 향상시킵니다. –
@GustavLarsson :'executemany'는 쿼리를 준비하고 행당 열 *을 이미 스트리밍하는 것을 이용해야합니다. –
@GustavLarsson : 어떻게 여러 삽입물을 제안하셨습니까? 'execute()'와'executemany()'는 * one 문만 허용합니다. –