2013-05-02 119 views
0

我們正試圖將我們的數據庫(mysql)移動到amazon redshift(數據倉庫),並且在更新倉庫數據庫時遇到問題。我們已經啓用了我們的數據庫的通用日誌記錄,然後我們從紅色通用日誌中重放所有這些查詢。所有更新查詢需要大約6-7秒。我正在尋找某種方式以更快的速度執行這些更新? Amazon Redshift在內部使用了一個postgre db,如果有人已經爲redshift/postgre解決了這個問題,那麼它會很棒,可以提供一個解決方案。儘管更快地更新更新的一般方法也會有所幫助。 我試過的一個解決方案是將所有更新合併到一組刪除和插入中。因此,單個表上的所有更新都將轉換爲單個刪除查詢,其中包含where子句和單個批處理插入查詢。 任何人都可以提供替代解決方案或對我嘗試的解決方案發表評論嗎?數據庫更新更快?

+0

當前我們的db託管在mysql上,查詢是單個表上的基本更新查詢。 – user1045047 2013-05-02 11:12:22

+0

我正在捕獲來自mysql db上的常規日誌的查詢,並在postgre db上重播它們。 – user1045047 2013-05-02 11:25:08

+0

每個更新過程中的行數通常在10k行左右。我們正在Redshift控制檯(這是一個單獨的事務)上啓動一個連接,但我曾嘗試在單個事務中運行單個查詢,並在單個事務中運行大約100個查詢。結果是一樣的,每個查詢大約在6-7s之間,即在單個事務中100次更新大約600-700s。 – user1045047 2013-05-02 11:28:00

回答

1

Redshift不打算用作'常規'數據庫 - 所有數據都應該使用COPY命令(或CREATE TABLE AS語法)插入,然後將其用於SELECTS。

對單個行的操作(如插入或更新)不是數據庫優化的目的。

建議的解決方法(使用DELETE/INSERT)而不是UPDATE會提高速度,但記住所有添加的行都會插入到UNSORTED數據庫塊中,只有在VACUUM所有數據都將被正確排序並且未使用的空間將被回收使用。