PG+MySQL第3课

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 本篇内容分享了PG+MySQL第3课。

分享人:Digoal 阿里云资深数据库专家

正文:

本篇内容将通过三个部分来介绍PG+MySQL第3课。

一、压测工具

二、瞬间构造大量测试数据

三、压测case

image.png


一、压测工具


在开源的PG官方社区,提供了pg bench压测工具。它是最常用的压测工具,能够支持自定义,客户端的开销最小。用户可以查询官网的帮助文档,有详细的使用方法。pg bench不需要写任何脚本,可以直接调用客户端的命令,大大提升了工作效率。它有连接数、线程数、报告、绑定变量、重置连接等参数选项。有多种自定义的模型方法,比如变量,变量传递,随机数,多脚本调用和权重,睡眠等等。

image.png


二、瞬间构造大量测试数据


接下来,我们怎样快速生成数据?如果我想创建一个表,需要去快速生成1000万条记录。

第一种方法,我们用pg bench频繁的调用脚本。首先创建一个test表,创建一个序列,然后写入1000万条记录。C1变量设置为1~10000的随机值,c2设置为1~1000的随机值,c3设置为1~100的随机值。我们写一个test脚本,内容如上图。

image.png

第二种方法是用批量的方式,利用批量的方式,可以很容易的一次性生成大量的记录。c1的取值空间是1~10000,c2取值空间是1~1000,c3取值空间是1~100。id是序列产生的值,时间是一个时钟时间。如果要批量生成1000万条记录,也可以使用一次写多条的方法,用pg bench做样式压测。

image.png

除了批量和调用脚本的方式,我们还可以自定义一些函数,帮我们构造字段内容,根据我们的需求去构造内容字符串。如上图所示。

image.png


三、压测case


接下来,我们讲几个压测 case。主要有tpcb,简单key查询,upsert,随机数变量,模糊查询等等。

image.png

第一是tpcb。tpcb的测试比较简单。tpcb用104个连接,测120秒,测只读,它每秒会返回一次。如果标准方差抖动比较严重,说明性能抖动比较严重。稳定下之后,它的qps在150万以上,每一次的请求的平均响应时间,在零点零几毫秒。

image.png

接下来,我们看看upsert。首先,创建一个a表,其中有一个字段是组件。取值范围id是1~20亿。如果说id已经存在,把.info,crt_time设置为当前输入值。然后,自定义一个test.sql脚本。有两百多万次的update,两千多万次的更。随着数据越来越多,冲突的概率越来越高,update也就越来越多。等120秒跑完之后,它会输出一个test报告。

image.png

随机数变量random,随机值取值范围是(x,y)。random的概率是完全随机的。指数分布的概率是通过x,y代表最大值和最小值。高斯分布的概率是通过f(i + 0.5) - f(i - 0.5) 来定义。它是中型分布,当概率分布越靠近取值范围的中间,概率越高。zip的概率分布是((i+1)/i)**parameter。综上所述,我们可以根据自己的业务,使用不同的随机值生成函数。

image.png

 

接下来,我们讲讲模糊查询。我们创建两个表,即t1表和t2表。T1表是做查询的表,t2表是种子表。在t1表插入1000万条记录,t2表插入100万条记录。其中有10万条是随机的,另外90万条自t1表。其中取了十个长度的随机字符。t2表里有10万条匹配不了,其中有90万条能够匹配。即90%能够匹配,就查询时有10%是匹配不到。1000万的记录,通过前后百分号的模糊查询,只花了十几毫秒。因为pg支持倒排索引,它的平均响应时间在35毫秒左右。

image.png

接下来,我们看看如何查询轨迹历史?这比共享单车,我们在骑行过程中,骑行会产生位点,这些位点就是我们轨迹的订单。如果骑行十分钟,会上报个几十个位点。所以我们在模拟这样的数据。在表里面写入1000万条记录,随机值是1~10000,创建ordid索引,ordid等于1~10000的随机值。查询之后,我们发现,之前需要一千多个数据块,现在只需要访问十六个数据块。大大提升了轨迹查询的性能。

 

