我想在一个学校项目中测试 Ubuntu 桌面和 Ubuntu 服务器上的 mysql-server(5.7.22,均使用 apt-get 安装)的速度。我有一个运行 3 个 sql 查询的脚本,每个查询 10000 次,并将每个查询完成所花费的时间写入一个文件中。平均而言,我的查询在 Ubuntu 桌面(18.04 64 位)上花费了大约 10 毫秒,但在我的 Ubuntu 服务器(18.04 64 位)上每个查询花费了 2.5 秒,这使得它永远无法与其他结果集相比。我不知道为什么会这样,它们在同一个磁盘上并且具有相同的资源(CPU、RAM 和保存在同一个 SSD 上)它们都在 Virtualbox 中运行(但我只用一台机器运行在一个时间)。
我正在使用来自 mysql 的示例“employees”数据库。
我的脚本:
#!/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'
提前致谢!
最佳答案
通过执行以下操作安装 mysqltuner
apt-get install mysqltuner
并在每个虚拟机上运行它。希望它能向您展示分析过程中的不同之处。祝你好运!
关于Ubuntu 服务器上的 Mysql 服务器比 Ubuntu 桌面慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50184997/