我有一個Java應用程序,從一組表中讀取,處理數據,然後將處理的數據插入到一個表中。數據量真的很大,多線程是不可避免的。 當多個線程嘗試同時插入時會發生問題,這會導致寫入保持和插入保持。之後,所有線程等待表可用,直到連接超時。插入多線程插入到Redshift表導致鎖
的記錄沒有任何外鍵指向插入
記錄的所有表都完全相互獨立的
該表中沒有的增量ID任何一種
沒有其他應用程序正在使用的任何本申請中涉及的表
我正在使用Java準備語句來執行插入操作。每個調用一個插入方法,分別爲每個線程打開一個連接。
有什麼我做錯了,或者它是與Redshift的兼容性問題?
您使用連接池嗎?爭論可能是因爲我認爲數據倉庫產品能夠處理上面概述的情況(儘管我對Redshift沒有特別的瞭解) – DaveH
根據文檔:COPY和INSERT操作是純粹的寫入...針對同一個表的COPY和INSERT操作保持等待狀態,直到釋放鎖,然後它們照常進行。請參閱http://docs.aws.amazon.com/es_es/redshift/latest/ dg/c_write_readwrite.html –
但基於此,這意味着線程進入隊列以執行插入操作。但是非線程正在插入。 –