2016-05-22 10 views
1

首先,我創建5列的表格:SQLAlchemy比Psycopg2更快。我的基準有什麼錯誤?

CREATE TABLE table1 
(
    a integer, 
    b character varying, 
    c character varying, 
    d numeric, 
    e numeric 
) 

其次,我加10萬行的表

https://gist.github.com/ericsalim/1d12628826195b52c5d282c2326f5e00

第三,我選擇使用Psycopg2和SQLAlchemy的

的所有行

爲Psycopg2

結果
  • 查詢時間:2839.46800232
  • 轉換時間:792.379140854
  • 資源大小:400036
  • rowlist大小:412232

SQLAlchemy的結果如下:

  • 查詢時間:2401.74889565
  • 轉換時間:377.213001251
  • RES尺寸:412232
  • rowlist尺寸:412232

如何是有可能,SQLAlchemy的,這是一個ORM層頂端Psycopg2比Psycopg2本身更快?我的代碼有問題嗎?

+1

這裏你不使用ORM,代碼是一樣的,你只是用另一種方式連接到數據庫。嘗試使用python profilers,也許你會發現問題。 –

回答

1

這是DictCursor的開銷。將其切換爲使用標準光標和整數索引會使psycopg2表現出色。我想SQLAlchemy使用不同的,更有效的方法來支持字符串索引。但除了學術上的好奇之外,我不會擔心這兩者之間的性能差異 - 關注哪個更有效。在大多數現實世界的場景中,您將受到I/O限制,並且差異足夠小而無關緊要。

+0

謝謝。刪除DictCursor使其比SQLAlchemy更快。我想這意味着SQLAlchemy非常高效:) – VoidMain

相關問題