function setup_test() { ./use <<< " CREATE DATABASE test_jfg; CREATE TABLE test_jfg.t1( id BIGINT PRIMARY KEY, v INT unsigned NOT NULL, vv tinyint unsigned GENERATED ALWAYS AS ((case v when 0 then 0 else 1 end)) VIRTUAL NOT NULL, INDEX(vv))" n=$((40 * 1000)) seq 1 $n | sed -e 's/.*/(&, 0)/' | paste -s -d "$(printf ',%.0s' {1..1000})\n" | sed -e 's/.*/INSERT INTO t1 (id, v) values &;/' | ./use test_jfg | pv -tN insert } function check_memory_innodb_memory() { cd ~/sandboxes local sql="select now(), event_name, current_number_of_bytes_used/1024/1024/1024" sql="$sql from memory_summary_global_by_event_name where event_name = 'memory/innodb/memory'" while sleep 1; do ls */data/*.pid > /dev/null 2>&1 test $? -eq 0 || { echo "Error: we need one sandbox running !"; continue; } local res="$(ls */data/*.pid 2> /dev/null)" test $(wc -l <<< "$res") -eq 1 || { echo "Error: we need only one sandbox running !"; continue; } local cmd="$(cut -d / -f 1 <<< $res)/use" $cmd -N performance_schema <<< "$sql" done | tee -a check_memory_innodb_memory } function check_memory_ps() { cd ~/sandboxes while sleep 1; do local pid="$(pgrep mysqld)" test "$pid" != "" || { echo "Error: we need one sandbox running !"; continue; } test $(wc -l <<< "$pid") -eq 1 || { echo "Error: we need only one sandbox running !"; continue; } echo "$(date) $(ps -p $pid -o rss | tail -n +2)" done| tee -a check_memory_ps } function stress_gc() { date while true; do seq 1 $n | awk 'BEGIN{srand()} {print "UPDATE t1 SET v = ", int(10*rand()) % 2 == 0 ? 0 : int(10*rand()), " WHERE id = " $1 ";"}' | sed -e '1s/^/BEGIN;/;$s/$/COMMIT;/' | ./use test_jfg ./use test_jfg <<< "SELECT vv, count(*) from t1 GROUP BY vv" > /dev/null echo done | pv -t > /dev/null }