Been there!
Been there!
Once I fix the shortcomings and fill the gaps one way or another, will write or youtube about it :-)
I first used "ash_index_helper.sql" that queried v$ash and v$sql_plan, etc, but since modern 19.x something databases store access_predicates/filter_predicates in AWR too, I cloned it to "dash_index_helper.sql" so you can go back in AWR:
github.com/tanelpoder/t...
... but now it looks like I'll just feed the relevant info into a language model instead. Let's see how it goes!
Nevertheless, people have found this tool already useful in the past!
backendtales.blogspot.com/2023/02/sant...
But it became clear that more than just a single SQL query is needed, for example you wouldn't see a filter predicate on a table if CBO ended up doing a full scan and just throwing rows away much higher up in some hash join. I was going to write a Python tool or something...
The idea was to start with only the access paths that consume the most response time or resources and then see how frequently the queries are actually executed *and* show cardinality estimates/filter factors ("needle in the haystack?") and propose *better* indexes (not more).
I wrote an Oracle "ash_index_helper.sql" script 5 yrs ago, trying to pull all relevant info of top time-consuming *access paths* into one place, as a single SQL script.
Summarize access paths to a schema or just one table/SQL.
Too complex for a single script, time for AI? π
Cool, thanks! :-)
New blog: Testing the Datadog Explain Plan Visualizer with Oracle execution plans
tanelpoder.com/posts/testin...
New blog: Testing the Datadog Explain Plan Visualizer with Oracle execution plans
tanelpoder.com/posts/testin...
Discovered an awesome article (and the entire site) via HN.
Example: "How is data stored?"
www.makingsoftware.com/chapters/how...
Over two decades ago, the only reporter to really dig into what we had done with DTrace was @ashleevance.bsky.social at @theregister.com -- so it is unsurprising that the best reportage on @oxide.computer is from El Reg's @tobiasmann.bsky.social
www.theregister.com/2026/02/13/w...
Vinicius Grippa has created a cool implementation of SQL Flamegraphs for MySQL: MyFlames.
GitHub repo here, look into demos/mysql-*.svg files for more examples:
github.com/vgrippa/myfl...
Vinicius Grippa has created a cool implementation of SQL Flamegraphs for MySQL: MyFlames.
GitHub repo here, look into demos/mysql-*.svg files for more examples:
github.com/vgrippa/myfl...
A free SQL explain plan visualizer tool by @datadoghq
Currently for PostgreSQL, MySQL, MSSQL and MongoDB
explain.datadoghq.com
If you clone the same (cat) photo into 360 versions, each rotated by one more degree, then put all these versions through a ViT embedding model, should the resulting cat-vectors look at least somewhat similar?
I used a heatmap to answer this question!
tanelpoder.com/catvector/
The view GV$SYSMETRIC_HISTORY in Oracle AI Database shows all the database metrics available
This can be useful to help troubleshoot performance issues
@tanelpoder.com has built scripts to display these with 1-minute granularity in a tabular way
Back in the the day we did something similar (for Oracle execution plans), called PlanViz:
tanelpoder.com/posts/sql-pl...
A free SQL explain plan visualizer tool by @datadoghq
Currently for PostgreSQL, MySQL, MSSQL and MongoDB
explain.datadoghq.com
Happy Thanksgiving! Need a pod while washing dishes? New Oxide and Friends examines a bug introduced over 18 years ago. Performance is great but notβit turns outβwithout correctness oxide-and-friends.transistor.fm/episodes/gro...
(3 days left until the end of Black Friday Sale of my online training courses!)
Also, an old post for Oracle nerds:
"Oracle Shared Pool Internals: List Chunk Position in the LRU List"
tanelpoder.com/posts/oracle...
When tuning #SQL, focus on the estimates for how many rows each operation will return
If these are off by an order of magnitude or more, there's a good chance a different plan is faster
@tanelpoder.com has built scripts to show misestimates in Oracle plans
One week left till the end of the Black Friday sale of my self-paced video learning courses! π€
cool job at a very special computer company
- write TypeScript and Rust
- everyone makes $235k
- fully remote
- everything is open source
How was the holiday? π
Biggest takeaway from KubeCon: People want Neki badly.
We're building the solution for scaling and managing huge Postgres databases.
More to come, but in the meantime: neki.dev
Turns out you can communicate across containers via 63-bits of available space in a shared lock you acquire on /proc/self/ns/time that all processes have access to.
No networking required. The post has a demo of a chat app communicating across unprivileged containers.
h4x0r.org/funreliable/
Added a blog update about the V$PROCESS_MEMORY_DETAIL auto-population for processes with PGA growth to over 500MB. Enabled in Oracle 19.18+, so no "oradebug dump pga_get_detail" needed, just query the V$ views for a detailed "heapdump":
tanelpoder.com/2014/03/26/o...
New scripts: vstat.sql & dstat.sql for showing Oracle Sysmetric history with 1-minute granularity (both from AWR and regular V$ views)
tanelpoder.com/posts/oracle...