import psycopg2 import threading import time DSN = "dbname=postgres host=localhost" def init(): conn = psycopg2.connect(DSN) cursor = conn.cursor() cursor.execute("""DROP TABLE IF EXISTS foo""") cursor.execute("""CREATE TABLE foo (i serial primary key)""") conn.commit() def big_slow(): conn = psycopg2.connect(DSN) cursor = conn.cursor() # hold onto many AELs for i in range(6000): cursor.execute("create temp table foo%s (i int) on commit drop" % (i,)) time.sleep(600) conn.rollback() def many_small_xacts(thread_id): conn = psycopg2.connect(DSN) cursor = conn.cursor() for loops in range(100000): #cursor.execute("create temp table foo1 (i int) on commit drop"); cursor.execute("begin") cursor.execute("insert into foo values (default)") cursor.execute("prepare transaction %s", [thread_id]) cursor.execute("commit prepared %s", [thread_id]) init() threading.Thread(target=big_slow).start() for i in range(48): threading.Thread(target=many_small_xacts, args=['t' + str(i)]).start()