Esegui OPTIMIZE TABLE per deframmentare le tabelle per prestazioni migliori


12

Sto eseguendo il sistema operativo Linux a 64 bit. Il mio sintonizzatore mysql sta dicendo le seguenti cose:

-------- Statistiche generali ---------------------------------------- ----------
[-] Controllo versione saltata per lo script MySQLTuner
[OK] Attualmente in esecuzione MySQL supportato versione 5.1.61-log
[OK] Operativo su architettura a 64 bit

-------- Statistiche del motore di archiviazione --------------------------------------- ----
[-] Stato: -Archivio -BDB -Federated + InnoDB -ISAM -NDBCluster
[-] Dati nelle tabelle MyISAM: 1G (Tabelle: 1914)
[-] Dati nelle tabelle InnoDB: 4M (Tabelle: 199)
[!!] Totale tabelle frammentate: 296

-------- Consigli di sicurezza ---------------------------------------- ---
[OK] A tutti gli utenti del database sono assegnate le password

-------- Metriche delle prestazioni ---------------------------------------- ---------
[-] Fino a: 6s (7K q [1K qps], 142 conn, TX: 8M, RX: 701K)
[-] Legge / Scrive: 97% / 3%
[-] Buffer totali: 1,7 G globali + 13,2 M per thread (384 thread max)
[OK] Massimo utilizzo possibile della memoria: 6,6 G (42% della RAM installata)
[OK] Query lente: 0% (0 / 7K)
[OK] Massimo utilizzo delle connessioni disponibili: 5% (20/384)
[OK] Dimensione buffer chiave / indici MyISAM totali: 1,5 G / 2,7 G
[OK] Percentuale di hit buffer chiave: 97,4% (553 KB memorizzati nella cache / 14.000 letture)
[OK] Efficienza cache query: 64,6% (4K cache / 6K seleziona)
[OK] Query cache prunes al giorno: 0
[OK] Ordinamenti che richiedono tabelle temporanee: 0% (2 ordinamenti temporanei / 337 ordinamenti)
[OK] Tabelle temporanee create su disco: 8% (17 su disco / 198 totali)
[OK] Percentuale hit cache del thread: 85% (20 connessioni create / 142)
[OK] Percentuale di riscontri nella cache della tabella: 98% (438 aperti / 445 aperti)
[OK] Limite file aperto utilizzato: 10% (856 / 8K)
[OK] Blocchi tabella acquisiti immediatamente: 99% (blocchi 2K immediati / 2K)
[OK] Dimensione dati / pool buffer InnoDB: 4,2 M / 8,0 M


-------- Consigli ----------------------------------------- ------------
Raccomandazioni generali:
    Esegui OPTIMIZE TABLE per deframmentare le tabelle per prestazioni migliori
    MySQL è stato avviato nelle ultime 24 ore - i consigli potrebbero essere inaccurati

Le loro raccomandazioni sono di eseguire la OPTIMIZE TABLEdeframmentazione delle tabelle per prestazioni migliori; Ma non so come eseguirlo tramite Putty.

C'è qualcuno che può darmi il codice come posso eseguirlo tramite Putty?

Risposte:


7

OPTIMIZE TABLE è un'istruzione SQL: eseguila in un client MySQL.

Sulla riga comandi del server, è necessario disporre del client della riga comandi installato; puoi connetterti al tuo database nel client con mysql -u username -p.

Vedere la documentazione suOPTIMIZE TABLE per ulteriori informazioni.


Questo sito riguarda le domande poste dagli amministratori di sistema professionisti.
gparent

@gparent - uhh significava essere sulla domanda, non la risposta perfettamente valida di Shane?
Mark Henderson,

2
@gparent Right - ma non credo sia giusto giudicare la professionalità di qualcuno in base alla conoscenza di un'istruzione SQL quando la vede. La ricerca avrebbe rapidamente sollevato la risposta, ma ... Non mi piace l'idea che questa comunità allontani le domande per essere troppo "ovvia".
Shane Madden

Hai ragione, il mio commento non appartiene affatto qui, penso che l'autore abbia pubblicato un commento sulla domanda di Shane e poi l'abbia rimosso, o quello o volevo davvero pubblicarlo sulla domanda di Barkat ma di solito aggiungerei ulteriori informazioni se quello era il caso.
gparent

1
Non sono d'accordo con te, però, c'è un posto in cui devi tracciare la linea. Penso che sia corretto affermare che un professionista (faq: a titolo professionale) che attualmente lavora con i database MySQL e cerca di ottimizzarli dovrebbe essere abbastanza abile da cercare il termine e capire che si tratta di una query MySQL dal primo risultato di ricerca. Forse mi aspetto troppo da qualsiasi dipendente ..
Gparent

18

Puoi anche provare mysqlcheck -u username -p --auto-repair --optimize --all-databasesnel terminale.

Per quanto riguarda l'esecuzione di "ottimizza tabella" è possibile avviare MySQL in questo modo mysql -u username -pe da lì è possibile eseguire comandi. In genere il primo comando che uso è show databases;ma dovresti prima trovare un tutorial su MySQL. Il primo che è venuto su Google: http://downloads.mysql.com/docs/mysql-tutorial-excerpt-5.1-en.pdf

Non importa se stai usando lo stucco. Potresti voler dire "dalla riga di comando" invece di "via Putty".


2
Questa è una soluzione molto migliore di quella che è stata accettata. Non è necessario enumerare tutti i database e le tabelle prima di eseguire i comandi, oltre alla riparazione automatica.
Sammitch,

1
Fatti anche un favore e fai un backup del database prima di eseguire tutto ciò. mysqldump -u username -p dbname > dbname.sqle gzip dbname.sqldovrebbe farlo bene.
Fiasco Labs,

Fiasco, almeno in centos, il comando dovrebbe esseremysqldump -u username -p db_name > dbname.sql
yitwail
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.