ChistaDATA / ChistaDATA-Anansi-Profiler

ChistaDATA Profiler for ClickHouse
GNU General Public License v3.0
13 stars 5 forks source link

Add Support to Parse PostgreSQL Prepared Statements #20

Closed harunkucuk5 closed 1 year ago

harunkucuk5 commented 1 year ago

This PR adds support to parse prepared statements and analyze them. It is tested on PostgreSQL 10.23

with this change, the following queries are parsed,

2023-08-05 14:00:12 CEST [771944]: user=user,db=db,app=PostgreSQL JDBC Driver,client=192.168.1.1 LOG:  duration: 355.628 ms  execute S_8: SELECT * FROM table WHERE id=$1 AND another_id=$2

output;

# Current date: 2023-08-07 14:03:11.077816 +0300 +03 m=+22.219239501
# Hostname: 192.168.1.21
# Files:
    * /Users/harunkucuk/dbase/ChistaDATA-Anansi-Profiler/postgresql-Sat.log
# Overall: 54793, Unique: 143 , QPS: 0.64
# Time range: 2023-08-05 00:00:00 +0000 UTC to 2023-08-05 23:50:17 +0000 UTC
# Attribute          total     min     max     avg     95%  stddev  median
# ============     ======= ======= ======= ======= ======= ======= =======
# Exec time         5.31ks   0.02s 255.69s   0.10s   0.07s   2.87s   0.05s
# Peak Memory                0.00B   0.00B   0.00B   0.00B   0.00B   0.00B

# Profile
# Rank Response time   Calls R/Call Query
# ==== =============== ===== ====== =====
#    1  2.53ks   2.94% 44529  0.06s  SELECT * FROM table_102 WHERE column1=$1 ORDER BY id LIMIT 1
#    2  98.63s   0.11%  3945  0.03s  SELECT * FROM table_101 WHERE column1=$1 ORDER BY id LIMIT 1
#    4  54.32s   0.06%  2256  0.02s  UPDATE table_101 SET column1=$1 WHERE txid=$2 AND column1=$3
#    5  10.18s   0.01%   361  0.03s  SELECT   current_database() datname,     schemaname,     relname,    seq_scan,   seq
#    7  10.10s   0.01%   150  0.07s  SELECT * FROM table WHERE object_id=$1 AND businessobjectclass_id=
#    8   2.64s   0.00%   112  0.02s  SELECT pg_database.datname, pg_database_size(pg_database.datname) as size_bytes
#    9   7.48s   0.01%   107  0.07s  SELECT * FROM table WHERE id=$1
#   10   1.98s   0.00%    94  0.02s  SELECT * FROM table_103 WHERE column1=$1 ORDER BY id LIMIT 1
...
sinsinan commented 1 year ago

Can you provide a sample log file @harunkucuk5 ?