peso di un dato db mysql

salve

solitamente, prima di far partire un'applicazione che gestisca uno o più dati db, controllo se questi abbiano il numero esatto di tabelle previste.

ma quando oltre al numero di tabelle, devo controllare che alcune di esse siano popolate da dati di base (senza i quali la mia applicazione non potrebbe continuare), mi son trovato un po' spiazzato!

controllare se le tabelle in questione una dopo l'altra son popolate o no, mi è sembrato un po' troppo dispendioso anche per le risorse stesse del server. se per esempio questo assetto delle tabelle dovesse variare? dovrei metter mano al codice per istruire il programma del nuovo controllo!

visto e considerato che quei dati son di base sempre uguali (e che il db potrà avere + dati, ma mai meno di quelli di base), ho pensato che, se controllo il peso del db nel momento in cui l'applicazione parte, potrei aver risolto il mio problema.

all'avvio, l'applicazione controllerebbe che il peso_base sia <= del peso_attuale per continuare, altrimenti si fermerebbe.

resta inteso che, in caso di modifiche ai dati o alla struttura del db, mi resterebbe solamente da modificare il valore di controllo della mia applicazione.

detto ciò, vorrei sapere come trovo queste informazioni oppure se avete idee migliori... utilizzerei mysql e l'applicazione sarà sviluppata in php (dopo anche in java).

se c'è qualcosa che non capite, scrivetelo.

grazie

inviato 8 anni fa
larchitetto
X 0 X

Quando deve essere eseguito questo controllo? Ad ogni pagina PHP richiesta dall'utente?

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

ad ogni index... si tratta di una serie di programmi che fanno cose diverse inserite ognuno nella propria cartella. ogni applicazione fa capo alla sua index, indi il controllo lo faccio in quel punto esatto...

mi servirebbe sapere se questo controllo (del peso soprattutto) è fatto dal php o da sql... perchè dovrei fare una versione dello stesso programma in java (è un bel lavoro).

infine: la mia idea è valida?

risposto 8 anni fa
larchitetto
modificato 8 anni fa
X 0 X

ad ogni index... si tratta di una serie di programmi che fanno cose diverse inserite ognuno nella propria cartella. ogni applicazione fa capo alla sua index, indi il controllo lo faccio in quel punto esatto...

mi servirebbe sapere se questo controllo (del peso soprattutto) è fatto dal php o da qualche istruzione sql o dal mysql... perchè dovrei fare una versione dello stesso programma in java (è un bel lavoro).

infine: la mia idea è valida?

Quindi è una una web application modulare, quello che non mi è chiaro è al parola peso, cosa intendi che se queste tabelle sono vuote l'applicazione non parte, ma sono delle tabelle di configurazione ?

risposto 8 anni fa
EKELON77
X 0 X

per peso intendo i megabyte che occupa complessivamente il database, dalla struttura dello stesso fino alle insert di base...

si, si tratta di tabelle di configurazione...

risposto 8 anni fa
larchitetto
X 0 X

 O0, ma ti conviene calcolare i mb ma poi a cosa ti serve; se sono tabelle di configurazione perchè non fai delle query per controllare i dati sono presenti oppure se esiste la tabella...!!! :bye:

risposto 8 anni fa
EKELON77
X 0 X

controllo il numero delle tabelle e volevo vedere anche il peso complessivo di tutto...

come detto qualche post fa, mi sembrava l'unica soluzione meno dispendiosa in termini di risorse e di implementazione... meno query di controllo fo, meglio è xD

che mi dite??

risposto 8 anni fa
larchitetto
X 0 X

Tutto questo discorso è a dir poco pazzesco  :crazy:

Supponiamo di trovare un meccanismo per verificare se il DB è integro (quello che hai proposto non ti da alcuna certezza a riguardo).

Se scopri che il DB ha qualche problema che fai? Puoi solo interrompere il servizio e mandare una segnalazione (email, sms) all'amministratore di sistema.

La stessa reazione potresti implementarla semplicemente catturando e gestendo in maniera centralizzata gli errori e le eccezioni sollevate dall'applicativo. In caso di errore dell'applicativo blocchi il sistema (ci sono diveri modi per farlo) e mandi una segnalazione, questa volta piuttosto dettagliata visto che hai a disposizione l'errore particolare che è avvenuto e quindi anche la causa scatenante.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

mysql_errno(), mysql_error() et similia, in sostanza?

se è così, ci avevo pensato...

però mi piacerebbe vedere che, prima l'utente metta mano sull'applicazione, essa si renda conto in che stato si trovi...

poi cmq, lasciando stare se il problema è risolvibile in altri modi o no, mi era sembrato un buon "rapporto" risorse & implementazione/qualità del controllo... <.< (ammesso e concesso che sia "facile" ricavarsi il peso del db)...

