Postgresql Batch Insert 방식 성능비교

1 minute read

__author__ = ‘archmagece’

import pika import json

import sys sys.path.append(“.”) import w_parser.data_sender as data_sender

import wftp_daemon.w_parser.data_sender as data_sender

from wftp_daemon.config import *

from datetime import time

import time

createQuery = “"”CREATE TABLE weather.test1 ( col1 bigserial NOT NULL, col2 character varying(100), col3 integer, CONSTRAINT test1_pkey PRIMARY KEY (col1) )”””

test1 : 1by 1 autocommit on

t0 = time.time() sender = data_sender.PostgreSQLSender(tableName=”test1”, p_autocommit=True) for i in range(1, 10000): csvRaw = { “col2”: “coocococoococracter”, “col3”: 1 } sender.sendResultDict(csvRaw) sender.flush()

t1 = time.time() print “test1 : “, t1 - t0

test2 : 1by 1 autocommit off

t0 = time.time() sender = data_sender.PostgreSQLSender(tableName=”test1”, p_autocommit=False) for i in range(1, 10000): csvRaw = { “col2”: “coocococoococracter”, “col3”: 1 } sender.sendResultDict(csvRaw) sender.flush()

t1 = time.time() print “test2 : “, t1 - t0

test3 : exemany autocommit on

t0 = time.time() sender = data_sender.PostgreSQLSender(tableName=”test1”, p_autocommit=True) resultList = list() for i in range(1, 10000): csvRaw = { “col2”: “coocococoococracter”, “col3”: 1 } resultList.append(csvRaw) sender.exeMany(resultList) sender.flush()

t1 = time.time() print “test3 : “, t1 - t0

test4 : exemany autocommit off

t0 = time.time() sender = data_sender.PostgreSQLSender(tableName=”test1”, p_autocommit=False) resultList = list() for i in range(1, 10000): csvRaw = { “col2”: “coocococoococracter”, “col3”: 1 } resultList.append(csvRaw) sender.exeMany(resultList) sender.flush()

t1 = time.time() print “test4 : “, t1 - t0

test5 : string append batch query autocommit on

t0 = time.time() sender = data_sender.PostgreSQLSender(tableName=”test1”, p_autocommit=True)

query = “insert into weather.test1 (col2, col3) values “ values = list() for i in range(1, 10000): csvRaw = { “col2”: “coocococoococracter”, “col3”: 1 } values.append(“(‘%s’, %s)” % (csvRaw[“col2”], csvRaw[“col3”])) query += “,”.join(values)

print query

sender.exeQuery(query) sender.flush()

t1 = time.time() print “test5 : “, t1 - t0

test6 : string append batch query autocommit off

t0 = time.time() sender = data_sender.PostgreSQLSender(tableName=”test1”, p_autocommit=False)

query = “insert into weather.test1 (col2, col3) values “ values = list() for i in range(1, 10000): csvRaw = { “col2”: “coocococoococracter”, “col3”: 1 } values.append(“(‘%s’, %s)” % (csvRaw[“col2”], csvRaw[“col3”])) query += “,”.join(values)

print query

sender.exeQuery(query) sender.flush()

t1 = time.time() print “test6 : “, t1 - t0