PCTRIO - il portale del software gratuito
Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    L'avatar di Lordwhiskey
    Lordwhiskey non  è collegato Esperto
    Registrato dal
    Jan 2008
    residenza
    Italy
    Messaggi
    42

    Blocco di Tabelle in MySQL

    Ciao a tutti;
    vi scrivo per chiedere una cosa che ultimamente mi sta tornando utile per sviluppare alcune piccole applicazioni basate su MySQL.
    Informandomi ho letto le varie differenze tra LOCK TABLES [tabella] READ[WRITE] e delle transazioni.
    Avevo però da porvi due domande:

    1 - E' possibile ricavare l'elenco delle tabelle bloccate, ed eventualmente, un valore della sessione che le sta bloccando?
    In maniera eventualmente da poter dire ad un utente che cerca di accedere alla tabella " Impossibile accedere, tabella in uso da XXXX "

    2 - Si possono bloccare SOLO intere tabelle oppure anche i singoli record?

    Grazie Mille
    i love DNS

  2. # ADS
    PUBBLICITA Link Sponsorizzati
    Registrato dal
    Sempre
    residenza
    Mondo Pubblicitario
    Messaggi
    Molti
     
  3. #2
    L'avatar di ceccus
    ceccus non  è collegato Amministratore
    Registrato dal
    May 2004
    residenza
    Siena
    Messaggi
    30,816
    Salve,
    Ma cosa vuoi fare ? Perchè hai "messo insieme" dei termini che poco hanno in comune ... esempio parli di "Transazioni" e poi di "lock table" ... sono 2 cose che non vanno molto d'accordo ... in più, le tue applicazioni sono "mediate" da uno strato intermedio, ovvero da un Application Server ?

    Ciao !!
    -- Ceccus Staff PCTrio.com --

    Facebook PcTrio CLICCA "MI PIACE"

  4. #3
    L'avatar di Lordwhiskey
    Lordwhiskey non  è collegato Esperto
    Registrato dal
    Jan 2008
    residenza
    Italy
    Messaggi
    42
    Salve,
    grazie mille per la risposta.

    Sarò più chiaro;
    informandomi in rete ( principalmente sul sito di MySQL ) mi sono fatto una mini cultura ( ) in merito alla questione della gestione multiutente di tabelle con MySQL.
    Ho letto le diverse differenze tra i vari motori di memorizzazione come MyISAM e InnoDB, prendendo atto del fatto che Transazioni e Lock Tables non hanno a che vedere nulla, ma che sono due tecniche comunque utilizzabili nell'ambito della gestione multiutente delle basi dati ( ditemi se erro ).
    L'architettura della quale dispongo è la classica client server, ove un server con installato MySQL fornisce l'accesso ai dati, mentre un'applicazione client ricava questi ultimi, li elabora ecc ecc...
    Facendo dei test per conto mio ho notato che con le direttive LOCK TABLES A READ ( ad esempio ) ottengo il blocco della tabelle, il che impedisce a tutte le sessioni presenti di potervi accedere in scrittura, però si verifica un fenomeno tale per cui eventuali INSERT vengono accodate ( ditemi sempre se erro ) e, una volta rilasciato il blocco, vengono eseguite nell'ordine con il quale erano state inviate al server MySQL.
    Ho notato anche sì che il terminale MySQL in caso di INSERT con blocco in READ da parte di sessioni diverse da quella bloccante, attende lo sblocco senza procedere.

    Il mio dubbio è quello tale per cui se io inviassi una query dal client applicativo con l'SQL "embedded" e se in quel momento una tabella fosse bloccata da una sessione diversa dalla mia, l'applicazione client starebbe in stallo in attesa della corretta esecuzione della query ?
    Se no, verrebbe in qualche modo bufferizzata dal server MySQL e poi eseguita?

    E ancora,

    non esiste un modo per ottenere lo stato di eventuale blocco di una tabella?

    ossia una sorta di funziona IsLocked(NOME TABELLA) che mi sappia dire ciò?

    Spero di essere stato più chiaro.

    Grazie mille ancora
    i love DNS

  5. # ADS
    PUBBLICITA Link Sponsorizzati
    Registrato dal
    Sempre
    residenza
    Mondo Pubblicitario
    Messaggi
    Molti
     
  6. #4
    L'avatar di ceccus
    ceccus non  è collegato Amministratore
    Registrato dal
    May 2004
    residenza
    Siena
    Messaggi
    30,816
    Salve,
    Allora, per fare ciò che vuoi fare te, come hai già verificato, il metodo migliore non è quello di bloccare tutta la tabella ... o le tabelle, perchè potrebbero essere interessate più tabelle ...
    Il metodo migliore è quello di utilizzare le transazioni, opportunamente mediate da un Application Server ... per esempio, nel mondo Microsoft, questo lo si ottiene utilizzando il COM+/DTC.
    In questo modo otterrai un utilizzo massimo delle Connessioni verso il DB , visto che vengono riciclate e avrai anche la transazionalità, visto che verrà gestita dal DTC ...
    Altrimenti occorre far gestire la transazione al DB, ma è meno efficiente ...
    Per cui è importante sapere su che tecnlogia saranno sviluppati i client ...

    Ciao !!
    -- Ceccus Staff PCTrio.com --

    Facebook PcTrio CLICCA "MI PIACE"

  7. #5
    L'avatar di Lordwhiskey
    Lordwhiskey non  è collegato Esperto
    Registrato dal
    Jan 2008
    residenza
    Italy
    Messaggi
    42
    Sempre grazie mille per le risposte

    Dunque, il client è sviluppato con RealBasic , mentre il server si basa su MySQL ( come credo avrete ormai capito );
    Il fatto che ci sia un "mediatore" è interessante, anche se non so come si possa avere un oggetto del genere nel mio caso;
    questo perché dalla mia visione sarebbe più semplice , prima di interagire in qualche modo con una tabella, interrogarla e sapere il suo stato.
    Con le transazioni, ho testato, che avviene un blocco automatico delle tabelle che viene rilasciato dando il commando di COMMIT o ROLLBACK a seguito di una serie di istruzioni.
    Ho notato anche che si ha un blocco per riga, ma non per tutte le tabelle;

    cercherò di spiegarmi meglio, prendiamo questo esempio
    [Occorre essere registrati per visualizzare il link. ]

    Se faccio il join tra le tabelle tra prodotti.id=fk_prodotto e nella clausola WHERE inserisco id=2, in prodotti ho la sola riga bloccata in corrispondenza di id=2, però la tabella prezzi è tutta bloccata.
    Io pensavo, invece, che bloccasse solo le righe con fk_prodotto=2 ossia quelle interessate dal join.

    Grazie ancora!
    i love DNS

  8. #6
    L'avatar di ceccus
    ceccus non  è collegato Amministratore
    Registrato dal
    May 2004
    residenza
    Siena
    Messaggi
    30,816
    Salve,
    Allora, quello che ti dico è che NON è MAI una buona idea , chiedere al DB lo "stato" di una tabella (o di più tabelle) ... anche perchè lo stato di una tabella potrebbe variare nel giro di pochissimi millisecondi ... per cui ... meglio far gestire il tutto al DB o , meglio ancora, come già detto, ad un Application Server ... e questa scelta dipende dal fatto se la tua applicazione deve essere sviluppata "per casa" o per un' azienda (e dalle dimensioni di questa azienda)
    Visto la vastità dell' argomento, per il momento, mi femerei qui ...

    Ciao !!
    -- Ceccus Staff PCTrio.com --

    Facebook PcTrio CLICCA "MI PIACE"