quest'idea qua m'è venuta proprio quando ci pensavo su e per sbaglio ho notato le statistiche di phpmyadmin sull'intero db... da là ho pensato a tutto ciò ed ero curioso di capire come ricavare questi dati (a prescindere dal fatto se li userò in questa applicazione o in altre o se non li userò mai) xD

infine, penso che controllare solamente il numero delle tabelle per modulo, non sia na cattiva idea.

poi, se l'utente dovesse incappare in una particolare tabella (che di default dovrebbe esser popolata e che invece non lo è per errore in quella sessione), non mi resta altro che segnalare il guasto in quel punto...

commenti e grazie per il ragionamento :P

PS: ma cosa c'è di pazzesco in tutto ciò?

risposto 8 anni fa
larchitetto
X 0 X

Il controllo che vuoi fare è assurdo per i seguenti motivi:

1) non garantisce la certezza che il sistema sia a posto

2) essendo una misura preventiva, va eseguito a priori e quindi con una frequenza elevata. Questo significa che il suo costo in termini computazionali andrà a ricadere sulle performance del sistema.

3) il controllo risulta meno efficace di un corretto sistema di gestione degli errori, che scatta solo in caso di necessità e quindi non impatta sulle prestazioni

4) una gestione centralizzata degli errori poi deve essere comunque fatta, perché il tuo controllo non ti esclude che l'utente possa incorrere in intoppi

Per gestione centralizzata degli errori e delle eccezioni non intendevo riferirmi solo alle funzioni mysql ma all'utilizzo di set_error_handler() e set_exception_handler():

http://it.php.net/set-error-handler

http://it.php.net/manual/en/function.set-exception-handler.php

Per ottenere le informazioni di riepilogo sulle tabelle di un database mysql:

show table status from `nome_database`

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
modificato 8 anni fa
X 0 X

-.-

Il controllo che vuoi fare è assurdo per i seguenti motivi:

a volte si potrebbe magari avere un'idea e ipotizzarla con altri... magari può esser una buona idea come no.

non oso immaginare che avrei trovato scritto se avessi postato il codice di tutto ciò -.-

poi cmq, durante il topic, e ragionando anche sulle risposte ottenute, ho realizzato un po' di cose, tant'è che scrissi:

poi cmq, lasciando stare se il problema è risolvibile in altri modi o no

[...]

ho pensato a tutto ciò ed ero curioso di capire come ricavare questi dati (a prescindere dal fatto se li userò in questa applicazione o in altre o se non li userò mai) xD

[...]

1) non garantisce la certezza che il sistema sia a posto

beh avevo previsto che tale controllo non fosse esatto al 100%...

2) essendo una misura preventiva, va eseguito a priori e quindi con una frequenza elevata. Questo significa che il suo costo in termini computazionali andrà a ricadere sulle performance del sistema.

sempre meglio di controllare tabella dopo tabella (suggerito da altri)...

3) il controllo risulta meno efficace di un corretto sistema di gestione degli errori, che scatta solo in caso di necessità e quindi non impatta sulle prestazioni

...avrei un pensiero: me lo tengo per me :P

4) una gestione centralizzata degli errori poi deve essere comunque fatta, perché il tuo controllo non ti esclude che l'utente possa incorrere in intoppi

non avevo escluso il controllo degli errori

Per gestione centralizzata degli errori e delle eccezioni non intendevo riferirmi solo alle funzioni mysql ma all'utilizzo di set_error_handler() e set_exception_handler():

http://it.php.net/set-error-handler

http://it.php.net/manual/en/function.set-exception-handler.php

Per ottenere le informazioni di riepilogo sulle tabelle di un database mysql:

show table status from `nome_database`

sai: ignoravo quest'istruzione... =O

:bye:

altro da aggiungere? -,-

risposto 8 anni fa
larchitetto
X 0 X

aggiungo che non lavoro per grandi aziende, non ho amici o conoscenti abili in questo campo, non ho quarant'anni d'esperienza nel campo... sono solo col mio pc, se escludo questo forum, e ho preferito postare chiedendo consiglio prima di metter mano effettivamente al progetto. non sapevo ricavare quelle informazioni e chiesi se era facile ricavarsele, se era na buona idea o no... non sono nato con la scienza infusa di php & mysql (tanto per intenderci)...

risposto 8 anni fa
larchitetto
X 0 X

Non era mia intenzione risultare scortese e ti chiedo scusa se le mie risposte ti hanno offeso in qualche modo.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

nono xD

no problem <.< scusami tu >.>

alla fine ho optato di sospendere momentaneamente questa parte di progetto dedicandomi ad altro, nel frattempo studierò i link postati...

giust'un appunto. cosa fanno quei parametri?

error_reporting (FATAL | ERROR | WARNING);

trovato nell'esempio del link http://it.php.net/set-error-handler!

grazie

risposto 8 anni fa
larchitetto
X 0 X

Servono a filtrare i messaggi di errore che PHP genera, in modo da decidere quali segnalazioni verranno visualizzate.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda