Bash

Dependencies

  • mysql client program

  • Bourne-Again Shell (bash)

Code

#!/bin/bash
MHOST="127.0.0.1"
MPORT="3306"
MUSER="root"
MDB=""
NUM_WORKERS=128
BATCH_SIZE=256
memsql_exec()
{
mysql -h $MHOST -P $MPORT -u $MUSER $MDB -e "$1"
}
memsql_exec_multi()
{
mysql -h $MHOST -P $MPORT -u $MUSER $MDB -e \
"$(for ((b = 0; b < $BATCH_SIZE; b++)); do
echo "$1;"
done)"
}
echo "Creating database test"
memsql_exec "CREATE DATABASE IF NOT EXISTS test"
MDB="test"
echo "Creating table tbl"
memsql_exec "CREATE TABLE IF NOT EXISTS tbl (id INT AUTO_INCREMENT PRIMARY KEY)"
echo "Launching $NUM_WORKERS workers"
sleep 1
declare -a WORKERS
for ((worker = 0; worker < $NUM_WORKERS; worker++)); do
(while [ 1 ]; do
echo "Worker $worker inserting"
memsql_exec_multi "INSERT INTO tbl VALUES (NULL)"
done) &
WORKERS[$worker]=$!
done
sleep 10
for ((worker = 0; worker < $NUM_WORKERS; worker++)); do
echo "Killing worker $worker"
kill ${WORKERS[$worker]}
wait ${WORKERS[$worker]} 2>/dev/null
done
echo "Cleaning up"
sleep 1
memsql_exec "DROP DATABASE test"

Last modified: August 21, 2023

Was this article helpful?