[MySQL] Tabella piena

  • Creatore Discussione Creatore Discussione Giulo77
  • Data di inizio Data di inizio

Giulo77

Utente Attivo
15 Mar 2018
30
0
6
47
Ciao a tutti,
utilizzo phpmyadmin devserver e nel mio database ho creato una tabella innoDB dove sono andato a caricare 2.900 documenti di vario tipo in binario. Erroneamente ho lanciato l'esecuzione due volte però ho scoperto questo problema che tra pochi anni di utilizzo mi si ripresenterà di sicuro.
L'esecuzione è terminata dandomi l'errore "full table". Effettivamente dovevo caricare 2,1GB e se vado a vedere nella directory del mio database il file documenti.ibd è di 4GB.
Entrare con PHPMyAdmin non se ne parlava perchè mi dava subito errore di connessione quindi manualmente ho cancellato la tabella ed alcuni file e mi ha permesso di rientrare rifacendo poi creazione tabella e import dati.

Premetto che non ho esperienza con mysql, ho sempre usato db2 o oracle a livello lavorativo e non sistemistico, però penso sia qualcosa relativo alle table space. Non ho però trovato nulla a livello di configurazione che mi dica se usa una table space unica e di quanto o se ne crea automaticamente una di default per ogni tabella creata.

Oltretutto se entro in phpmyadmin per interrogare il db ho sempre un messaggio di errore che mi dice che la configurazione dello storage non è completa. Dice anche di andare nella scheda 'operazioni' del db per configurarlo da li ma mi dice poi che è disabilitata ed il link 'scopri la ragione' mi rimanda ad un elenco di voci $cfg dove in quelle in rosso non compaiono voci relative allo storage ed in ogni caso non sono voci modificabili.

Qualche suggerimento?

A breve dovrei fare una migrazione di un db di 500GB la cui tabella documenti di sicuro peserà cirva 200GB, quindi infattibile con l'attuale configurazione!
 
Provo a farla più semplice...diciamo di accontentarmi di mysql a 32bit e che il limite della tablespace globale sia di 4GB mi chiedo:
come faccio a sapere come si chiama? lo chiedo perchè se non ho capito male devo fare un'ALTER per aggiungere tanti file quanto spazio ho bisogno.

P.S. Dopo aver creato una tabella esiste qualche comando per indirizzarla su una tablespace particolare? Oppure anche ricreandola come posso dirgli di usare una determinata tablespace con ad esempio 4 file diversi?
 
Il problema non è tanto il messaggio della configurazione non completa oppure di funzionalità sullo storage a cui non posso accedere (Comunque limitazione a livello grafico perchè da command line si può fare tutto comunque), ma il fatto che non posso andare oltre i 4 GB a livello di database.
Cioè è configurato per utilizzare una sola tablespace condivisa per tutti le tabelle. Posso comunque associarne una nuova alla mia tabella documenti ma come data file posso solo mettrne uno quindi sempre a 4BG rimango.

MyIsAm --> Non posso creare tablespace
InnoDB --> Creo tablespace e l'associo alla mia tabella ma non supporta ALTER TABLESPACE quindi non posso aggiongere altri DATAFILE

Mi chiedo ma quando esisteva solo la versione a 32bit mysql si poteva usare solo con dei database di piccole dimensioni?
Altra domanda che mi sorge spontanea: se esiste un comando per aggiungere datafile a un datatable qual è la situazione per cui è possibile farlo?
 
Mi sembra ci sia tutto nella documentazione mysql come https://dev.mysql.com/doc/refman/8.0/en/full-table.html
Il limite dei 4GB se non erro era solo per chi utilizza win 32-bit con fat32.
The size limit of individual files is determined by your operating system. You can set the file size to more than 4GB on operating systems that support large files
Con InnoDB la dimensione massima dipende dal InnoDB Page Size che con 4KB -> 16TB, 8KB -> 32TB, 16KB -> 64TB, 32KB-> 128TB e con 64KB -> 256TB

Mi sembra di aver letto sulla documentazione che c'era un default a 4GB ma adesso non ricordo, scusa.

non supporta ALTER TABLESPACE
da https://dev.mysql.com/doc/refman/8.0/en/alter-tablespace.html
ALTER TABLESPACE Syntax ha scritto:
This statement can be used with NDB and InnoDB tables. It can be used to add a new data file to, or to drop a data file from an NDB tablespace. It can also be used to rename an NDB Cluster Disk Data tablespace or an InnoDB general tablespace.
 
Sto utilizzando la versione 5.7 e se non ho capito male c'è proprio un bug che limita le tabelle 4GB e probabilmente deve avere qualche altro problema. Si vede che i pacchetti "gratuiti" di easyphp devserver non sono il massimo, acquisterò l'accesso completo per avere le ultime versioni.

Per ora ho risolto creando solo la tabella dei documenti con motore MyISAM.

Prossimamente metterò tutto a 64bit

Dalle mie reminiscenze di oracle volevo creare una tablespace dedicata e quando era InnoDB mi dice che il comando ALTER non è supportato (Penso sempre ad un altro limite di questa versione)
 
Si win ma è a 64bit, solo mysql è a 32bit...infatti, come dicevo, ho risolto mettendo da InnoDB a MyISAM. Anche questo evidenzia il fatto che è un probabile bug della mia versione di mysql
 
consentimi una riflessione,

é sicuro gestire database così estesi, pieni di "documenti" ?

di sicuro fare un backup di un db da 500 gb a me fa venire le convulsioni,
se dovessi pensare ad un ripristino, do le dimissioni e cambio mestiere

esiste il file system che é un ottimo db per i "documenti" mentre si potrebbero memorizzare nel vero db solo le referenze

esistono validi strumenti per il backup dei "documenti" memorizzati nel file system che cercano di evitare operazioni inutili riducendo tempi e dati trasferiti

ma non volevo disturbarti con i miei pensieri in libertà
 

Discussioni simili