mirror of
https://github.com/dolthub/dolt.git
synced 2025-12-30 16:12:39 -06:00
added sysbench scripts (#1229)
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
require("dolt_common")
|
||||
|
||||
dolt_prepare = prepare
|
||||
|
||||
function prepare()
|
||||
sysbench.opt.threads = 1
|
||||
dolt_prepare()
|
||||
end
|
||||
|
||||
function thread_init()
|
||||
drv = sysbench.sql.driver()
|
||||
con = drv:connect()
|
||||
|
||||
stmt = con:prepare('SELECT count(id) FROM sbtest1 WHERE big_int_col > 0')
|
||||
end
|
||||
|
||||
function thread_done()
|
||||
stmt:close()
|
||||
con:disconnect()
|
||||
end
|
||||
|
||||
function event()
|
||||
stmt:execute()
|
||||
end
|
||||
141
benchmark/perf_tools/sysbench_scripts/lua/dolt_common.lua
Normal file
141
benchmark/perf_tools/sysbench_scripts/lua/dolt_common.lua
Normal file
@@ -0,0 +1,141 @@
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- Common code for dolt benchmarks.
|
||||
-- -----------------------------------------------------------------------------
|
||||
|
||||
function init()
|
||||
assert(event ~= nil, "this script is meant to be included by other OLTP scripts and should not be called directly.")
|
||||
end
|
||||
|
||||
if sysbench.cmdline.command == nil then
|
||||
error("Command is required. Supported commands: prepare, warmup, run, cleanup, help")
|
||||
end
|
||||
|
||||
-- Command line options
|
||||
sysbench.cmdline.options = {
|
||||
table_size = {"Number of rows per table", 10000},
|
||||
create_table_options = {"Extra CREATE TABLE options", ""},
|
||||
}
|
||||
|
||||
-- Prepare the dataset. This command supports parallel execution, i.e. will
|
||||
-- benefit from executing with --threads > 1 as long as --tables > 1
|
||||
function cmd_prepare()
|
||||
local drv = sysbench.sql.driver()
|
||||
local con = drv:connect()
|
||||
|
||||
print("Creating table 'sbtest1'")
|
||||
|
||||
local create_query = string.format( [[
|
||||
CREATE TABLE sbtest1 (
|
||||
id INT NOT NULL,
|
||||
tiny_int_col TINYINT NOT NULL,
|
||||
unsigned_tiny_int_col TINYINT UNSIGNED NOT NULL,
|
||||
small_int_col SMALLINT NOT NULL,
|
||||
unsigned_small_int_col SMALLINT UNSIGNED NOT NULL,
|
||||
medium_int_col MEDIUMINT NOT NULL,
|
||||
unsigned_medium_int_col MEDIUMINT UNSIGNED NOT NULL,
|
||||
int_col INT NOT NULL,
|
||||
unsigned_int_col INT UNSIGNED NOT NULL,
|
||||
big_int_col BIGINT NOT NULL,
|
||||
unsigned_big_int_col BIGINT UNSIGNED NOT NULL,
|
||||
decimal_col DECIMAL NOT NULL,
|
||||
float_col FLOAT NOT NULL,
|
||||
double_col DOUBLE NOT NULL,
|
||||
bit_col BIT NOT NULL,
|
||||
char_col CHAR NOT NULL,
|
||||
var_char_col VARCHAR(64) NOT NULL,
|
||||
tiny_text_col TINYTEXT NOT NULL,
|
||||
text_col TEXT NOT NULL,
|
||||
medium_text_col MEDIUMTEXT NOT NULL,
|
||||
long_text_col LONGTEXT NOT NULL,
|
||||
enum_col ENUM('val0', 'val1', 'val2') NOT NULL,
|
||||
set_col SET('val0', 'val1', 'val2') NOT NULL,
|
||||
date_col DATE NOT NULL,
|
||||
time_col TIME NOT NULL,
|
||||
datetime_col DATETIME NOT NULL,
|
||||
timestamp_col TIMESTAMP NOT NULL,
|
||||
year_col YEAR NOT NULL,
|
||||
|
||||
PRIMARY KEY(id),
|
||||
INDEX (big_int_col)
|
||||
); ]] .. sysbench.opt.create_table_options)
|
||||
|
||||
con:query(create_query)
|
||||
|
||||
if (sysbench.opt.table_size > 0) then
|
||||
print(string.format("Inserting %d records into 'sbtest1'", sysbench.opt.table_size))
|
||||
end
|
||||
|
||||
local query = [[INSERT INTO sbtest1
|
||||
(id, tiny_int_col, unsigned_tiny_int_col, small_int_col, unsigned_small_int_col, medium_int_col, unsigned_medium_int_col, int_col, unsigned_int_col, big_int_col, unsigned_big_int_col, decimal_col, float_col, double_col, bit_col, char_col, var_char_col, tiny_text_col, text_col, medium_text_col, long_text_col, enum_col, set_col, date_col, time_col, datetime_col, timestamp_col, year_col)
|
||||
VALUES
|
||||
]]
|
||||
|
||||
local str_vals = {"val0", "val1", "val2"}
|
||||
math.randomseed(0)
|
||||
|
||||
con:bulk_insert_init(query)
|
||||
for i = 1, sysbench.opt.table_size do
|
||||
local row_values = "(" .. i .. "," .. -- id
|
||||
math.random(-128, 127) .. "," .. -- tiny_int_col
|
||||
math.random(0, 255) .. "," .. -- unsigned_tiny_int_col
|
||||
math.random(-32768, 32767) .. "," .. -- small_int_col
|
||||
math.random(0, 65535) .. "," .. -- unsigned_small_int_col
|
||||
math.random(-8388608, 8388607) .. "," .. -- medium_int_col
|
||||
math.random(0, 16777215) .. "," .. -- unsigned_medium_int_col
|
||||
math.random(-2147483648, 2147483647) .. "," .. -- int_col
|
||||
math.random(0, 4294967295) .. "," .. -- unsigned_int_col
|
||||
math.random(-4611686018427387904, 4611686018427387903) .. "," .. -- big_int_col
|
||||
math.random(0, 9223372036854775807) .. "," .. -- unsigned_big_int_col
|
||||
math.random() .. "," .. -- decimal_col
|
||||
math.random() .. "," .. -- float_col
|
||||
math.random() .. "," .. -- double_col
|
||||
math.random(0, 1) .. "," .. -- bit_col
|
||||
"'" .. string.char(math.random(0x30, 0x5A)) .. "'" .. "," .. -- char_col
|
||||
"'" .. str_vals[math.random(1, 3)] .. "'" .. "," .. -- var_char_col
|
||||
"'" .. str_vals[math.random(1, 3)] .. "'" .. "," .. -- tiny_text_col
|
||||
"'" .. str_vals[math.random(1, 3)] .. "'" .. "," .. -- text_col
|
||||
"'" .. str_vals[math.random(1, 3)] .. "'" .. "," .. -- medium_text_col
|
||||
"'" .. str_vals[math.random(1, 3)] .. "'" .. "," .. -- long_text_col
|
||||
"'" .. str_vals[math.random(1, 3)] .. "'" .. "," .. -- enum_col
|
||||
"'" .. str_vals[math.random(1, 3)] .. "'" .. "," .. -- set_col
|
||||
"'2020-0" .. math.random(1, 9) .. "-" .. math.random(10, 28) .. "'" .. "," .. -- date_col
|
||||
"'0" .. math.random(1, 9) .. ":" .. math.random(10, 59) .. ":00'" .. "," .. -- time_col
|
||||
"'2020-0" .. math.random(1, 9) .. "-" .. math.random(10, 28) .. " 0" .. math.random(1, 9) .. ":" .. math.random(10, 59) .. ":00'" .. "," .. -- datetime_col
|
||||
"'2020-0" .. math.random(1, 9) .. "-" .. math.random(10, 28) .. " 0" .. math.random(1, 9) .. ":" .. math.random(10, 59) .. ":00'" .. "," .. -- timestamp_col
|
||||
math.random(1901, 2155) .. ")" -- year_col
|
||||
|
||||
con:bulk_insert_next(row_values)
|
||||
end
|
||||
con:bulk_insert_done()
|
||||
|
||||
end
|
||||
|
||||
|
||||
-- Implement parallel prepare and warmup commands, define 'prewarm' as an alias
|
||||
-- for 'warmup'
|
||||
sysbench.cmdline.commands = {
|
||||
prepare = {cmd_prepare, sysbench.cmdline.PARALLEL_COMMAND},
|
||||
}
|
||||
|
||||
local t = sysbench.sql.type
|
||||
|
||||
function thread_init()
|
||||
drv = sysbench.sql.driver()
|
||||
con = drv:connect()
|
||||
end
|
||||
|
||||
function thread_done()
|
||||
con:disconnect()
|
||||
end
|
||||
|
||||
function cleanup()
|
||||
local drv = sysbench.sql.driver()
|
||||
local con = drv:connect()
|
||||
|
||||
print("Dropping table 'sbtest1'")
|
||||
con:query("DROP TABLE IF EXISTS sbtest1")
|
||||
end
|
||||
|
||||
|
||||
|
||||
24
benchmark/perf_tools/sysbench_scripts/lua/index_scan.lua
Normal file
24
benchmark/perf_tools/sysbench_scripts/lua/index_scan.lua
Normal file
@@ -0,0 +1,24 @@
|
||||
require("dolt_common")
|
||||
|
||||
dolt_prepare = prepare
|
||||
|
||||
function prepare()
|
||||
sysbench.opt.threads = 1
|
||||
dolt_prepare()
|
||||
end
|
||||
|
||||
function thread_init()
|
||||
drv = sysbench.sql.driver()
|
||||
con = drv:connect()
|
||||
|
||||
stmt = con:prepare('SELECT * FROM sbtest1 WHERE big_int_col > 0')
|
||||
end
|
||||
|
||||
function thread_done()
|
||||
stmt:close()
|
||||
con:disconnect()
|
||||
end
|
||||
|
||||
function event()
|
||||
stmt:execute()
|
||||
end
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
require("dolt_common")
|
||||
|
||||
dolt_prepare = prepare
|
||||
|
||||
function prepare()
|
||||
sysbench.opt.threads = 1
|
||||
dolt_prepare()
|
||||
end
|
||||
|
||||
function thread_init()
|
||||
drv = sysbench.sql.driver()
|
||||
con = drv:connect()
|
||||
|
||||
stmt = con:prepare('SELECT * FROM sbtest1 WHERE small_int_col > 0')
|
||||
end
|
||||
|
||||
function thread_done()
|
||||
stmt:close()
|
||||
con:disconnect()
|
||||
end
|
||||
|
||||
function event()
|
||||
stmt:execute()
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user