mirror of https://github.com/postgres/postgres
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.4 KiB
56 lines
1.4 KiB
#!/usr/bin/sysbench
|
|
-- -------------------------------------------------------------------------- --
|
|
-- Bulk insert benchmark: do multi-row INSERTs concurrently in --threads
|
|
-- threads with each thread inserting into its own table. The number of INSERTs
|
|
-- executed by each thread is controlled by either --time or --events.
|
|
-- -------------------------------------------------------------------------- --
|
|
|
|
cursize=0
|
|
|
|
function thread_init()
|
|
drv = sysbench.sql.driver()
|
|
con = drv:connect()
|
|
end
|
|
|
|
function prepare()
|
|
local i
|
|
|
|
local drv = sysbench.sql.driver()
|
|
local con = drv:connect()
|
|
|
|
for i = 1, sysbench.opt.threads do
|
|
print("Creating table 'sbtest" .. i .. "'...")
|
|
con:query(string.format([[
|
|
CREATE TABLE IF NOT EXISTS sbtest%d (
|
|
id INTEGER NOT NULL,
|
|
k INTEGER DEFAULT '0' NOT NULL,
|
|
PRIMARY KEY (id))]], i))
|
|
end
|
|
end
|
|
|
|
function event()
|
|
if (cursize == 0) then
|
|
con:bulk_insert_init("INSERT INTO sbtest" .. thread_id+1 .. " VALUES")
|
|
end
|
|
|
|
cursize = cursize + 1
|
|
|
|
con:bulk_insert_next("(" .. cursize .. "," .. cursize .. ")")
|
|
end
|
|
|
|
function thread_done(thread_9d)
|
|
con:bulk_insert_done()
|
|
con:disconnect()
|
|
end
|
|
|
|
function cleanup()
|
|
local i
|
|
|
|
local drv = sysbench.sql.driver()
|
|
local con = drv:connect()
|
|
|
|
for i = 1, sysbench.opt.threads do
|
|
print("Dropping table 'sbtest" .. i .. "'...")
|
|
con:query("DROP TABLE IF EXISTS sbtest" .. i )
|
|
end
|
|
end
|
|
|