Domanda

Attualmente ho una funzione in PostgreSQL che crea una tabella temporanea, la riempie, esegue alcuni risultati di selezione e restituisce difficili. Le tabelle di temperatura di PostgreSQL sono locali per le funzioni, quindi questo mi aiuta a evitare di introdurre un'altra colonna nella mia tabella Temp per contrassegnare tutte le righe inserite da una particolare esecuzione della funzione. Se usassi una tabella globale che sarebbe richiesta e, a causa della natura delle mie domande, ucciderebbe le prestazioni.

Voglio portare questo pezzo di codice su Voltdb, ma non supporta la creazione di tabelle di temperatura dalle procedure memorizzate. Questo mi ha fatto pensare ad altri approcci. Se una procedura memorizzata avviasse una transazione ed eliminerebbe tutte le righe in una tabella (non temp), allora cosa succederebbe ad altre esecuzioni della stessa procedura memorizzata in esecuzione in quel momento?

O se dopo l'eliminazione, la procedura memorizzata inizia a inserire le righe e un'altra sessione invoca la stessa SP, che vorrà eliminare di nuovo tutte le righe, cosa allora?

In breve, posso creare una visione locale (a SP Execution) dei dati all'interno di una transazione eliminando tutte le righe, inserendo alcune righe, quindi eseguendo query sulle righe inserite, quindi eliminando nuova )?

Ciò mi consentirebbe di evitare di usare una colonna Rownet_ID per le righe temporanee, evitando i join molto più lenti (questa è un'implementazione EAV).

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top