Per domande su problemi che sorgono quando più utenti o processi accedono o modificano contemporaneamente informazioni condivise in un sistema di database.
Ho un database Postgres che contiene dettagli sui cluster di server, come lo stato del server ("attivo", "standby" ecc.). I server attivi in qualsiasi momento potrebbero dover eseguire il failover su uno standby e non mi interessa quale standby viene utilizzato in particolare. Voglio che una query del database cambi …
Questo è piuttosto semplice, ma sono sconcertato da ciò che fa PG (v9.0). Iniziamo con una semplice tabella: CREATE TABLE test (id INT PRIMARY KEY); e alcune righe: INSERT INTO TEST VALUES (1); INSERT INTO TEST VALUES (2); Usando il mio strumento di query JDBC preferito (ExecuteQuery), collego due finestre …
Provo a scrivere il codice del database per assicurarmi che non sia soggetto alle condizioni di gara, per assicurarmi di aver bloccato le righe o le tabelle corrette. Ma spesso mi chiedo: il mio codice è corretto? È possibile forzare a manifestare eventuali condizioni di gara esistenti? Voglio essere sicuro …
Supponiamo che tu abbia il seguente codice (ignora che è terribile): BEGIN TRAN; DECLARE @id int SELECT @id = id + 1 FROM TableA; UPDATE TableA SET id = @id; --TableA must have only one row, apparently! COMMIT TRAN; -- @id is returned to the client or used somewhere else …
TL; DR: La domanda che segue si riduce a: Quando si inserisce una riga, esiste una finestra di opportunità tra la generazione di un nuovo Identityvalore e il blocco della chiave di riga corrispondente nell'indice cluster, in cui un osservatore esterno potrebbe vedere un nuovo Identity valore inserito da una …
Supponiamo che io abbia due query, in esecuzione in due sessioni separate in SSMS: Prima sessione: UPDATE Person SET Name='Jonny', Surname='Cage' WHERE Id=42 Seconda sessione: SELECT Name, Surname FROM Person WITH(NOLOCK) WHERE Id > 30 È possibile che l' SELECTistruzione possa leggere una riga semi-aggiornata, ad esempio una con Name …
Sto riscontrando problemi di concorrenza con i miei inserti in una procedura memorizzata. La parte rilevante della procedura è questa: select @_id = Id from table1 where othervalue = @_othervalue IF( @_id IS NULL) BEGIN insert into table1 (othervalue) values (@_othervalue) select @_id = Id from table1 where othervalue = …
Immagina che il tuo requisito sia che tu abbia 3 enormi tabelle (dati strutturati) con circa 30 miliardi di righe ciascuna (dimensione totale di 4 TB) e che i tuoi numerosi utenti simultanei (che sono thread di sistema operativo paralleli su macchine LAN remote) dovranno leggere una parte di i …
Ho una tabella che conterrà circa 15 milioni di record. Ora devo aggiungere un indice alla tabella. L'aggiunta di un indice richiederà del tempo per aggiornare ogni voce della tabella. Sono abbastanza confuso se l'aggiunta dell'indice causerà tempi di inattività. Se sì, come posso superare i tempi di fermo?
Ho due tavoli. Uno è una tabella di registro; un altro contiene, essenzialmente, codici promozionali che possono essere utilizzati una sola volta. L'utente deve essere in grado di riscattare un coupon, che inserirà una riga nella tabella di registro e contrassegnerà il coupon come utilizzato (aggiornando la usedcolonna in true). …
Abbiamo un processo che genera un rapporto di inventario. Sul lato client, il processo divide un numero configurabile di thread di lavoro per creare una porzione di dati per il report che corrisponde a un archivio su molti (potenzialmente migliaia, in genere dozzine). Ogni thread di lavoro chiama un servizio …
Come tutti sappiamo, READ UNCOMMITTED è il livello di isolamento più basso in cui possono accumularsi cose come letture sporche e letture fantasma. Qual è il momento migliore per utilizzare questo livello di isolamento e per quali motivi potrebbe essere utilizzato? In realtà ho letto le risposte prima, ma non …
Qual è la differenza tra queste 2 query: START TRANSACTION; SELECT * FROM orders WHERE id=1; UPDATE orders SET username='John' WHERE id=1; COMMIT; E senza transazione: SELECT * FROM orders WHERE id=1; UPDATE orders SET username='John' WHERE id=1; Qual è l'effetto di avere SELECTuna transazione interna? Se è DELETE FROM …
http://www.postgresql.org/docs/9.2/static/transaction-iso.html La modalità di lettura ripetibile fornisce una rigorosa garanzia che ogni transazione abbia una visione completamente stabile del database. Tuttavia, questa visione non sarà necessariamente sempre coerente con alcune esecuzioni seriali (una alla volta) di transazioni simultanee dello stesso livello. Ad esempio, anche una transazione di sola lettura a …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.