非常に大きなRedshiftデータベースには、何十億行ものHTTP要求データが含まれています。Redshift:表のシリアライズ可能な隔離違反
ip_address
city
state
country
私は一回実行しているPythonのプロセスを持っている:
私は、テーブルには、いくつかの重要なフィールドを持っているrequests
と呼ばれていすべてのdをつかむ日(地理情報/国/国の情報はありません)がまだジオコードされていない行を検索し、GoogleのジオコーディングAPI経由で各IPアドレスをジオコードすることを試みます。
for ip_address in ips_to_geocode:
country, state, city = geocode_ip_address(ip_address)
execute_transaction('''
UPDATE requests
SET ip_country = %s, ip_state = %s, ip_city = %s
WHERE ip_address = %s
''')
このコードを実行すると、私は多くの場合、以下のようなエラーを受け取ります:
このプロセスは、(擬似コード)は次のようになります
psycopg2.InternalError: 1023
DETAIL: Serializable isolation violation on table - 108263, transactions forming the cycle are: 647671, 647682 (pid:23880)
私は私が他の持っているためであると仮定しています私のUPDATEステートメントを実行しようとすると、すべて行を更新したい行を選択することができません。
私の質問は次のとおりです。これらのレコードを正常に更新して定期的に失敗することはできますか?