Pipelined database operation performance redux with python-oracledb: very impressive

Christopher Jones
1 min readSep 12, 2024

In Pipelined database operations with python-oracledb 2.4 I gave a simple benchmark showing the performance benefit of Oracle Database 23ai Pipelining. We now have results which are even more impressive.

Photo by Matt Paul Catalano on Unsplash

The system testing team (thank you!) ran a performance evaluation with Python 3.12 and python-oracledb 2.4.1 using the same schema they had used for their ODP.NET Pipelining benchmark (discussed here).

The app used 100 threads that repeatedly executed different SELECT statements. The tests measured performance metrics over 20,000 iterations with pipelining enabled versus pipelining disabled:

  • Pipelining runs finished 530% faster on average.
  • Pipelining runs performed 529% more transactions per second.
  • Pipelining runs performed 52% more transactions per second per processor.

I’m not sure I think that last stat is what it says it is, or that it is useful, but I include it for completeness with the ODP.NET results. Regardless the time and TPS figures are very significant!

One interesting, but obvious when you think about it, note is that client CPU usage increases with Pipelining because the client is able to be kept busy and do more work.

Resources

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Christopher Jones
Christopher Jones

Written by Christopher Jones

Oracle Database Product Manager for language drivers including Python python-oracledb, Node.js node-oracledb, PHP OCI8 and more! On Mastodon: @cjbj@phpc.social

Responses (1)

Write a response

Hi Christopher,
Is the code that the test team used the same as your example code (cjbj/pipeline-bm.py)?
If not, any chance you could post the code for the "performance evaluation with Python 3.12 and python-oracledb 2.4.1" in an article or on github?
TIA,
Dave