-
Notifications
You must be signed in to change notification settings - Fork 240
Description
I understand the motivation for restarting the database after every query. While I think considering the use of a buffer manager in a DBMS to be cheating is a bit strange, I agree that it makes a "cold" run less cold.
If you want to require a restart before a "cold" run, that's fine by us. It's your benchmark, after all.
However, it’s not clear why this approach is applied selectively to only some databases but not others. For example, if I restart ClickHouse after every run, I get the following results (left: main branch; right: ClickHouse restarted before each query):
Most other databases that use a buffer pool (such as MySQL or Postgres) aren't restarted at all. It just seems inconsistent to only do this with the fast database systems.
Could you clarify the rationale behind which systems are restarted and whether this policy could be made consistent across all databases?
In case you're interested, here is the modified run.sh for ClickHouse:
#!/bin/bash
# Restart clickhouse so no cache can be used
sudo clickhouse stop > /dev/null 2>&1
# Determine which set of files to use depending on the type of run
if [ "$1" != "" ] && [ "$1" != "tuned" ] && [ "$1" != "tuned-memory" ]; then
echo "Error: command line argument must be one of {'', 'tuned', 'tuned-memory'}"
exit 1
else if [ ! -z "$1" ]; then
SUFFIX="-$1"
fi
fi
TRIES=3
QUERY_NUM=1
cat queries"$SUFFIX".sql | while read -r query; do
[ -z "$FQDN" ] && sync
[ -z "$FQDN" ] && echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
sudo clickhouse start > /dev/null 2>&1
for _ in {1..300}
do
clickhouse-client --query "SELECT 1" > /dev/null 2>&1 && break
sleep 1
done
echo -n "["
for i in $(seq 1 $TRIES); do
RES=$(clickhouse-client --host "${FQDN:=localhost}" --password "${PASSWORD:=}" ${PASSWORD:+--secure} --time --format=Null --query="$query" --progress 0 2>&1 ||:)
[[ "$?" == "0" ]] && echo -n "${RES}" || echo -n "null"
[[ "$i" != $TRIES ]] && echo -n ", "
echo "${QUERY_NUM},${i},${RES}" >> result.csv
done
echo "],"
sudo clickhouse stop > /dev/null 2>&1
QUERY_NUM=$((QUERY_NUM + 1))
done