2009-07-10 52 views
1

嗨,我做了一個ICAPServer(類似於httpserver),因爲它的性能非常重要。 DB模塊是sqlalchemy。 然後,我對sqlalchemy的性能做了測試,結果發現sqlalchemy花費大約30ms時間向DB(Oracle)寫入< 50kb數據,我不知道結果是否正常,或者我做了有問題?但是,無論是對還是錯,似乎瓶頸都來自DB部分。 如何提高sqlalchemy的性能?或者由DBA來改進Oracle?python sqlalchemy性能?

BTW,ICAPServer和Oracle都在同一臺PC,我使用的SQLAlchemy的基本方式..

回答

1

我在sqlalchemy的性能方面也遇到了一些問題 - 我認爲你應該首先弄清楚你使用的方式......他們建議大數據集最好使用sql表達式語言。無論哪種方式嘗試和優化sqlalchemy代碼並優化Oracle數據庫,以便您能更好地弄清楚什麼是錯誤的。 另外,在數據庫上做一些測試。

1

只能推SQLAlchemy的,到目前爲止,作爲一個程序員。我同意你的觀點是,性能的剩下的就看你的DBA,包括表創建正確的索引,等等

+0

但是,「sqlalchemy寫入<50kb數據到DB(Oracle)30ms」正常嗎?有沒有關於sqlalchemy性能的記錄?順便說一下,已經完成了適當的索引事情。 – Ryan 2009-07-10 17:40:12

+0

我不確定SQLAlchemy性能的正常基線是什麼,但30ms內的50 kb看起來相當快 - 我做了單向查詢的往返時間比這更長。我不得不同意魯柏在下面的評論,你可能應該看看經濟放緩的位置(回想起來,我有點羞愧,我沒有想到這一點)。 – 2009-07-10 17:46:43

5

你應該先措施您的瓶頸,例如使用profile模塊。

然後優化,如果您有可能,系統的最慢部分。

+0

非常感謝,你們所有人(我不知道如何爲你們所有人添加評論,所以選擇Luper) 我認爲最慢的部分必須是DB-i/o,並且我想描述一下我的ICAPAerver正在做,如下: 有兩個主要步驟和兩個線程; 第一步,ICAPServer從客戶端接收數據,將數據放入一個隊列(50kb <1ms) 第二步,另一個線程從隊列中彈出數據,並將它們寫入DB SO,如果第二步太慢,隊列將填滿這些數據的內存... – Ryan 2009-07-10 18:33:02