image.png

我们来看一下,数值相近查询。假设有一个表,其中有一个字段是年龄。我们按照年龄排序。比如越靠近24岁,返回值就越靠前。这个时候,我们需要用gist索引。创建一个t_num表。用浮点型来表示,浮点型取值范围在0~120之间。我们在里面写了1000万条记录,开始查询时,越靠近24岁的值,返回值越靠前。

image.png

接下来,我们看看空间距离相近查询。比如饿了么订餐,我在某个酒店里订餐,以酒店为中心,圈出附近100个餐馆。表里写了1000万个位点,用位置索引,其中,有零点几个毫秒就返回的,那么它一定是离你最近的。

image.png

第一对于高并发的请求,我们推荐用长链接和绑定变量。对于分析型的查询,因并发不高,而且每次查询都会重新生成执行计划。所以我们不建议用绑定变量。故分析场景,不建议绑定变量;高并发场景建议用绑定变量。

 

 

 

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
安全 关系型数据库 数据库
上新|阿里云RDS PostgreSQL支持PG 16版本,AliPG提供丰富自研能力
AliPG在社区版16.0的基础上,在安全、成本、可运维性等多个方面做了提升,丰富的内核/插件特性支持,满足业务场景的需求
|
存储 SQL Oracle
PG+MySQL第14课
数据库使用者了解数据库的高级功能后,才能在业务场景里面使用,来提升整体的生产效率。
PG+MySQL第14课
|
关系型数据库 MySQL
为什么全网都在劝你在学PG,而不是MySQL?
为什么全网都在劝你在学PG,而不是MySQL?
326 0
为什么全网都在劝你在学PG,而不是MySQL?
|
SQL 编解码 并行计算
PG+MySQL第9课-实时精准营销
通常业务场景会涉及基于标签条件圈选目标客户、基于用户特征值扩选相似人群、群体用户画像分析这些技术,本文将围绕这三个场景去介绍在实施精准营销里面的PG数据库的使用
PG+MySQL第9课-实时精准营销
|
SQL 数据采集 机器学习/深度学习
PG+MySQL第13课
数据库使用者了解数据库的高级功能后,才能在业务场景里面使用,来提升整体的生产效率。
PG+MySQL第13课
|
存储 SQL 自然语言处理
PG+MySQL第12课
数据库使用者了解数据库的高级功能后,才能在业务场景里面使用,来提升整体的生产效率
PG+MySQL第12课
|
存储 机器学习/深度学习 算法
PG+MySQL第11课-多维向量搜索
多维向量搜索不仅可以用在特征值的相似圈选这类场景,还可以用在图像识别场景。而不同的向量支持不同的距离算法,如cube、imgsmlr和pase.
PG+MySQL第11课-多维向量搜索
|
存储 SQL 搜索推荐
PG+MySQL第10课-多维组合搜索
多维组合查询也是pg非常擅长的产品,它的解决方法或者优化方法非常的多,并且也具备了跟搜索引擎一样的倒排索引技术,可以便捷有效地解决任意字段组合查询的业务场景诉求
PG+MySQL第10课-多维组合搜索
|
存储 SQL 编解码
PG+MySQL第8课
今天给大家分享的主题是时空空间,时空数据库概念以及实战。主要从这3个方面:空间/时空数据库的概念;应用场景;四个模型的使用案例,主要是一些概念性的东西以及它案例的操作性的东西。
PG+MySQL第8课
|
SQL 存储 并行计算
G+MySQL第7课-PG的并行计算跟JIT
PG的并行计算跟JIT,分别应用在分析型的业务场景,比如复杂的TB级别的实时分析场景。本篇内容将从2个部分为读者介绍PG+MySQL联合解决方案,希望可以让大家对PG+MySQL有更深入的了解,并可以将这些特性应用到项目中,达到降本提效的目的。
G+MySQL第7课-PG的并行计算跟JIT
下一篇
无影云桌面