Postgresql 比较psql执行速度
我想比较psycopg2和psql的执行速度。我目前有一个脚本,看起来像Postgresql 比较psql执行速度,postgresql,psycopg2,psql,postgresql-9.3,Postgresql,Psycopg2,Psql,Postgresql 9.3,我想比较psycopg2和psql的执行速度。我目前有一个脚本,看起来像 SQL="SOME LONG SQL QUERY" time psql -h $HOST -d $DB -U $USER -p $PORT -c "EXPLAIN ANALYZE $SQL" time python -c "from dbpg import execute; rows = execute('''$SQL''', info='$CS')" 其中,execute是: def execute(sql, args
SQL="SOME LONG SQL QUERY"
time psql -h $HOST -d $DB -U $USER -p $PORT -c "EXPLAIN ANALYZE $SQL"
time python -c "from dbpg import execute; rows = execute('''$SQL''', info='$CS')"
其中,execute是:
def execute(sql, args=None, info=None):
with psycopg2.connect(info) as con:
with con.cursor() as c:
c.execute(sql, args)
return c.fetchall()
为了确保比较是公平的,我不想让psql将结果集写入文件,因为I/O惩罚会给psycopg2带来优势。我目前有脚本来计时我想要运行的查询的解释分析,但我相当确定这不包括将结果集从服务器传输到运行此脚本的客户端所需的时间
有没有一种方法可以让psql运行查询,下载查询集,并在不写入文件的情况下丢弃它,以便正确比较查询执行时间 将输出重定向到/dev/null怎么样?当性能很重要时,使用连接池,连接和执行会更快。pgPool和pgBouncer是众所周知的连接池。@horse\u(没有名称)重定向到/dev/null导致psql始终比psycopg2花费大约60%的时间。这对我来说似乎不太合适。@FrankHeikens我想在有连接池和无连接池的情况下进行基准测试,但我希望有一个控件可以与之进行比较,并认为psql就是那个控件。现在,我甚至无法让psql在没有池的情况下比psycopg2运行得更快,这对我来说似乎很奇怪。至少在psql中添加了-no align-tuples-only选项,这样它就不会试图将结果对齐到具有标题和大量空白填充空间的外观合适的列中。