MySQL – Tuning Database

Capita di trovarsi a gestire un gran quantitativo di dati in una o più tabelle, confrontandosi di conseguenza con le performance del proprio database.

Il mio gran quantitativo di dati corrispondeva a circa 600.000 righe (300 MB) tutte stipate in un’unica tabella. Questo mi hanno portato ad avere tempi di inserimento molto lunghi, con conseguenti cadute di velocità anche in lettura.

Quello che vediamo in questo post non è un vero e proprio tuning, ma una serie di passi (intelligenti??) per ottimizzare i nostri dati. Non metteremo mano ai file di configurazione di MySQL, anche se vi consiglio un buon tool online che vi propone un file my.conf in base alle vostre esigenze: Percona. ATTENZIONE! Effettuate sempre dei backup prima di modificare questi file.

Vi racconto la mia storia
Avevo una tabella con più di 600.000 record, non ottimizzata, non deframmetata e con dati molto vecchi e non più utilizzati.
Uno script giornaliero, che effettuava inserimenti massivi su tale tabelle, aveva raggiunto tempi di esecuzione molto elevati: più di 5 ore.
Durante l’esecuzione dello script dovevo mantenere accettabile anche le letture dei dati e non è bastato avvalersi di un provider con dischi SSD, come Digital Ocean, per sopperire al problema.

Dopo una breve analisi e un po’ di tentativi ecco quali accortezze ho implementato:

  • Passaggio delle tabelle da MyISAM a InnoDB (+)
  • Rimozione dei dati vecchi e non più utilizzati (++)
  • Ottimizzazione delle tabelle con la seguente query (++):
    OPTIMIZE TABLE nome_tabella
  • Deframmentazione della tabelle con la seguente query (+++):
    ALTER TABLE nome_tabella ENGINE=INNODB

Risultato finale
Numero di righe: 240.000
Spazio occupato dalla tabella: 125 MB
Tempo di esecuzione dello script: 1 ora e 31 minuti

Che dite? Non male.

Conclusioni
Nel mio caso ho dovuto schedulare queste operazioni con cadenza giornaliera, altrimenti nel giro di una settimana mi sarei ritrovato nella pessima condizione iniziale.

Buon tuning a tutti! ;)

Pubblicato in blog | Lascia un commento

Linux – Visualizzare un file di log in tempo reale sullo schermo

Oggi mi pongo la seguente domanda: come faccio a vedere l’aggiornamento del file di log in tempo reale?

Beh! Facilissimo!

Il comando da lanciare in console è:

tail -f /var/log/file.log

Per stoppare l’esecuzione basterà digitare CTRL+C.

Buona visione! ;)

Pubblicato in bash, console, linux | Contrassegnato , , , , , | Lascia un commento

Linux: Usare wget con una basic authentication

Espresso news.

Se avete bisogno di scaricare dei file dalla rete protetti da una basic authentication, avrete bisogno di questa riga di codice da eseguire da terminale:

wget --http-user=USERNAME --http-password=PASSWORD http://SOMETURLTOFILE

Buon download! ;)

Pubblicato in console, linux | Contrassegnato , , , | Lascia un commento

Java: convertire una data in un timestamp (Epoch format)

Java e le date!!!  :twisted:

Non so voi ma io sclero ogni qualvolta ho a che fare con le date…

La questione di cui ci occupiamo oggi è la conversione di una data (oggetto di tipo Date) in una in formato Epoch.

Come molti di voi sapranno Epoch rappresenta una data importante nel mondo dell’informatica: 1 Gennaio 1970 ore 00.00.00.000. L’anno 0!
In questo post vi mostrerò come ottenere i millisecondi che sono trascorsi dall’Epoch date.

Vediamo come effettuare la conversione:

DateFormat formatter=new SimpleDateFormat("dd-MM-yyyy");
Date date= (Date) formatter.parse("01-02-2013");
Long epochFormat=date.getTime();

Nel caso in cui foste interessati ad avere i secondi dall’Epoch date, basterà dividere “epochFormat” per 1000!

Buona conversione! ;)

Pubblicato in java, programmazione | Contrassegnato , , , , | Lascia un commento

Android: tante applicazioni gratuite su Amazon App Store – SOLO PER OGGI

Segnalazione lampo.

Solo per oggi su Amazon App Store si possono trovare tante applicazioni gratuite:

Molte di queste app non hanno bisogno di presentazioni, le altre sono tutte da scoprire! Affrettatevi!

Buona installazione! ;)

Pubblicato in android, blog | Contrassegnato , , , | Lascia un commento

Phpmyadmin – Disabilitare i popup per la creazione di nuove tabelle

Phpmyadmin è una praticissima web application che ci permette di amministrare i nostri database MySQL.

Con l’avanza delle versioni si possono gustare nuova funzionalità, recentemente la sezione dedicata alla stored procedure è la mia preferita! ;)

Non mancano però alcuni punti poco attraenti dell’applicativo, uno fra tutti: l’utilizzo di pop-up modali per la creazione/modifica delle tabelle o delle procedure. A mio avviso non è il modo migliore per gestire questa funzionalità.

