Я хочу проверить скорость работы mysql-сервера (5.7.22 на обоих, установленных с помощью apt-get) на рабочем столе Ubuntu против сервера Ubuntu для школьного проекта. У меня есть скрипт, который запускает 3 sql запросов, каждый 10000 раз и записывает время, необходимое для завершения каждого запроса в файле. В среднем мои запросы занимали около 10 миллисекунд на рабочем столе Ubuntu (18,04 64-битных), но они занимали 2,5 секунды на запрос на моем сервере Ubuntu (18,04 64-битных), что делает его бесконечным и несопоставимым с другим набором результатов. Я понятия не имею, почему это так, они находятся на одном диске и имеют одинаковые ресурсы (ЦП, ОЗУ и сохранены на одном и том же SSD), они оба работают в Virtualbox (но я тестирую их только с 1 машиной, работающей на время).
Я использую пример базы данных сотрудников из mysql.
Мой скрипт:
#!/bin/bash
AantalQ=3 #Amount of queries.
AantalHH=10000 #How often to repeat the queries.
for ((i=1; i<=AantalQ; i++)); do #Loop through queries.
for ((j=0; j<AantalHH; j++)); do #Repeat the current query.
echo "Query$i uitvoering $j" #Progress.
time (mysql --login-path=local employees < "Query$i.sql" > null) 2>> tijd.csv
done
done
sed -i.bak '/real/!d' tijd.csv #Delete all lines without 'real'.
tr -dc "0-9\n" <tijd.csv >temp.tmp && mv temp.tmp tijd.csv #Delete everything except for numbers.
sed -i.bak 's/^0*//' tijd.csv #Delete leading zeros.
Мои запросы:
1
USE employees;
SELECT SUM(salaries.salary),
AVG(salaries.salary),
MAX(salaries.salary),
COUNT(employees.emp_no)
FROM employees
JOIN salaries ON employees.emp_no=salaries.emp_no;
2
USE employees;
SELECT * #208734 records
FROM employees
JOIN salaries ON employees.emp_no=salaries.emp_no
WHERE first_name LIKE 'A%' AND salary > 2500;
3
USE employees;
SELECT concat(first_name, ' ', last_name) as fullname, de.from_date, de.to_date, dept_name, dm.from_date, dm.to_date, title, salary
FROM employees e
JOIN salaries s ON e.emp_no = s.emp_no
JOIN titles t ON e.emp_no = t.emp_no
JOIN dept_emp de ON e.emp_no = de.emp_no
JOIN departments d ON d.dept_no = de.dept_no
JOIN dept_manager dm ON d.dept_no = dm.dept_no
WHERE first_name LIKE 'B%' OR first_name LIKE 'C%' OR first_name LIKE 'Z%'AND last_name LIKE 'C%' OR last_name LIKE 'O%' OR last_name LIKE 'X%';
#WHERE DATE(birth_date) BETWEEN '1980-01-01' AND '1980-01-01'
Заранее спасибо!