草庐IT

PostgreSQL 性能评测指南

轻风博客 2023-03-28 原文

 

 

背景

建议至少提交两份测试报告(从一、二选择两个测试case)

一、任选一(建议结合业务选择,简单在线业务选tpcb,复杂在线业务选tpcc,偏分析业务选tpch)

  • tpcc
  • tpcb
  • tpch

二、任选一(建议结合业务场景选择)

  • 并行计算,选择 RDS PG 12 进行测试
  • GIS,选择 RDS PG 12 进行测试
  • 精准营销,选择 RDS PG 12 进行测试
  • 化学分析,选择 RDS PG 12 进行测试
  • 多维搜索,选择 RDS PG 12 进行测试
  • 回归分析、数据预测,选择 RDS PG 12 进行测试
  • 全文检索,选择 RDS PG 11 进行测试
  • 模糊查询,选择 RDS PG 11 进行测试
  • 图像识别,选择 RDS PG 11 进行测试
  • 相似人群扩选,选择 RDS PG 11 进行测试

三、测试方法

1、准备 rds pg
2、准备 ecs测试客户端
3、测试,并输出测试报告(测试报告应该包含:测试方法,测试结论,测试结果解读)

四、建议

1、tpcb

测试case:

初始化数据
测试只读
测试读写

性能指标:

初始化数据时间
qps,tps,平均响应时间

建议:

绑定变量,长连接,连接数建议CPU核数3倍。

参考:

https://github.com/digoal/blog/blob/master/201809/20180919_01.md

2、tpcc

准备tpcc测试环境

测试case:

初始化数据
测试

性能指标:

tpmc total

建议:

绑定变量,长连接,连接数建议CPU核数3倍。

参考:

https://github.com/digoal/blog/blob/master/201911/20191121_01.md

3、tpch

准备tpch测试环境

测试case:

初始化数据
测试

性能指标:

每条sql耗费时间
(如有某些query的优化方式附在报告中,酌情加分)

参考:

https://github.com/digoal/blog/blob/master/201911/20191121_01.md

4、并行计算,选择 RDS PG 12 进行测试

初始化测试数据
sql测试

测试case:

  • 聚合
  • 过滤
  • 全表扫描
  • 索引扫描
  • JOIN
  • 排序
  • 新建表
  • 新建索引
  • 分区表JOIN

性能指标:

case
关闭并行,耗时
开启并行,并行度,耗时

参考:

https://github.com/digoal/blog/blob/master/201903/20190318_05.md

5、GIS,选择 RDS PG 12 进行测试

测试case:

初始化测试数据
初始化测试脚本
测试

性能指标:

qps,平均响应时间

建议:

绑定变量,长连接,连接数建议CPU核数3倍。

参考:

https://github.com/digoal/blog/blob/master/201711/20171107_48.md
https://github.com/digoal/blog/blob/master/201711/20171107_30.md
https://github.com/digoal/blog/blob/master/201711/20171107_06.md
https://github.com/digoal/blog/blob/master/201711/20171107_07.md

6、精准营销,选择 RDS PG 12 进行测试

测试case:

初始化测试数据
初始化测试脚本
测试

性能指标:

响应时间

参考:

https://github.com/digoal/blog/blob/master/202001/20200113_01.md

7、化学分析,选择 RDS PG 12 进行测试

测试case:

初始化测试数据
初始化测试脚本
测试

性能指标:

响应时间

参考:

https://github.com/digoal/blog/blob/master/201911/20191125_01.md

8、多维搜索,选择 RDS PG 12 进行测试

测试case:

初始化测试数据
初始化测试脚本
测试

性能指标:

qps,平均响应时间

建议:

绑定变量,长连接,连接数建议CPU核数3倍。

参考:

https://github.com/digoal/blog/blob/master/202001/20200115_01.md

9、回归分析、数据预测,选择 RDS PG 12 进行测试

测试case:

初始化测试数据
初始化测试脚本
测试

性能指标:

平均响应时间

参考:

https://github.com/digoal/blog/blob/master/202001/20200117_01.md

10、全文检索,选择 RDS PG 11 进行测试

测试case:

初始化测试数据
初始化测试脚本
测试

性能指标:

qps,平均响应时间

建议:

绑定变量,长连接,连接数建议CPU核数3倍。

参考:

https://github.com/digoal/blog/blob/master/202001/20200116_01.md

11、模糊查询,选择 RDS PG 11 进行测试

测试case:

初始化测试数据
初始化测试脚本
测试

性能指标:

qps,平均响应时间

参考:

https://github.com/digoal/blog/blob/master/202001/20200116_01.md

12、图像识别,选择 RDS PG 11 进行测试

测试case:

初始化测试数据
初始化测试脚本
测试

性能指标:

qps,平均响应时间

建议:

绑定变量,长连接,连接数建议CPU核数3倍。

参考:

https://github.com/digoal/blog/blob/master/202001/20200115_01.md

13、相似人群扩选,选择 RDS PG 11 进行测试

测试case:

初始化测试数据
初始化测试脚本
测试

性能指标:

响应时间

参考:

https://github.com/digoal/blog/blob/master/202001/20200115_01.md

 

  作者丨digoal