Fortunatamente c’è la possibilità di disabilitare questa opzione e di far aprire l’editor delle tabelle (o delle procedure) in una nuova pagina, vediamo come fare:

  • Apriamo il file “/var/lib/phpmyadmin/config.inc.php” con un utente amministratore, possiamo farlo digitando:
    sudo kate /var/lib/phpmyadmin/config.inc.php
  • Cerchiamo la configurazione:
    $cfg['AjaxEnable'] = true;

    e modifichiamola in questo modo, se il file è vuoto scriviamo “<?php” ed a seguire aggiungiamo:

    $cfg['AjaxEnable'] = false;
Bene, finito!
Riaprite il vostro phpmyadmin e buona interrogazione! ;)
Pubblicato in linux, php, phpmyadmin, programmazione, ubuntu | Contrassegnato , , , | Lascia un commento

Linux – Avviare il browser in fullscreen mode

Per qualche strana ragione (che spero di poter rendere un progetto interessante) mi sono chiesto se e come è possibile avviare un browser in fullscreen mode da riga di comando.

Devo dire che la ricerca è stata interessante e sorprendente. Infatti ho scoperto che molti browser permettono di navigare a schermo intero un sito sin dall’avvio, eccetto uno: Firefox8-O

La mia ricerca si basava sulle funzionalità built-in dei browser, quindi senza l’utilizzo di estensioni di terze parti.

Vediamo un po’ come e quali sono gli attributi da aggiungere ai diversi browser per navigare a schermo intero.

Google Chrome

google-chrome --app=http://www.micene.net

Chromium

chromium-browser --app=http://www.micene.net

Rekonq

rekonq --webapp http://www.micene.net

Opera

opera -fullscreen http://www.micene.net

Per il momento, sembrerebbe che Firefox può essere avviato a schermo intero solo attraverso delle estensioni. Strana mancanza quella della Mozilla Foundation.

Frecciatina gratuita
Sembrerebbe che anche Internet Explorer abbia la possibilità di avviarsi in fullscreen mode (kiosk mode):

iexplore -k http://www.micene.net

Qualcuno ha informazioni riguardo la mancanza di Firefox?

Buona navigazione a schermo intero! ;)

Pubblicato in firefox, google chrome, internet, linux, opera, rekonq | Contrassegnato , , , , , , , , , , | Lascia un commento

Bash – Copia di sicurezza compressa

Qualcuno lo chiamerebbe impropiamente backup:D

Vi sarà capitato di frequente di voler salvaguardare i vostri file copiandoli in un’area sicura del vostro PC, magari comprimendoli e magari aggiungendo al nome del file la data in cui è stata eseguita l’operazione.

Oggi vedremo come è possibile fare tutto questo con un semplice file bash, iniziamo?

  • Aprite il vostro editor preferito e scrivete:
    #!/bin/bash
    
    mkdir -p path_di_destinazione
    tar -cvzf path_di_destinazione/`date +%Y%m%d%H%M%S_nome_file.tar.gz` path_dei_file_da_comprimere
  • Salvate il file con estensione sh.
  • Per finire rendete il file appena creato avviabile
FINITO!
Ora da console potrete avviare lo script appena creato e al termine dell’operazione troverete in “path_di_destinazione” un file con estensione tar.gz. L’archivio compresso conterrà i vostri file.
Per scoprire come scompattare l’archivio vi consiglio di leggere un vecchio post di Micene.net.
Buona archiviazione! ;)
Pubblicato in bash, console, linux, programmazione | Contrassegnato , , , , , | Lascia un commento

Bash – Cerca file più grandi di

Vi è mai capitato di voler cercare tutti i file che occupano più di un TOT di KB?

Se la vostra risposta è si, ecco come potreste fare:

  1. Aprite una console
  2. Spostarvi nella cartella desiderata
  3. Lanciate il seguente comando:
    find . -type f -size +400k -exec ls -lh {} \; | awk '{ print $10 ": " $5 }'

Il comando elencherà la path e la dimensione dei file trovati, se non funziona con $10, sostituitelo con $9.

Se volete cancellare tutti i file trovati, poteste lanciare lo stesso comando leggermente modificato:

find . -type f -size +400k -exec rm -rf {} \;

Buona ricerca! ;)

Pubblicato in bash, linux, mac | Contrassegnato , , , , | Lascia un commento

MySQL – ERROR 1396 (HY000)

Vi è mai capitato questo errore operando con MySQL?
A me è capitato sia in fase di creazione di un utente, sia in fase di cancellazione di un utente.

Vediamo insieme come risolvere il problema nei due diversi casi.

Creazione di un utente

Se l’errore vi capita facendo qualcosa del genere:

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';

Allora per risolvere la situazione basterà lanciare il seguente comando:

FLUSH PRIVILEGES;

Cancellazione di un utente

Se l’errore vi capita facendo qualcosa del genere:

DROP USER 'user';

Allora per risolvere la situazione basterà lanciara il seguente comando:

DELETE FROM mysql.user WHERE USER='user';
DELETE FROM mysql.db WHERE USER='user';

Buona selezione a tutti! 8)

Pubblicato in mysql, programmazione | Contrassegnato , , | Lascia un commento