Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329

    Problema sulla concorrenza tra processi.

    Salve, vorrei che qualcuno mi riuscisse a chiarire un quesito che mi sono posto (forse stupido).

    Quesito:
    Se due o più utenti fanno richieste su uno stesso DB e in base a tale richiesta aggiornano una stessa tabella, come si può gestire tale concorrenza, senza incappare in errori?

    ES:
    Seleziono un numero che deve essere incrementato di uno, lo memorizzo in una variabile, lo incremento lo reinserisco nella tabella.
    Se tale procedura viene fatta nello stesso istante da "n" persone, non potrebbero estrarre tale numero ed incrementarlo di uno (tutte ed "n" le persone), e poi memorizzarlo con un valore errato? quindi incrementato di UNO e non di "n"???

    Devo incrementare tale numero direttamente attraverso MySql???
    Perchè il numero va incrementato ma in base alla data, ed in base a questo alle volte fatto partire da UNO.
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, non ho capito bene come funziona il tuo script ma le query dovrebbero comunque essere accodate. Per non sbagliare non dovresti fare una cosa del tipo:

    nuovo valore da mettere a db = a valore che stai visualizzando piu' uno MA fare un +1 nell update tipo:

    update tabella set campo = campo+1

  3. #3
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    Era questo che volevo capire, devo fare l'incremento all'interno della query di INSERT, per far si che la cosa sia atomica?
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  4. #4
    Originariamente inviato da Donovant
    Era questo che volevo capire, devo fare l'incremento all'interno della query di INSERT, per far si che la cosa sia atomica?
    Si, oppure usi un diverso approccio.
    Per esempio, se devi fare un contatore di visite puoi incrementare un numero ad ogni visita, oppure puoi registrare ogni visita come nuovo record nella tabella e poi contare i record.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.