mysql5.7LBS压测

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 只是测试了下比较简单的场景,结果不太理想,没有继续测更多的场景。
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还有比较远的路要走。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
关系型数据库 MySQL Java
【JMeter】(3)---MySQL压测
【JMeter】(3)---MySQL压测
304 0
|
关系型数据库 MySQL 测试技术
MySQL性能测试(完整版)
MySQL性能测试(完整版)
1527 1
|
关系型数据库 MySQL 测试技术
《阿里云产品四月刊》—瑶池数据库微课堂|RDS MySQL 经济版 vs 自建 MySQL 性能压测与性价比分析
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
185 0
|
关系型数据库 MySQL C语言
mysql的压力测试软件sysbench
mysql的压力测试软件sysbench
80 1
|
关系型数据库 MySQL 测试技术
sysbench 对MySQL压测100分钟的命令
使用 `sysbench` 对 MySQL 数据库进行性能测试(压测)时,首先确保 `sysbench` 和 MySQL 数据库已经安装,并且你有一个测试数据库可以使用。下面是一个针对 MySQL 数据库进行压测的示例命令,测试时长为 100 分钟(6000 秒)。 在运行此命令之前,请确保以下内容: - 使用适当的数据库连接参数(主机、端口、用户名、密码、数据库名)。 - 根据你的需求调整测试参数(如并发数、线程数、事务数等)。 以下是一个示例命令,使用 `sysbench` 对 MySQL 数据库进行压测 100 分钟: ```shell sysbench --db-driver=m
305 0
|
存储 SQL 关系型数据库
Mysqlslap性能测试MySQL三种存储引擎
Mysqlslap性能测试MySQL三种存储引擎
|
关系型数据库 MySQL Serverless
|
关系型数据库 MySQL Java
Mysql专栏 - 线上调优与压力测试
Mysql专栏 - 线上调优与压力测试
284 0
|
SQL Prometheus 监控
Mysql专栏 - 线上调优与压力测试
本节内容讲述线上的调优手段以及压力测试的相关工具,结合一些实际的命令参数,我们将会介绍运行结果的具体含义。本节内容为大致的介绍如何压力测试和如何阅读参数,具体的运行效果需要自己部署一台机器测试,关于这部分的内容受到不同的机器影响会出现完全不同的效果,需要实际测试所以没有进行记录。
243 0
|
关系型数据库 MySQL 测试技术
mysqlslap mysql性能测试
mysqlslap是mysql自带的基准测试工具,优点:查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端 同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较.msqlslap为mysql性 能优化前后提供了直观的验证依据,建议系统运维和DBA人员应该掌握一些常见的压力测试工具,才能准确的 掌握线上数据库支撑的用户流量上限及其抗压性等问题。
303 0

热门文章

最新文章

推荐镜像

更多