mysql5.7LBS压测

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 只是测试了下比较简单的场景,结果不太理想,没有继续测更多的场景。
CentOS release 6.9 (Final)
Kernel | 2.6.32-696.el6.x86_64
cpu 64xIntel(R) Xeon(R) Gold 6130 CPU @ 2.10GHz
内存 128G
bond0 2000Mb/s Full
磁盘 SSD

mysql版本
Server version: 5.7.22-22-log Percona Server (GPL), Release 22, Revision f62d93c
参数
innodb_buffer_pool_size=64G
sync_binlog=1
innodb_flush_log_at_trx_commit=1

对于 InnoDB MyISAM 表,MySQL可以使用类似于创建常规索引的语法创建空间索引,但使用 SPATIAL 关键字。必须声明空间索引中的列 NOT NULL
SPATIAL INDEX 创建一个R树索引。对于支持空间列的非空间索引的存储引擎,引擎会创建B树索引。空间值的B树索引对于精确值查找很有用,但对于范围扫描则不行。

CREATE TABLE `tbl_pos` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`att1` int(11) DEFAULT NULL,
`att2` int(11) DEFAULT NULL,
`att3` int(11) DEFAULT NULL,
`mod_time` timestamp NULL DEFAULT NULL,
`pos` geometry NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8


root@localhost:mysql3307.sock [db1] 11:27:46> insert into tbl_pos (att1, att2, att3, mod_time, pos) values ( 1, 1, 1, now(), ST_PointFromText('POINT(120 70)'));
Query OK, 1 row affected (0.01 sec)


root@localhost:mysql3307.sock [db1] 11:28:35> select *,ST_AsText(pos) from tbl_pos;
+----+------+------+------+---------------------+---------------------------+----------------+
| id | att1 | att2 | att3 | mod_time | pos | ST_AsText(pos) |
+----+------+------+------+---------------------+---------------------------+----------------+
| 1 | 1 | 1 | 1 | 2018-08-19 11:28:06 | ^@ Q@ | POINT(120 70) |
+----+------+------+------+---------------------+---------------------------+----------------+


未建R树索引下插入性能测试
[root@db001 ~]# ./mydbtest_linux64.bin query=insert.cnf degree=100

[root@db001 ~]# cat insert.cnf
option
name mysql57
loop 10000000
user ********************@10.11.5.1:3307:db1
show 15
tran yes
commit 10000
declare
att1 int 10 20
att2 int 10 20
att3 int 10 20
x int 120 130
y int 70 80
begin
insert into tbl_pos (att1, att2, att3, mod_time, pos) values ( :att1, :att2, :att3, now(), POINT(:x,:y) );
end

2018-08-19 11:58:51 Total tran=121294=1049/s, qtps=121294=1049/s, ela=115017 ms, avg=948 us
2018-08-19 11:58:51 Total tran=121167=1048/s, qtps=121167=1048/s, ela=115051 ms, avg=949 us
Summary: SQL01 exec=12133224, rows=12133224=100/e, avg=943 us
Summary: exec=103702/s, qtps= 103702/s

root@localhost:mysql3307.sock [db1] 11:57:39> select count(*) from tbl_pos;
+----------+
| count(*) |
+----------+
| 11000001 |
+----------+

未建R树索引的情况下插入更新
[root@db001 ~]# cat insertupdate.cnf
option
name mysql57
user **********@10.11.5.1:3307:db1
show 15
tran yes
commit 1
time m5
declare
id int 1 10000000
x int 120 130
y int 70 80
begin
insert into tbl_pos (id, mod_time, pos) values (:id, now(), POINT(:x,:y)) ON DUPLICATE KEY UPDATE pos=point(st_x(pos)+5-rand()*10, st_y(pos)+5-rand()*10), mod_time=now();
end
./mydbtest_linux64.bin query=insertupdate.cnf degree=20
Summary: SQL01 exec=7621675, rows=15243142=199/e, avg=162 us
Summary: exec=25237/s, qtps= 25237 /s


./mydbtest_linux64.bin query=insertupdate.cnf degree=50
Summary: SQL01 exec=12187675, rows=24374774=199/e, avg=253 us
Summary: exec=40356/s, qtps= 40356/s


./mydbtest_linux64.bin query=insertupdate.cnf degree=100
Summary: SQL01 exec=14250218, rows=28499628=199/e, avg=383 us
Summary: exec=47186/s, qtps= 47186/s


创建R索引
root@localhost:mysql3307.sock [db1] 13:00:20> alter table tbl_pos add SPATIAL KEY `idx_pos` (`pos`);
Query OK, 0 rows affected (3 min 54.37 sec)
Records: 0 Duplicates: 0 Warnings: 0

测试创建R索引情况下插入更新

