mysql8和mysql5.6及mysql5.7性能测试结果
连接工具:Navicat Premium 12 mysqlslap
说明:服务器环境配置不一样,mysql8、mysql5.7是自建的,RDSmysql5.6是阿里云的,测试表和函数是一样的。
新建测试表index_test`
Sql语句:
CREATE TABLE `index_test` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`USER` varchar(16) DEFAULT NULL,
`psd` varchar(64) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=200771 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
新建测试函数:insert_data
Sql语句:
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_data`(IN num INT)
BEGIN
DECLARE n INT DEFAULT 1;/*定义一个变量,存储当前执行的次数*/
WHILE n <= num
DO
INSERT INTO index_test(USER,psd) VALUES(concat('用户',n),n);
set n=n+1;
end while;
END
2)插入十万条记录运行时间
运行函数:100000 次(插入十万条记录)
运行结果:
Procedure executed successfully
时间: 0.042s
Procedure executed successfully
时间: 38.724s
3)查询十万条记录结果
Sql语句:
SELECT * FROM index_test;
运行结果:
SELECT * FROM index_test
> OK
> 时间: 2.074s
新建测试表index_test`
Sql语句:
CREATE TABLE `index_test` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`USER` varchar(16) DEFAULT NULL,
`psd` varchar(64) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=477162 DEFAULT CHARSET=utf8;
新建测试函数:insert_data
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_data`(IN num INT)
BEGIN
DECLARE n INT DEFAULT 1;/*定义一个变量,存储当前执行的次数*/
WHILE n <= num
DO
INSERT INTO index_test(USER,psd) VALUES(concat('用户',n),n);
set n=n+1;
end while;
END
2)插入十万条记录运行时间
运行函数:100000 次(插入十万条记录)
运行结果:
Procedure executed successfully
时间: 0.002s
Procedure executed successfully
时间: 281.973s
3)查询十万条记录结果
Sql语句:
SELECT * FROM index_test;
运行结果:
SELECT * FROM index_test
> OK
> 时间: 3.575s
第一次 十万写读 分别执行
主机 |
写入记录 |
读取记录 |
备注 |
RDSmysql5.6 |
38.724s |
2.074s |
2核4G |
150 mysql8 |
281.973s |
3.575s |
8核16G |
131 mysql5.7 |
314.207s |
3.414s |
4核8G |
第二次 十万写读 写入同时执行
主机 |
写入记录 |
读取记录 |
|
RDSmysql5.6 |
38.263s |
3.823s |
|
150 mysql8 |
288.926s |
0.567s |
|
131 mysql5.7 |
313.927s |
3.429s |
|
第三次 二十万写读 写入同时执行
主机 |
写入记录 |
读取记录 |
|
RDSmysql5.6 |
75.707s |
0.856s |
|
150 mysql8 |
557.127s |
8.06s |
|
131 mysql5.7 |
646.716s |
7.893s |
|
Mysqlslap 工具测试
# mysqlslap --host=47.95.100.100 --port=3306 --user=root --password='111' --concurrency=10 --create-schema=world --query="CALL insert_data(1000);"
# mysqlslap --host=47.95.100.100 --port=3306 --user=root --password='111' --concurrency=10 --create-schema=world --query="select * from index_test limit 1000;"
并发10用户写入1000条记录到同一测试表 并发10用户查询1000条记录
主机 |
写入记录 |
读取记录 |
|
RDSmysql5.6 |
0.916 |
0.017s |
|
150 mysql8 |
26.635 |
0.449 |
|
131 mysql5.7 |
6.280 |
0.284s |
|
# mysqlslap --host=47.95.100.100 --port=3306 --user=root --password='111' --concurrency=100 --create-schema=world --query="CALL insert_data(1000);"
# mysqlslap --host=47.95.100.100 --port=3306 --user=root --password='111' --concurrency=100 --create-schema=world --query="select * from index_test limit 1000;"
并发100用户写入1000条记录到同一测试表 并发100用户查询1000条记录
主机 |
写入记录 |
读取记录 |
|
RDSmysql5.6 |
10.473 |
0.079 |
|
150 mysql8 |
265.400 |
5.431 |
|
131 mysql5.7 |
11.040 |
4.079 |
|