有关PostgreSQL 性能评测指南的更多相关文章

  1. ruby-on-rails - 如何让 datamapper 与 postgresql 数据库一起工作? - 2

    我已经找到了几个使用datamapper的示例,并且能够让它们正常工作。不过,所有这些示例都是针对sqlite数据库的。我正在尝试将数据映射器与postgresql一起使用。我将datamapper中的调用从sqlite3更改为postgres,并且我已经安装了dm-postgres-adapter。但它仍然不起作用。我还需要做什么? 最佳答案 与SQLite不同,PostgreSQL不将数据库存储在单个文件中。在你拥有createdyourdatabase之后,尝试这样的事情:DataMapper.setup:default,{:

  2. Ruby 的数字方法性能 - 2

    我正在使用Ruby解决一些ProjectEuler问题,特别是这里我要讨论的问题25(Fibonacci数列中包含1000位数字的第一项的索引是多少?)。起初,我使用的是Ruby2.2.3,我将问题编码为:number=3a=1b=2whileb.to_s.length但后来我发现2.4.2版本有一个名为digits的方法,这正是我需要的。我转换为代码:whileb.digits.length当我比较这两种方法时,digits慢得多。时间./025/problem025.rb0.13s用户0.02s系统80%cpu0.190总计./025/problem025.rb2.19s用户0.0

  3. ruby - Ruby 性能中的计时器 - 2

    我正在寻找一个用ruby​​演示计时器的在线示例,并发现了下面的代码。它按预期工作,但这个简单的程序使用30Mo内存(如Windows任务管理器中所示)和太多CPU有意义吗?非常感谢deftime_blockstart_time=Time.nowThread.new{yield}Time.now-start_timeenddefrepeat_every(seconds)whiletruedotime_spent=time_block{yield}#Tohandle-vesleepinteravalsleep(seconds-time_spent)iftime_spent

  4. ruby-on-rails - 如果条件与 &&,是否有任何性能提升 - 2

    如果用户是所有者,我有一个条件来检查说删除和文章。delete_articleifuser.owner?另一种方式是user.owner?&&delete_article选择它有什么好处还是它只是一种写作风格 最佳答案 性能不太可能成为该声明的问题。第一个要好得多-它更容易阅读。您future的自己和其他将开始编写代码的人会为此感谢您。 关于ruby-on-rails-如果条件与&&,是否有任何性能提升,我们在StackOverflow上找到一个类似的问题:

  5. sql - 在 Rails Console for PostgreSQL 的表中显示数据 - 2

    我找到了这样的东西:Rails:Howtolistdatabasetables/objectsusingtheRailsconsole?这一行没问题:ActiveRecord::Base.connection.tables并返回所有表但是ActiveRecord::Base.connection.table_structure("users")产生错误:ActiveRecord::Base.connection.table_structure("projects")我认为table_structure不是Postgres方法。如何列出Postgres数据库的Rails控制台中表中的所有

  6. ruby-on-rails - Rails 迁移中的 PostgreSQL 点类型 - 2

    我想使用PostgreSQL中的point类型。我已经完成了:railsgmodelTestpoint:point最终的迁移是:classCreateTests当我运行时:rakedb:migrate结果是:==CreateTests:migrating====================================================--create_table(:tests)rakeaborted!Anerrorhasoccurred,thisandalllatermigrationscanceled:undefinedmethod`point'for#/hom

  7. ruby-on-rails - Ruby on Rails 单表继承(STI)和单元测试问题(使用 PostgreSQL) - 2

    我正在使用带有单个“帐户”表的STI模型来保存用户和技术人员的信息(即用户...8)错误:test_the_truth(用户测试):ActiveRecord::StatementInvalid:PGError:ERROR:关系“技术人员”不存在:从“技术人员”中删除...从本质上讲,标准框架不承认Technicians和Users表(或PostgreSQL称它们为“关系”)不存在,事实上,应该别名为Accounts。有什么想法吗?我对RoR比较陌生,不知道如何解决这个问题而又不完全删除STI。 最佳答案 原来问题是由于存在:./te

  8. ruby - rails 3.2.2(或 3.2.1)+ Postgresql 9.1.3 + Ubuntu 11.10 连接错误 - 2

    我正在使用PostgreSQL9.1.3(x86_64-pc-linux-gnu上的PostgreSQL9.1.3,由gcc-4.6.real(Ubuntu/Linaro4.6.1-9ubuntu3)4.6.1,64位编译)和在ubuntu11.10上运行3.2.2或3.2.1。现在,我可以使用以下命令连接PostgreSQLsupostgres输入密码我可以看到postgres=#我将以下详细信息放在我的config/database.yml中并执行“railsdb”,它工作正常。开发:adapter:postgresqlencoding:utf8reconnect:falsedat

  9. Ruby 和指南针路径与 yeoman 项目 - 2

    我安装了ruby​​、yeoman,当我运行我的项目时,出现了这个错误:Warning:Running"compass:dist"(compass)taskWarning:YouneedtohaveRubyandCompassinstalledthistasktowork.Moreinfo:https://github.com/gruUse--forcetocontinue.Use--forcetocontinue.我有进入可变session目标的路径,但它不起作用。谁能帮帮我? 最佳答案 我必须运行这个:geminstallcom

  10. ruby - 如何找到我的 Ruby 应用程序中的性能瓶颈? - 2

    我编写了一个Ruby应用程序,它可以解析来自不同格式html、xml和csv文件的源中的大量数据。我如何找出代码的哪些区域花费的时间最长?有没有关于如何提高Ruby应用程序性能的好资源?或者您是否有任何始终遵循的性能编码标准?例如,你总是用加入你的字符串吗?output=String.newoutput或者你会使用output="#{part_one}#{part_two}\n" 最佳答案 好吧,有一些众所周知的做法,例如字符串连接比“#{value}”慢得多,但是为了找出您的脚本在哪里消耗了大部分时间或比所需时间更多,您需要进行分

随机推荐