SELECT
table_schema,table_name, count(*) TABLES,
round(sum(table_rows)/1000000,2) rows,
round(sum(data_length)/(1024*1024*1024),2) DATA,
round(sum(index_length)/(1024*1024*1024),2) idx,
round(sum(data_length+index_length)/(1024*1024*1024),2) total_size,
round(sum(index_length)/sum(data_length),2) idxfrac
FROM
information_schema.TABLES
group by table_schema,table_name
order by 7 desc
Visualizzazione post con etichetta Database. Mostra tutti i post
Visualizzazione post con etichetta Database. Mostra tutti i post
venerdì 22 giugno 2012
giovedì 21 giugno 2012
MySql - Salvataggio di tabella su file
Salvataggio di tabella su file:
Se Infobright potrebbe dare il seguente errore:
The query includes syntax that is not supported by the Infobright Optimizer. Either restructure the query with supported syntax, or enable the MySQL Query Path in the brighthouse.ini file to execute the query with reduced performance.
Per risolverlo eseguire prima lo statement:
Caricamento da file:
SELECT * FROM prova
INTO OUTFILE '/mnt/prova.csv'
FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n';
Se Infobright potrebbe dare il seguente errore:
The query includes syntax that is not supported by the Infobright Optimizer. Either restructure the query with supported syntax, or enable the MySQL Query Path in the brighthouse.ini file to execute the query with reduced performance.
Per risolverlo eseguire prima lo statement:
set @bh_dataformat = 'txt_variable';
Caricamento da file:
LOAD DATA INFILE '/mnt/prova.csv' INTO TABLE prova1
martedì 12 giugno 2012
Vertica - Query di monitoraggio
Verificare lo spazio occupato dalla tabelle sul disco
Vedere l'elenco della tabelle
Verificare le query attive
Killare una sessione
Inserire come parametro il campo session_id
SELECT t.table_schema,t.table_name AS table_name,
SUM(ps.wos_row_count + ps.ros_row_count) AS row_count,
SUM(ps.wos_used_bytes + ps.ros_used_bytes)/(1024*1024) AS MB_count
FROM tables t
JOIN projections p ON t.table_id = p.anchor_table_id
JOIN projection_storage ps on p.projection_name = ps.projection_name
WHERE (ps.wos_used_bytes + ps.ros_used_bytes) > 500000
GROUP BY t.table_schema,t.table_name
ORDER BY MB_count DESC;
Vedere l'elenco della tabelle
SELECT * FROM tables;
Verificare le query attive
select node_name, user_name, client_hostname, session_id, transaction_start, statement_start, current_statement
from sessions
Killare una sessione
Inserire come parametro il campo session_id
SELECT CLOSE_SESSION('vertica01.pgh.wpahs774:0x1db5bb');
giovedì 23 febbraio 2012
PostgreSql - Impostazioni server per DataWarehouse
Significato dei principali paramentri di configurazione del server PostgreSql presenti nel file postgresql.conf e valorizzazione consigliata per applicazioni di tipo Data Warehouse.
fsync
Se questo parametro è attivo, il server PostgreSQL proverà ad assicurarsi che gli aggiornamenti siano scritti fisicamente su disco, eseguendo chiamate di sistema fsync() o vari metodi equivalenti (si veda wal_sync_method). Questo assicura che il cluster database possa recuperare a uno stato consistente dopo un blocco del sistema operativo o dell'hardware.Mentre disabilitare fsync spesso è un beneficio in termini di prestazioni, questo può risultare in corruzione irrecuperabile dei dati in caso di blocco o arresto inaspettato del sistema. Così è consigliabile disabilitare fsync se è possibile ricreare facilmente l'intero database a partire da dati esterni.
Esempi di circostanze sicure per disabilitare fsync includono il caricamento iniziale di un nuovo cluster di database a partire da un file di backup, l'uso di un cluster per l'elaborazione di statistiche all'ora che vengono quindi ricreate, o per un clone in sola lettura del database che viene ricreato frequentemente e non viene usato per il failover. Hardware di alta qualità da solo non è sufficiente a giustificare la disabilitazione di fsync.
In molte situazioni, disabilitare synchronous_commit per le transazioni non critiche può fornire molti dei potenziali benefici equivalenti a disattivare fsync, senza i rischi collegati di corruzione di dati.
fsync può essere impostato solo nel file postgresql.conf o dalla linea di comando del server. Se di disabilita questo parametro, considerare anche la disabilitazione di full_page_writes.
Per datawarehouse valorizzato a off
synchronous_commit
Specifica se il commit della transazione aspetterà che i record WAL siano scritti su disco prima che il comando restituisca un indicazione di «successo» al client. L'impostazione predefinita, e sicura, è on. Quando impostato a off, ci può essere un ritardo tra quando viene riportato il successo al client e quando la transazione è veramente garantita essere sicura rispetto a un blocco del server. (Il massimo ritardo è tre volte wal_writer_delay). Diversamente da fsync, impostare questo parametro a off non crea nessun rischio di inconsistenza del database: un blocco del sistema operativo o del database potrebbe risultare nella perdita di alcune transazioni presumibilmente sottoposte a commit, ma lo stato del database sarà comunque lo stesso come se quelle transazioni fossero state annullate di recente. Quindi, disabilitare synchronous_commit può essere un'alternativa utile quando le prestazioni sono più importanti rispetto alla certezza assoluta sulla durabilità di una transazione.
Questo parametro può essere cambiato in qualsiasi momento; il comportamento per qualsiasi transazione è determinato dall'impostazione effettiva quando viene effettuato il commit. È inoltre possibile, e utile, avere alcune transazione che fanno il commit in modo sincrono e altre che lo fanno in modo asincrono. For example, to make a single multistatement transaction commit asynchronously when the default is the opposite, issue SET LOCAL synchronous_commit TO OFF within the transaction.
Questo parametro può essere cambiato in qualsiasi momento; il comportamento per qualsiasi transazione è determinato dall'impostazione effettiva quando viene effettuato il commit. È inoltre possibile, e utile, avere alcune transazione che fanno il commit in modo sincrono e altre che lo fanno in modo asincrono. For example, to make a single multistatement transaction commit asynchronously when the default is the opposite, issue SET LOCAL synchronous_commit TO OFF within the transaction.
Per datawarehouse valorizzato a off
full_page_writes
Disabilitare questo parametro velocizza le operazioni normali, ma potrebbe portare o a una corruzione non recuperabile dei dati, o a una corruzione dei dati silenziosa, dopo un fallimento del sistema. I rischi solo simili a disabilitare fsync, sebbene minori, e dovrebbe essere disabilitato solo nelle stesse circostanze raccomandate per quel parametro.
Per datawarehouse valorizzato a off
max_connections
Per datawarehouse scegliere un valore tra 10 e 40
shared_buffers (integer)
Imposta l'ammontare di memoria che il server database usa per i buffer di memoria condivisa. Il valore predefinito è tipicamente 32 megabyte (32MB), ma potrebbe essere meno se le impostazioni del kernel non lo supportano (come determinato durante l'initdb). Questa impostazione deve essere almeno 128 kilobytes. (Valori non predefiniti di BLCKSZ cambiano il minimo). Comunque, impostazioni significativamente maggiori rispetto al minimo sono di solito necessarie per buone prestazioni. Questo parametro può essere impostato solo all'avvio del server.
Se si ha un server database dedicato con 1GB o più di RAM, un valore di partenza ragionevole per shared_buffers è il 25% della memoria del sistema. Ci sono molti carichi di lavoro anche dove sono in vigore grandi valori per shared_buffers, ma dato chePostgreSQL fa affidamento anche sulla cache del sistema operativo, è improbabile che un'allocazione di più del 40% della RAM per shared_buffers funzionerà meglio rispetto a un quantitativo minore. Impostazioni più grandi per shared_buffers di solito richiedono un incremento corrispondente in checkpoint_segments, per diffondere il processo di scrittura di grandi quantità di dati nuovi o cambiati in un periodo di tempo più lungo.
Su sistemi con meno di 1GB di RAM, una percentuale di RAM più piccola è appropriata, quindi da lasciare spazio adeguato per il sistema operativo. Inoltre, su Windows, valori grandi per shared_buffers non sono così efficaci. Si potrebbero avere risultati migliori mantenendo il valore relativamente basso e usando maggiormente la cache del sistema operativo. L'intervallo utile pershared_buffers su sistemi Windows è generalmente da 64MB a 512MB.
Incrementare questo parametro potrebbe causare che PostgreSQL richieda più memoria System V condivisa rispetto a quello che permette il valore predefinito del sistema operativo. Si veda la sezione «Memoria condivisa e semafori» della guida per informazioni su come aggiustare questi parametri, se necessario.
¼ of RAM
work_mem
Specifica l'ammontare di memoria che deve essere usata da operazioni di ordinamento interne e dalle tabelle hash prima di scrivere in file disco temporanei. Il valore predefinito è un megabyte (1MB). Si noti che per una query complessa, diverse operazioni di ordinamento o hash potrebbero essere eseguite in parallelo; ogni operazione potrà usare tanta memoria quanto specificato da questo valore prima che cominci a scrivere dati in file temporanei. Inoltre, diverse sessioni in esecuzione potrebbero fare tali operazioni concorrentemente. Perciò, la memoria totale usata potrebbe essere molte volte più grande di work_mem; è necessario tenerlo a mente quando si sceglie il valore. Operazioni di ordinamento sono usate per ORDER BY, DISTINCT e join merge. Hash tables are used in hash joins, hash-based aggregation, and hash-based processing of IN subqueries.
128MB to 1GB
maintenance_work_mem (integer)
Specifica l'ammontare di mamoria massimo da usare per operazioni di manutenzione, tipo VACUUM, CREATE INDEX e ALTER TABLE ADD FOREIGN KEY. Il valore predefinito è 16 megabyte (16MB). Dato che solo una di queste operazioni può essere eseguita alla volta da una sessione di database, e normalmente un'installazione non ne ha molte in esecuzione consorrentememte, è sicuro impostare questo valore significativamente maggiore rispetto a work_mem. Valori maggiori potrebbero aumentare le prestazioni del vacuum e del ripristino dei dump del database.
Si noti che quando autovacuum è in esecuzione, questa memoria potrebbe essere allocata autovacuum_max_workers volte, quindi fare attenzione a non impostare un valore predefinito troppo alto.
512MB to 1GB
temp_buffers
Imposta il massimo numero di butter temporanei usati da ogni sessione di database. Questi sono buffer locali alla sessione usati solo per accedere a tabelle temporanee. Il valore predefinito è otto megabyte (8MB). L'impostazione può essere cambiata all'interno di sessioni individuali, ma solo prima del primo utilizzo di tabelle temporanee all'interno della sessione; tentativi successivi di cambiare il valore non avranno effetto su quella sessione.
Una sessione allocherà buffer temporanei come richiesto dal limite fornito da temp_buffers. Il costo di impostare un valore grande in sessioni che effettivamente non necessitano di molti buffer temporanei è solo quello di un destrittore di buffer, o circa 64 byte per incremento in temp_buffers. Comunque se un buffer è effettivamente usato, 8192 byte aggiuntivi saranno consumati (o in generale,BLCKSZ byte).
128MB to 1GB
effective_cache_size
¾ of RAM
wal_buffers
L'ammontare di memoria usata nella memoria condivisa per dati WAL. Il valore predefinito è 64 kilobyte (64kB). L'impostazione necessita solo di essere larga abbastanza per contenere l'ammontare di dati WAL generati da una transazione tipica, dato che i dati sono scritto fuori dal disco ad ogni commit di transazione. Questo parametro può essere impostato solo all'avvio del server.
Incrementare questo parametro potrebbe causare che PostgreSQL richieda più memoria condivisa System V rispetto a quello che permette la configurazione predefinita del sistema operativo.
16MB
max_connections
Per datawarehouse scegliere un valore tra 10 e 40
shared_buffers (integer)
Imposta l'ammontare di memoria che il server database usa per i buffer di memoria condivisa. Il valore predefinito è tipicamente 32 megabyte (32MB), ma potrebbe essere meno se le impostazioni del kernel non lo supportano (come determinato durante l'initdb). Questa impostazione deve essere almeno 128 kilobytes. (Valori non predefiniti di BLCKSZ cambiano il minimo). Comunque, impostazioni significativamente maggiori rispetto al minimo sono di solito necessarie per buone prestazioni. Questo parametro può essere impostato solo all'avvio del server.
Se si ha un server database dedicato con 1GB o più di RAM, un valore di partenza ragionevole per shared_buffers è il 25% della memoria del sistema. Ci sono molti carichi di lavoro anche dove sono in vigore grandi valori per shared_buffers, ma dato chePostgreSQL fa affidamento anche sulla cache del sistema operativo, è improbabile che un'allocazione di più del 40% della RAM per shared_buffers funzionerà meglio rispetto a un quantitativo minore. Impostazioni più grandi per shared_buffers di solito richiedono un incremento corrispondente in checkpoint_segments, per diffondere il processo di scrittura di grandi quantità di dati nuovi o cambiati in un periodo di tempo più lungo.
Su sistemi con meno di 1GB di RAM, una percentuale di RAM più piccola è appropriata, quindi da lasciare spazio adeguato per il sistema operativo. Inoltre, su Windows, valori grandi per shared_buffers non sono così efficaci. Si potrebbero avere risultati migliori mantenendo il valore relativamente basso e usando maggiormente la cache del sistema operativo. L'intervallo utile pershared_buffers su sistemi Windows è generalmente da 64MB a 512MB.
Incrementare questo parametro potrebbe causare che PostgreSQL richieda più memoria System V condivisa rispetto a quello che permette il valore predefinito del sistema operativo. Si veda la sezione «Memoria condivisa e semafori» della guida per informazioni su come aggiustare questi parametri, se necessario.
¼ of RAM
work_mem
Specifica l'ammontare di memoria che deve essere usata da operazioni di ordinamento interne e dalle tabelle hash prima di scrivere in file disco temporanei. Il valore predefinito è un megabyte (1MB). Si noti che per una query complessa, diverse operazioni di ordinamento o hash potrebbero essere eseguite in parallelo; ogni operazione potrà usare tanta memoria quanto specificato da questo valore prima che cominci a scrivere dati in file temporanei. Inoltre, diverse sessioni in esecuzione potrebbero fare tali operazioni concorrentemente. Perciò, la memoria totale usata potrebbe essere molte volte più grande di work_mem; è necessario tenerlo a mente quando si sceglie il valore. Operazioni di ordinamento sono usate per ORDER BY, DISTINCT e join merge. Hash tables are used in hash joins, hash-based aggregation, and hash-based processing of IN subqueries.
128MB to 1GB
maintenance_work_mem (integer)
Specifica l'ammontare di mamoria massimo da usare per operazioni di manutenzione, tipo VACUUM, CREATE INDEX e ALTER TABLE ADD FOREIGN KEY. Il valore predefinito è 16 megabyte (16MB). Dato che solo una di queste operazioni può essere eseguita alla volta da una sessione di database, e normalmente un'installazione non ne ha molte in esecuzione consorrentememte, è sicuro impostare questo valore significativamente maggiore rispetto a work_mem. Valori maggiori potrebbero aumentare le prestazioni del vacuum e del ripristino dei dump del database.
Si noti che quando autovacuum è in esecuzione, questa memoria potrebbe essere allocata autovacuum_max_workers volte, quindi fare attenzione a non impostare un valore predefinito troppo alto.
512MB to 1GB
temp_buffers
Imposta il massimo numero di butter temporanei usati da ogni sessione di database. Questi sono buffer locali alla sessione usati solo per accedere a tabelle temporanee. Il valore predefinito è otto megabyte (8MB). L'impostazione può essere cambiata all'interno di sessioni individuali, ma solo prima del primo utilizzo di tabelle temporanee all'interno della sessione; tentativi successivi di cambiare il valore non avranno effetto su quella sessione.
Una sessione allocherà buffer temporanei come richiesto dal limite fornito da temp_buffers. Il costo di impostare un valore grande in sessioni che effettivamente non necessitano di molti buffer temporanei è solo quello di un destrittore di buffer, o circa 64 byte per incremento in temp_buffers. Comunque se un buffer è effettivamente usato, 8192 byte aggiuntivi saranno consumati (o in generale,BLCKSZ byte).
128MB to 1GB
effective_cache_size
¾ of RAM
wal_buffers
L'ammontare di memoria usata nella memoria condivisa per dati WAL. Il valore predefinito è 64 kilobyte (64kB). L'impostazione necessita solo di essere larga abbastanza per contenere l'ammontare di dati WAL generati da una transazione tipica, dato che i dati sono scritto fuori dal disco ad ogni commit di transazione. Questo parametro può essere impostato solo all'avvio del server.
Incrementare questo parametro potrebbe causare che PostgreSQL richieda più memoria condivisa System V rispetto a quello che permette la configurazione predefinita del sistema operativo.
16MB
venerdì 10 febbraio 2012
PostgreSql - Gestione utenti, esempi di grant
Creazione utente:
create user pippo with password 'pippo'Gestione grant:
- per poter usare lo schema:
GRANT USAGE ON SCHEMA dwh to sce
- per poter creare tabelle nello schema
GRANT CREATE ON SCHEMA dwh to sce
- possibilità di leggere tutte le tabelle dello schema
GRANT SELECT ON ALL TABLES IN SCHEMA dwh to sce
- possibilità di leggere la tabella specifica
GRANT SELECT ON dwh.fct_booking to sce
mercoledì 19 ottobre 2011
PostreSQL - Enabling Implicit Cast From Integer To Boolean
I’ve been using MySQL for a while with my pet projects, but recently I’ve been writing some more complicated queries, and I’m running into a few obnoxious limitations, mostly involving known view performance problems. I’ve decided to start testing the waters in PostgreSQL, so I tried importing my data into PG by running a MySQL-generated insert statement, only to run into a PostgreSQL newbie gotcha; “Column is of type boolean but expression is of type integer”.
By default, PG does not automatically interpret “1″ or “0″ as a boolean. The arguments in favor of this limitation are that it prevents “unintended” conversions. However, I’ve been developing in Python for years, which does do this automatic conversion, and its never bitten me.
The code to disable this feature is relatively simple, although I can’t find anyone who’s mentioned it, so I post it here:
UPDATE pg_cast SET castcontext = 'i' WHERE oid IN ( SELECT c.oid FROM pg_cast c inner join pg_type src ON src.oid = c.castsource inner join pg_type tgt ON tgt.oid = c.casttarget WHERE src.typname LIKE 'int%' AND tgt.typname LIKE 'bool%' )
This SQL updates PG’s int-to-bool cast path to “implicit” mode, meaning PG will now automatically cast an integer to boolean if the target type is a boolean. Otherwise, in the default “emplicit” mode, you’d have to use the CAST() syntax.
After the update, the insert statement runs perfectly.
giovedì 6 ottobre 2011
PostgreSQL - Comandi utili per amministrare il db
Verificare l'utilizzo degli indici
Verificare lo stato delle tabelle
Verificare le query in esecuzione
Verificare l'utilizzo dei checkpoint
select * from pg_stat_user_indexes
Verificare lo stato delle tabelle
select * from pg_stat_user_tables
Verificare le query in esecuzione
select * from pg_stat_activity
Verificare l'utilizzo dei checkpoint
select * from pg_stat_bgwriter
martedì 9 agosto 2011
mysqldump
The most simple way is to issue this command:
mysqldump -u [user] -p [database_name] > [backupfile].dump
This command is going to ask you for the [user] password and then will create a script which later can be used to retore the data.
Another way is to use the optimized way.
mysqldump --opt -u [user_name] -p [database_name] > [backup_file].dump
This command will use an optimized method, and will include in the script MySQL commands that will erase (drop) tables that already exists and create them again before populate the data inside.
Maybe the best way to run this command is to use the option of gzip the output file. (for obvious reasons)
Once you have your backup file, you may want to restore it someday, this is the way to do it. (remember tu unzip your file, if zipped, before)
mysql [database_name] < [backup_file].dump
Remeber that you can runman mysqldump
for more help. Backuping a single table from a database
mysqldump -u user_name -p database_name table_name > /var/www/backups/table_name.sqlRestoring the table into another database
mysql -u -p database_name < /var/www/backups/table_name.sqlvenerdì 29 luglio 2011
PostgreSQL - Funzione aggregazione concatenazione sulle stringhe
Tabella PROVA
A B
------
1 a
1 b
2 c
2 d
SELECT A,array_to_string( array_agg( B order by B ), ' - ' ) as CONCATENAZIONE
FROM PROVA
group by A
oppure
SELECT A, string_agg(distinct B,', ' order by B)
FROM PROVA
GROUP BY A
RISULTATO:
A CONCATENAZIONE
---------------------------
1 a - b
2 c - d
A B
------
1 a
1 b
2 c
2 d
SELECT A,array_to_string( array_agg( B order by B ), ' - ' ) as CONCATENAZIONE
FROM PROVA
group by A
oppure
SELECT A, string_agg(distinct B,', ' order by B)
FROM PROVA
GROUP BY A
RISULTATO:
A CONCATENAZIONE
---------------------------
1 a - b
2 c - d
mercoledì 20 luglio 2011
PostgreSQL - Lavorare con le date
Esempi di query con date
WHERE "BOOKING_DATE" >= '20040101'::date;
WHERE "BOOKING_DATE" >= '2004-01-01'::date;
WHERE "BOOKING_DATE" >= DATE '20040101';
WHERE "BOOKING_DATE" >= DATE '2004-01-01';
martedì 19 luglio 2011
SqlServer - Lavorare con le date
Convert (datatype, datetime string, date style)
- mon dd yyyy hh:miAM (or PM)
Select convert(varchar, getdate(), 100)
- mon dd yyyy hh:mi:ss:mmmAM (or PM)
Select convert(varchar, getdate(), 109)
- yyyymmdd
Select convert(varchar, getdate(), 112)
- dd mon yyyy hh:mm:ss:mmm(24h)
Select convert(varchar, getdate(), 113)
- hh:mm:ss:mmm(24h)
Select convert(varchar, getdate(), 114)
- yyyy-mm-dd hh:mi:ss(24h)
Select convert(varchar, getdate(), 120)
- yyyy-mm-dd hh:mi:ss.mmm(24h)
Select convert(varchar, getdate(), 121)
- yyyy-mm-dd Thh:mm:ss:mmm(no spaces)
Select convert(varchar, getdate(), 126)
No century (yy)Con century (yyyy)Formato-0 or 100mon dd yyyy hh:miAM (or PM)1101mm/dd/yyyy2102yy.mm.dd3103dd/mm/yyyy4104dd.mm.yy5105dd-mm-yy6106dd mon yy7107Mon dd, yy8108hh:mi:ss-9 or 109mon dd yyyy hh:mi:ss:mmmAM (or PM)10110mm-dd-yy11111yy/mm/dd12112yymmdd yyyymmdd-13 or 113dd mon yyyy hh:mi:ss:mmm(24h)14114hh:mi:ss:mmm(24h)-20 or 120yyyy-mm-dd hh:mi:ss(24h)-21 or 121yyyy-mm-dd hh:mi:ss.mmm(24h)-126yyyy-mm-ddThh:mi:ss.mmm (no spaces)-127yyyy-mm-ddThh:mi:ss.mmmZ (no spaces)-130dd mon yyyy hh:mi:ss:mmmAM-131dd/mm/yy hh:mi:ss:mmmAM
sabato 16 luglio 2011
Elenco delle query in esecuzione (PostgreSQL e MySql)
Ecco come vedere l'elenco delle query in esecuzione:
PostgreSQL
Cancellare una query in esecuzione:
PostgreSQL
PostgreSQL
select * from pg_stat_activityMySql
show full processlist
Cancellare una query in esecuzione:
PostgreSQL
select pg_cancel_backend(8560)
Iscriviti a:
Post (Atom)