Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Gabbro
    Registrato dal
    Nov 2000
    Messaggi
    828

    [mysql] Passare a innodb

    Salve,
    ho una tabella MyISAM con circa 1.000.000 di records. Questa tabella viene letta anche da 100 utenti in contemporanea e il problema è che guardando la lista dei processi mentre viene svolta una select (Sorting result) tutte le altre query su quella tabella hanno come stato Locked e mysql aspetta che la query precedente venga terminata. questo naturalmente comporta rallentamenti. Parlando con il sistemista della società di hosting dove ho il sito, mi ha consigliato di passare da MyISAM a Innodb perchè mi ha spiegato che le select verrebbero fatte in contemporanea per i 60 utenti senza eventuali stati di locked. E' vera questa cosa secondo la vostra esperienza? Chiedo perchè ho letto su questo forum che innodb è utile per altre cose e che spesso addirittura rallenta le query.

  2. #2
    Utente di HTML.it L'avatar di Gabbro
    Registrato dal
    Nov 2000
    Messaggi
    828

    Re: [mysql] Passare a innodb

    up

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    460
    Se effettui delle letture e basta, non e' vero.

    Se invece effettui anche delle scritture (in update), e' possibile che le tabelle MyISAM effettuino il lock a livello di tabella anziche' di riga. In quel caso, potrebbe essere anche vero, ma mi sembra strano, a meno che l'applicazione non sia scritta male..
    There are 10 types of people in the world - those who understand binary and those who don't.

  4. #4
    Utente di HTML.it L'avatar di Gabbro
    Registrato dal
    Nov 2000
    Messaggi
    828
    Originariamente inviato da frinkia
    Se effettui delle letture e basta, non e' vero.

    Se invece effettui anche delle scritture (in update), e' possibile che le tabelle MyISAM effettuino il lock a livello di tabella anziche' di riga. In quel caso, potrebbe essere anche vero, ma mi sembra strano, a meno che l'applicazione non sia scritta male..
    si faccio anche delle insert. infatti quando lui fà l'insert sulla tabella o fà una select rallenta tutte le altre query successive e non le fà in contemporanea.

  5. #5

    Re: [mysql] Passare a innodb

    Originariamente inviato da Gabbro
    Salve,
    ho una tabella MyISAM con circa 1.000.000 di records. Questa tabella viene letta anche da 100 utenti in contemporanea e il problema è che guardando la lista dei processi mentre viene svolta una select (Sorting result) tutte le altre query su quella tabella hanno come stato Locked e mysql aspetta che la query precedente venga terminata. questo naturalmente comporta rallentamenti. Parlando con il sistemista della società di hosting dove ho il sito, mi ha consigliato di passare da MyISAM a Innodb perchè mi ha spiegato che le select verrebbero fatte in contemporanea per i 60 utenti senza eventuali stati di locked. E' vera questa cosa secondo la vostra esperienza? Chiedo perchè ho letto su questo forum che innodb è utile per altre cose e che spesso addirittura rallenta le query.
    leggi un pò qui
    http://dev.mysql.com/doc/refman/4.1/...e-engines.html

    cmq si le Innodb possono gestire anche le commit e i rollback per l'inserimento e son state create apposta per situazioni abbastanza intense di utilizzo delle tabelle e dei dati in esse contenuti
    Soluzioni di Web marketing, CMS, Temi wordpress, grafica e molto altro

    -----
    Ogni topic aperto con un titolo errato fa perdere un capello al moderatore che lo dovrà sistemare.. se non vuoi contribuire alla calvizia dei moderatori apri 3D a norma di regolamento, e prima fai una ricerca! No pvt tecnici!

  6. #6
    Utente di HTML.it L'avatar di Gabbro
    Registrato dal
    Nov 2000
    Messaggi
    828
    si si ho letto la guida su mysql ma la mia domanda è se in effetti mentre myisam quando ha + select da fare mette in lock la tabella se innodb bypassa il problema ed è + veloce.

  7. #7
    Utente di HTML.it L'avatar di Gabbro
    Registrato dal
    Nov 2000
    Messaggi
    828

    esempi...

    Ciao grazie per la risposta. Le query sono super ottimizzate (ho
    controllato con explain) e gli indici sono studiati adhoc.
    Io ad esempio ho questa query :

    SELECT campo1,campo2, campo3 FROM utenti where and sesso = 0 and
    fl_foto = 1 ORDER BY id desc LIMIT 320,10


    Nel frattempo vedo dai processi che stà tentando di fare query e che
    sono LOCKED presumo perchè sono update sulla stessa tabella utenti:

    update utenti set campo=campo+1 where id=8608

    e che verranno effettuate solo dopo la select.
    La mia domanda è: è vero che con Innodb le update vengono fatte senza
    che la select sia finita oppure che + select vengono fatte in
    contemporanea senza aspettarsi l un l'altra?

  8. #8
    Utente di HTML.it L'avatar di Gabbro
    Registrato dal
    Nov 2000
    Messaggi
    828
    up

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    460
    Le tabelle di tipo InnoDB utilizzano il row-level locking.

    http://dev.mysql.com/doc/refman/5.0/...l-locking.html

    Questo vuole dire che mentre fai l'aggiornamento di una riga, solo se la query interessa quella riga viene bloccata, altrimenti passa.

    Le MyISAM no: fai un insert e finche' non ha finito tutte le altre query aspettano.
    There are 10 types of people in the world - those who understand binary and those who don't.

  10. #10
    Utente di HTML.it L'avatar di Gabbro
    Registrato dal
    Nov 2000
    Messaggi
    828
    Originariamente inviato da frinkia
    Le tabelle di tipo InnoDB utilizzano il row-level locking.

    http://dev.mysql.com/doc/refman/5.0/...l-locking.html

    Questo vuole dire che mentre fai l'aggiornamento di una riga, solo se la query interessa quella riga viene bloccata, altrimenti passa.

    Le MyISAM no: fai un insert e finche' non ha finito tutte le altre query aspettano.
    quindi nel mio caso Innodb è perfetta.
    la mia è una tabella di messaggi che gli utenti si scambiano e la posso mettere come innodb

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.