资讯专栏INFORMATION COLUMN

Python的SQL性能测试

Simon / 1381人阅读

摘要:前言测试异步与同步下对于数据库操作的性能通过测试同步以及异步下对于数据库的增加和查找操作,以进行性能评估。所以异步架构在用于单纯的数据库操作时,并不能取得非常良好的性能优化,数据库操作本身的优化还是依赖于操作本身以及数据库结构的优化。

前言

测试异步与同步下Python对于PostgreSQL数据库操作的性能

通过测试同步以及异步下对于数据库的增加和查找操作,以进行性能评估。更直观的以及量化地感受同步以及异步下的性能差距。

环境初始化

代码地址

需要安装pipenv,详细内容可参考

pip3.6 install pipenv
git clone https://github.com/GuangTianLi/python-sql-performance.git
cd python-sql-performance
pipenv sync
pipenv shell
SQL操作性能评估
python postgresql_speed_test.py

  DBAPI:  psycopg2
         11004 function calls in 2.235 seconds
  DBAPI:  asyncpg
         471973 function calls in 2.436 seconds
  DBAPI:  uvloop
         206945 function calls in 0.794 seconds
  DBAPI:  psycopg2, total seconds 2.558364
  DBAPI:  asyncpg, total seconds 2.309759
  DBAPI:  uvloop, total seconds 2.032303  
结论

从结果上看,对于数据库操作本身,异步对于其性能本身只能算是锦上添花。而异步操作本身则也需要添加对事件循环的处理,等于是变相的增加了运行时间,而如果每个数据库操作本身所需要的时间小于事件循环处理的时间,则其总时间就是增加的。

所以异步架构在用于单纯的数据库操作时,并不能取得非常良好的性能优化,数据库操作本身的优化还是依赖于操作本身以及数据库结构的优化。

WebServer性能评估 flask
python flask_server_speed_test.py
wrk -d 60 -c 100 -t 12 --timeout 8 http://127.0.0.1:8080/db
Running 1m test @ http://127.0.0.1:8080/db
  12 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   331.47ms  221.85ms   2.01s    89.71%
    Req/Sec    30.95     17.90    80.00     63.85%
  18597 requests in 1.00m, 3.10MB read
Requests/sec:    309.41
Transfer/sec:     52.88KB
sanic
python sanic_server_speed_test.py
wrk -d 60 -c 100 -t 12 --timeout 8 http://127.0.0.1:8080/db
Running 1m test @ http://127.0.0.1:8080/db
  12 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   162.95ms   99.56ms   1.89s    87.88%
    Req/Sec    52.26     23.73   148.00     61.57%
  36702 requests in 1.00m, 4.83MB read
Requests/sec:    610.64
Transfer/sec:     82.29KB
结论

从中等量级的压测的结果上看,对于异步架构的网络服务器,在性能上有了很大的提升。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42348.html

相关文章

  • PythonSQL性能测试

    摘要:前言测试异步与同步下对于数据库操作的性能通过测试同步以及异步下对于数据库的增加和查找操作,以进行性能评估。所以异步架构在用于单纯的数据库操作时,并不能取得非常良好的性能优化,数据库操作本身的优化还是依赖于操作本身以及数据库结构的优化。 前言 测试异步与同步下Python对于PostgreSQL数据库操作的性能 通过测试同步以及异步下对于数据库的增加和查找操作,以进行性能评估。更直观的以...

    3fuyu 评论0 收藏0
  • Lunar, 一个Python网络框架实现

    摘要:核心的几个组件模板引擎,框架,请求和应答的处理还是有一些难度,但是经过一步步的分析和编码还是能够完成功能。模板引擎模板引擎是另外一个比较大和的模块。 前前后后,大概两个月的时间,lunar这个项目终于达到了一个很高的完整度。 Lunar是一个Python语言的网络框架,类似于Django,Flask,Tornado等当下流行的web framework。最初有这个想法是在大二下学期,...

    邱勇 评论0 收藏0
  • 如何创建一个数据科学项目?

    摘要:虽然我们可以在网上参照各种模板项目文章博客等创建一个数据科学项目,但是目前也没有教科书对这些知识做一个统一的回答。举个例子来说,数据科学分析项目通常就不需要部署和监控这两个过程。创建文件描述源数据及位置。进一步探索和报告在整个数据科学项目中 摘要: 在一个新的数据科学项目,你应该如何组织你的项目流程?数据和代码要放在那里?应该使用什么工具?在对数据处理之前,需要考虑哪些方面?读完本文...

    Aceyclee 评论0 收藏0
  • 转行测试看过来!0基础~自动化测试,我整理超全学习指南...

    摘要:在这个阶段,学习工具什么的,重点在于接口测试的学习,所有的工具的学习,都是在为了接口测试的学习做铺垫。接口测试工具的使用。 很多朋友想要入行软件测试,但是都不知道该怎么学。 抽个时间简单的给大家说下,对于0基础的朋友,应该怎么去学习软件测试。 学习软件测试有2条路可以选。 最省事的当然是找个...

    Hanks10100 评论0 收藏0
  • 学习软件测试关键地方80%人都不清楚

    摘要:所以要想做好中级软件测试工程师,第一步就是能够完成接口测试。通常情况下,接口测试最多还是使用工具来完成原因无他,高效。 想来我26岁才正式投身进入软件测试行业;通过...

    blastz 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<