sql >> Databáze >  >> RDS >> PostgreSQL

Jak zajistit, aby příkaz kopírování pokračoval v běhu s červeným posuvem i poté, co vypršel časový limit funkce lambda, která jej spustila?

dokumentace AWS není explicitní o tom, co se stane, když vyprší časový limit. Myslím si však, že lze s jistotou říci, že přechází do fáze „Vypnutí“, kdy je běhový kontejner prostředím násilně ukončen.

To znamená, že připojení soketu používané připojením k databázi bude uzavřeno a proces Redshift, který tomuto soketu naslouchá, obdrží konec souboru – odpojení klienta. Normálním chováním jakékoli databáze v této situaci je ukončit všechny nevyřízené dotazy a vrátit zpět jejich transakce.

Důvod, proč jsem uvedl tento popis, je sdělit vám, že nemůžete prodloužit životnost dotazu nad rámec životnosti Lambda, která tento dotaz iniciuje. Pokud chcete zůstat u používání knihovny připojení k databázi, budete muset použít službu, která nevyprší:AWS Batch nebo ECS jsou dvě možnosti.

Existuje však lepší možnost:Redshift Data API , který je podporován Boto3 .

Toto rozhraní API funguje asynchronně:odešlete dotaz do Redshift a získáte token, který lze použít ke kontrole fungování dotazu. Můžete také dát pokyn Redshift, aby po dokončení/selhání dotazu odeslal zprávu AWS Eventbridge (takže můžete vytvořit další Lambda, abyste provedli příslušnou akci).



  1. Jak najít všechny tabulky, které mají cizí klíče, které odkazují na konkrétní table.column a mají hodnoty pro tyto cizí klíče?

  2. Dobrá praxe pro rozdělení dat do více databází?

  3. přiřazení uživatelské proměnné mysql s count(*)

  4. Hibernace:Vícenásobné výběrové dotazy provedené Hibernací pro režim Fetch Eager