Qual è il limite superiore dei record per la tabella del database MySQL. Mi chiedo quale sia il campo dell'autoincremento. Cosa succederebbe se aggiungessi milioni di record? Come gestire questo tipo di situazioni? Grazie!
Qual è il limite superiore dei record per la tabella del database MySQL. Mi chiedo quale sia il campo dell'autoincremento. Cosa succederebbe se aggiungessi milioni di record? Come gestire questo tipo di situazioni? Grazie!
Risposte:
I tipi di mysql int possono fare alcune righe: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
il int
valore più grande senza 4,294,967,295
segno bigint
è il valore più grande senza segno è18,446,744,073,709,551,615
Il valore più grande di un numero intero ha poco a che fare con il numero massimo di righe che è possibile memorizzare in una tabella.
È vero che se usi int o bigint come chiave primaria, puoi avere solo tante righe quanti sono i valori univoci nel tipo di dati della chiave primaria, ma non devi rendere la chiave primaria un numero intero , potresti renderlo un CHAR (100). È inoltre possibile dichiarare la chiave primaria su più di una colonna.
Esistono altri vincoli sulla dimensione della tabella oltre al numero di righe. Ad esempio, è possibile utilizzare un sistema operativo con una limitazione della dimensione del file. Oppure potresti avere un disco rigido da 300 GB in grado di memorizzare solo 300 milioni di righe se ogni riga ha una dimensione di 1 KB.
I limiti delle dimensioni del database sono davvero elevati:
http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html
Il motore di archiviazione MyISAM supporta 2 32 righe per tabella, ma è possibile creare MySQL con l' --with-big-tables
opzione per far sì che supporti fino a 2 64 righe per tabella.
http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html
Il motore di archiviazione InnoDB non sembra avere un limite al numero di righe, ma ha un limite sulla dimensione della tabella di 64 terabyte. Quante righe si inseriscono in questo dipende dalla dimensione di ogni riga.
Suggerisco di non cancellare mai i dati. Non dire se le tabelle sono più lunghe di 1000 troncare la fine della tabella. È necessario che nel piano sia presente una logica di business reale, ad esempio da quanto tempo questo utente è inattivo. Ad esempio, se è più lungo di 1 anno, inseriscili in una tabella diversa. Ciò avverrebbe settimanalmente o mensilmente in uno script di manutenzione nel bel mezzo di un tempo lento.
Quando ti imbatti in molte righe nella tua tabella, dovresti iniziare a condividere le tabelle o il partizionamento e inserire i vecchi dati nelle vecchie tabelle per anno come users_2011_jan, users_2011_feb o utilizzare i numeri per il mese. Quindi cambia la tua programmazione per lavorare con questo modello. Forse creare una nuova tabella con meno informazioni per riepilogare i dati in meno colonne e quindi fare riferimento alle tabelle partizionate più grandi quando sono necessarie più informazioni, ad esempio quando l'utente sta visualizzando il proprio profilo. Tutto questo dovrebbe essere considerato con molta attenzione, quindi in futuro non è troppo costoso ripensare. Puoi anche mettere solo gli utenti che arrivano al tuo sito per tutto il tempo in una tabella e gli utenti che non arrivano mai in una serie di tabelle archiviate.
In InnoDB, con un limite sulla dimensione della tabella di 64 terabyte e un limite della dimensione della riga MySQL di 65.535, possono esserci 1.073.741.824 righe. Sarebbe il numero minimo di record che utilizzano il limite massimo di dimensione della riga. Tuttavia, è possibile aggiungere più record se la dimensione della riga è inferiore.
Secondo la sezione Scalabilità e limiti in http://dev.mysql.com/doc/refman/5.6/en/features.html , supporto MySQL per database di grandi dimensioni. Usano MySQL Server con database che contengono 50 milioni di record. Alcuni utenti utilizzano MySQL Server con 200.000 tabelle e circa 5.000.000.000 di righe.
The maximum row size for a given table is determined by several factors:
La rappresentazione interna di una tabella MySQL ha un limite di dimensione massima delle righe di 65.535 byte, anche se il motore di archiviazione è in grado di supportare righe più grandi. Le colonne BLOB e TEXT contribuiscono solo da 9 a 12 byte rispetto al limite della dimensione della riga poiché il loro contenuto viene archiviato separatamente dal resto della riga.
La dimensione massima della riga per una tabella InnoDB, che si applica ai dati memorizzati localmente all'interno di una pagina del database, è leggermente inferiore a mezza pagina. Ad esempio, la dimensione massima della riga è leggermente inferiore a 8 KB per la dimensione della pagina InnoDB di 16 KB predefinita, definita dall'opzione di configurazione innodb_page_size. " Limiti su tabelle InnoDB ".
Link http://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html
Limiti dimensioni riga
La dimensione massima della riga per una determinata tabella è determinata da diversi fattori:
La rappresentazione interna di una tabella MySQL ha un limite di dimensione massima delle righe di 65.535 byte, anche se il motore di archiviazione è in grado di supportare righe più grandi. Le colonne BLOB e TEXT contribuiscono solo da 9 a 12 byte rispetto al limite della dimensione della riga poiché il loro contenuto viene archiviato separatamente dal resto della riga.
La dimensione massima della riga per una tabella InnoDB, che si applica ai dati memorizzati localmente all'interno di una pagina del database, è leggermente inferiore a mezza pagina per le impostazioni innodb_page_size 4KB, 8KB, 16KB e 32KB. Ad esempio, la dimensione massima della riga è leggermente inferiore a 8 KB per la dimensione predefinita della pagina InnoDB da 16 KB. Per le pagine da 64 KB, la dimensione massima della riga è leggermente inferiore a 16 KB. Vedere la Sezione 15.8.8, "Limiti delle tabelle InnoDB".
Se una riga contenente colonne a lunghezza variabile supera la dimensione massima della riga InnoDB, InnoDB seleziona le colonne a lunghezza variabile per l'archiviazione fuori pagina esterna fino a quando la riga non rientra nel limite della dimensione della riga InnoDB. La quantità di dati archiviati localmente per colonne di lunghezza variabile archiviate fuori pagina varia in base al formato della riga. Per ulteriori informazioni, consultare la Sezione 15.11, "Archiviazione di righe InnoDB e formati di riga".
Diversi formati di archiviazione utilizzano quantità diverse di intestazione di pagina e dati del trailer, il che influisce sulla quantità di spazio di archiviazione disponibile per le righe.
Per informazioni sui formati di riga InnoDB, vedere la Sezione 15.11, "Memoria delle righe e formati di riga InnoDB" e la Sezione 15.8.3, "Struttura delle righe fisiche delle tabelle InnoDB".
Per informazioni sui formati di archiviazione MyISAM, consultare la Sezione 16.2.3, "Formati di archiviazione delle tabelle MyISAM".
http://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html
Non c'è limite. Dipende solo dalla memoria libera e dalle dimensioni massime del file di sistema. Ma ciò non significa che non dovresti prendere misure precauzionali per affrontare l'utilizzo della memoria nel tuo database. Crea sempre uno script in grado di eliminare le righe inutili o che manterranno il numero totale di righe all'interno di una determinata figura, diciamo mille.