Discussioni simili

  1. MySQL
    Da navino nel forum Software Open-Source/Freeware
    Risposte: 4
    Ultimo messaggio: 10th November 2009, 17:13
  2. Mysql
    Da navino nel forum Applicazioni Software
    Risposte: 2
    Ultimo messaggio: 9th November 2009, 11:32
  3. Translator db mysql snitz mysql phpbb
    Da adminfrige nel forum Nostro Software
    Risposte: 31
    Ultimo messaggio: 10th January 2008, 09:28
  4. mysql
    Da msdn nel forum Miscellanea Hardware
    Risposte: 2
    Ultimo messaggio: 4th October 2004, 14:39

Visitatori hanno trovato questa pagina cercando

mysql tabella bloccata

my sql blocco

mysql tabella in uso

blocco record in mysql

bloccare tabella mysql

bloccare laccesso a un record mysql

mysql blocco riga

mysql lock record

blocchi mysql

esempio di lock su riga mysql

blocco riga in mysql

lock e transazioni in mysql

transazioni e lock mysql

tabella mysql in uso

mysql lock table ita

mysql conoscere tabelle bloccate

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Home  |   Software  |   Drivers  |   Guide  |   Sicurezza  |   Area gestione
Created by - best view 1024x768 and over. - C.F. 92048990524
PCTrio McAfee PCTrio AVG PCTrio Norton PCTrio Google