2018-08-19 13:57:21 SQL01 143 ms exec= 1, ela= 142 ms, avg= 142024 us, pct= 0, 97
2018-08-19 13:57:21 SQL01 147 ms exec= 1, ela= 146 ms, avg= 146004 us, pct= 0, 98
2018-08-19 13:57:21 SQL01 168 ms exec= 1, ela= 167 ms, avg= 167473 us, pct= 0, 98
2018-08-19 13:57:21 SQL01 170 ms exec= 1, ela= 169 ms, avg= 169589 us, pct= 0, 98
2018-08-19 13:57:21 SQL01 171 ms exec= 1, ela= 170 ms, avg= 170377 us, pct= 0, 99
2018-08-19 13:57:21 SQL01 181 ms exec= 1, ela= 180 ms, avg= 180822 us, pct= 0, 99
2018-08-19 13:57:21 SQL01 215 ms exec= 1, ela= 214 ms, avg= 214500 us, pct= 0,100
插入更新 400多TPS


root@localhost:mysql3307.sock [db1] 14:00:16> alter table tbl_pos drop KEY `idx_pos`;
Query OK, 0 rows affected (10 min 50.44 sec)
Records: 0 Duplicates: 0 Warnings: 0

删掉索引后恢复正常


查询距离5公里范围的点

root@localhost:mysql3307.sock [db1] 15:01:50> explain select * from tbl_pos where ST_Contains(ST_Buffer(POINT(125,78),0.05), pos) order by ST_Distance_Sphere(Point(125,78), pos) limit 100;
+----+-------------+---------+------------+-------+---------------+---------+---------+------+------+----------+-----------------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+---------+------------+-------+---------------+---------+---------+------+------+----------+-----------------------------+
| 1 | SIMPLE | tbl_pos | NULL | range | idx_pos | idx_pos | 34 | NULL | 150 | 100.00 | Using where; Using filesort |
+----+-------------+---------+------------+-------+---------------+---------+---------+------+------+----------+-----------------------------+
1 row in set, 1 warning (0.00 sec)


select 5000*1/1852*1/60;

[root@db001 ~]# cat selectbygis.cnf
option
name mysql57
user ******************@10.11.5.1:3307:db1
show 15
tran no
commit 1
time m5
declare
x int 120 130
y int 70 80
begin
select * from tbl_pos where ST_Contains(ST_Buffer(POINT(:x,:y),0.04499640), pos) order by ST_Distance_Sphere(Point(:x,:y), pos) limit 100;
end
[root@db001 ~]# ./mydbtest_linux64.bin query=selectbygis.cnf degree=20

Summary: SQL01 exec=575872, rows=57587200=10000/e, avg= 10448 us
Summary: exec=1906/s, qtps= 1906/s

mysql的GIS还有比较远的路要走。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
关系型数据库 MySQL Java
【JMeter】(3)---MySQL压测
【JMeter】(3)---MySQL压测
213 0
|
7月前
|
关系型数据库 MySQL 测试技术
MySQL性能测试(完整版)
MySQL性能测试(完整版)
589 1
|
6月前
|
关系型数据库 MySQL 测试技术
《阿里云产品四月刊》—瑶池数据库微课堂|RDS MySQL 经济版 vs 自建 MySQL 性能压测与性价比分析
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
|
7月前
|
关系型数据库 MySQL 测试技术
sysbench 对MySQL压测100分钟的命令
使用 `sysbench` 对 MySQL 数据库进行性能测试(压测)时,首先确保 `sysbench` 和 MySQL 数据库已经安装,并且你有一个测试数据库可以使用。下面是一个针对 MySQL 数据库进行压测的示例命令,测试时长为 100 分钟(6000 秒)。 在运行此命令之前,请确保以下内容: - 使用适当的数据库连接参数(主机、端口、用户名、密码、数据库名)。 - 根据你的需求调整测试参数(如并发数、线程数、事务数等)。 以下是一个示例命令,使用 `sysbench` 对 MySQL 数据库进行压测 100 分钟: ```shell sysbench --db-driver=m
149 0
|
7月前
|
存储 SQL 关系型数据库
Mysqlslap性能测试MySQL三种存储引擎
Mysqlslap性能测试MySQL三种存储引擎
|
关系型数据库 MySQL Serverless
|
关系型数据库 MySQL 测试技术
mysqlslap mysql性能测试
mysqlslap是mysql自带的基准测试工具,优点:查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端 同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较.msqlslap为mysql性 能优化前后提供了直观的验证依据,建议系统运维和DBA人员应该掌握一些常见的压力测试工具,才能准确的 掌握线上数据库支撑的用户流量上限及其抗压性等问题。
162 0
|
关系型数据库 MySQL 测试技术
MySQL 8.0 InnoDB压缩行格式性能测试(2)
MySQL 8.0 InnoDB压缩行格式性能测试
150 0
MySQL 8.0 InnoDB压缩行格式性能测试(2)
|
监控 固态存储 关系型数据库
MySQL 8.0 InnoDB压缩行格式性能测试(1)
MySQL 8.0 InnoDB压缩行格式性能测试
138 0
MySQL 8.0 InnoDB压缩行格式性能测试(1)
|
关系型数据库 MySQL Linux
MySQL压测时Linux中断异常飚高,原来是因为...
MySQL压测时Linux中断异常飚高,原来是因为...
148 0