Visualizzazione dei risultati da 1 a 10 su 10

Discussione: mysql tmp_table_size

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    41

    mysql tmp_table_size

    ho un db su un servizio Virtual Private Server con un paio di tabelle che superano le 70000 righe, quindi ogni tabella ha una dimensione che va dai 15 ai 20 Mega.

    Mysql a ogni query crea sull'Hardisk e precisamente sulla cartella /var/lib/mysql un duplicato della tabella su un file del tipo $sql_2f87_o.MYD.

    Il problema è che quando le connessioni sono tante questo continua creazione e cancellazione di file così grandi manda in palla il sistema.
    Ho trovato che impostando la proprietà tmp_table_size con un valore alto, io ho impostato 1024MB (anche se in realtà la mia VPS ne ha solo 512) mysql effettua le copie delle tabelle sulla Ram e non sull'HD, io ho provato ma le tabelle continuano a essere create sull'HD.

    Le domande quindi sono le seguenti:

    1. acquistando più Ram del servizio VPS la situazione potrebbe migliorare?
    2. la creazione di questi file in che circostanze avviene?
    3. è possibile evitarla del tutto? e se si come?

    Grazie a tutti per l'aiuto


  2. #2
    scusa... ma perché deve creare ogni volta un duplicato della tabella??

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    41
    Non lo so, non è una cosa che ho impostato io in qualche modo, è una cosa che fa normalmente. vorrei appunto capire come evitarla.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    41
    ho notato un altra cosa, le tabelle temporanee che crea sono sensibilmente più grosse di quelle reali, la tabella più grande che esiste ne DB è appunto di 20 MB ma tra quelle temporanee ne ho trovato alcune di 80MB.
    come è possibile? è un comportamento normale oppure devo preoccuparmi di rivedere le query? e se si quale potrebbe essere il problema?

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    41
    nessuno che abbia informazioni riguardo queste tabelle temporanee?

  6. #6
    sicuramente alleggerire le query non può che far bene, cercando il tuo problema et simili in internet non ho trovato molte informazioni...

    su vari siti consigliano di splittare i dati su varie tabelle che poi leghi in un modo particolare, se riesco a ritrovare quell'articolo te lo linko.

  7. #7
    Originariamente inviato da 312
    nessuno che abbia informazioni riguardo queste tabelle temporanee?
    ho come il dubbio che le tabelle temporanee come da te indicate siano in realta' le tabelle con estensione .MYD, .MYI, .frm

    Con il motore MyIsam questi tre file "SONO" la tabella. in uno trovi i dati (MYD), in un altro gli indici (MYI) e nel terzo il formato della tabella (frm)

    Se cosi' non fosse mi dovresti indicare come fai a "vedere" le tabelle temporanee visto che "spariscono" automaticamente con la chiusura della connessione, cioe' a fine pagina php.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    41
    Originariamente inviato da piero.mac
    ho come il dubbio che le tabelle temporanee come da te indicate siano in realta' le tabelle con estensione .MYD, .MYI, .frm
    No non sono quelle, quelli sono all'interno della cartella dello specifico database, ovvero nel percorso

    /var/lib/mysql/nomedeldatabase/

    mentre le tabelle temporanee vengono formate all'esterno ovvero nel percorso:

    /var/lib/mysql/

    io le vedo perchè se vado appunto in quest'ultimo percorso noto che vengono creati dei file con momi del tipo $sql_2f87_o.MYD

  9. #9
    non saprei che dirti. Di solito quel tipo di nome viene utilizzato per le tabelle temporanee "di lavoro" del server. cioe' prende e tira su i dati previsti per le scelte effettuate e dopo di che vengono abbandonate.

    Ho qualche pc con linux, ma non riscontro nulla nella cartella /var/bin/mysql ... vedo solo i file delle InnoDB e le cartelle dei database.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    41
    Originariamente inviato da piero.mac
    Ho qualche pc con linux, ma non riscontro nulla nella cartella /var/bin/mysql ... vedo solo i file delle InnoDB e le cartelle dei database.
    Anche io ho diversi server Linux e non le avevo mai incontrate finora, ma la ragione è molto semplice: di norma non dovrebbere esistere.
    vengono create solo in caso di saturazione della Ram, altrimenti di norma mysql usa la Ram e non l'HD per questa operazione.

    Originariamente inviato da goikiu
    su vari siti consigliano di splittare i dati su varie tabelle che poi leghi in un modo particolare, se riesco a ritrovare quell'articolo te lo linko.
    questa potrebbe essere una buona soluzione, sto facendo un po di ricerche su come legare le tabelle se trovo qualcosa vi aggiorno.

    Nel caso serva a qualcuno rispondo io alle domande che ho posto all'inizio in base alle ricerche che ho fatto in questi giorni:

    1. acquistando più Ram del servizio VPS la situazione potrebbe migliorare?
    Si, l'ho fatto e tutto è tornato alla normalità

    2. la creazione di questi file in che circostanze avviene?
    come ho detto prima in caso di saturazione della Ram, o comunque della quota che normalmente mysql si 'accaparra' per questo tipo di operazioni, la quale può essere impostata su /etc/my.cnf con il parametro tmp_table_size

    3. è possibile evitarla del tutto? e se si come?
    Da quello che ho trovato io, per il momento, no ... o meglio si può evitare che si creino le condizioni perchè mysql abbia necessità di usare l'HD

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.