Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    114

    [MySQL] Gestione concorrenziale delle query

    Ho cercato e cercato, non solo in questo forum ma in tutto il web, una soluzione al mio problema, quindi provo a chiedere qui!

    Come gestisce la concorrenza un server MySQL?
    In pratica ho un script sul server che può essere utilizzato contemporaneamente da più utenti il quale si deve occupare di modificare il valore di un campo (ancora è da decidere se decrementare un valore fino a 0 oppure se concatenare gli ID dei "richiedenti"). Il mio problema è questo: se due utenti decidono di effettuare contemporaneamente la stessa query, la consistenza del valore sarebbe mantenuta?

    In caso la query comprendesse anche Lock e Unlock della tabella (o del record), come si comporterebbe MySQL? In pratica è sempre il server a ricevere le query e quindi a scrivere nel db; ha ancora senso implementare i lock se poi l'utente "scrittore" è sempre lo stesso?

    Mi spiego meglio (spero): lo script (PHP) crea una connessione al DB, fa il lock, la query e l'unlock della tabella; mettiamo che due script vogliano praticamente in simultanea eseguire la query, essendo sempre lo stesso utente a richiederla, il lock (che serve per bloccare la scrittura ad utenti differenti) continuerebbe a garantire la consistenza dei dati?

  2. #2
    Sì, il lock preserva le modifiche alla tabella finchè non viene slockata.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    114
    Originariamente inviato da Dascos
    Sì, il lock preserva le modifiche alla tabella finchè non viene slockata.
    Anche se il lock viene effettuato dallo stesso utente MySQL? (essendo solo e sempre il server a scrivere nel db)

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    lock a livello di tabella sono, in generale, da evitare in quanto introducono delle serializzazioni che impediscono gli utilizzi paralleli.

    il che va bene se ci sono pochi client, molto male in caso contrario
    ---
    I lock "furbi" si fanno a livello di riga (con innodb, ovviamente, non con myisam), e c'è una intera branca dell'informatica che tratta della concorrenza e dell'allocazione delle risorse.

    Solo un elemento su cui riflettere: nel caso voglia proprio fare un lock di tabella (cosa come già detto non buona), inventati un meccanismo pseudorandom per i tentativi degli altri client (simile ad ethernet con le collisioni dei frame), evitando che starvino

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    114
    Originariamente inviato da franzauker
    lock a livello di tabella sono, in generale, da evitare in quanto introducono delle serializzazioni che impediscono gli utilizzi paralleli.

    il che va bene se ci sono pochi client, molto male in caso contrario
    ---
    I lock "furbi" si fanno a livello di riga (con innodb, ovviamente, non con myisam), e c'è una intera branca dell'informatica che tratta della concorrenza e dell'allocazione delle risorse.

    Solo un elemento su cui riflettere: nel caso voglia proprio fare un lock di tabella (cosa come già detto non buona), inventati un meccanismo pseudorandom per i tentativi degli altri client (simile ad ethernet con le collisioni dei frame), evitando che starvino
    Ok grazie! Comunque MyIsam erano già stati aboliti in partenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da battax
    Ok grazie! Comunque MyIsam erano già stati aboliti in partenza
    e per quale motivo?

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    114
    Originariamente inviato da franzauker
    e per quale motivo?
    Beh, per la possibilità di poter creare delle relazioni tra le tabelle e far così propagare modifiche o cancellazioni in automatico. Le MyIsam sono più performanti ma non permettono di definire delle relazioni tra le tabelle!

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.