Quella che segue è solo folle ranting e delirio ...
Se si lasciano tutti i dati in una tabella (senza partizionamento), si avranno i tempi di ricerca O (log n) usando una chiave. Prendiamo l'indice peggiore del mondo, l'albero binario. Ogni nodo dell'albero ha esattamente una chiave. Un albero binario perfettamente bilanciato con 268.435.455 (2 ^ 28 - 1) nodi d'altezza sarebbe un'altezza di 28. Se dividi questo albero binario in 16 alberi separati, otterrai 16 alberi binari ciascuno con 16.777.215 (2 ^ 24 - 1) nodi dell'albero per un'altezza di 24. Il percorso di ricerca è ridotto di 4 nodi, con una riduzione dell'altezza del 14,2857%. Se il tempo di ricerca è in microsecondi, una riduzione del 14,2857% nei tempi di ricerca è nulla da trascurare.
Ora nel mondo reale, un indice BTREE avrebbe treenodi con più chiavi. Ogni ricerca BTREE eseguirà la ricerca binaria all'interno della pagina con un possibile decente in un'altra pagina. Ad esempio, se ogni pagina BTREE conteneva 1024 chiavi, un'altezza dell'albero di 3 o 4 sarebbe la norma, una breve altezza dell'albero.
Si noti che la partecipazione di una tabella non riduce l'altezza del BTREE che è già piccolo. Dato un partizionamento di 260 milioni di file, c'è anche la forte probabilità di avere più BTREE con la stessa altezza. La ricerca di una chiave può passare tutte le pagine principali di BTREE ogni volta. Solo uno soddisferà il percorso dell'intervallo di ricerca necessario.
Ora espandi su questo. Tutte le partizioni esistono sulla stessa macchina. Se non si dispone di dischi separati per ciascuna partizione, si avranno rotazioni I / O del disco e mandrino come un collo di bottiglia automatico al di fuori delle prestazioni di ricerca della partizione.
In questo caso, il partizionamento per database non ti compra nulla se id è l'unica chiave di ricerca che viene utilizzata.
Il partizionamento dei dati dovrebbe servire a raggruppare i dati che sono logicamente e coerentemente nella stessa classe. Le prestazioni di ricerca in ogni partizione non devono essere la considerazione principale finché i dati sono raggruppati correttamente. Una volta ottenuto il partizionamento logico, concentrati sul tempo di ricerca. Se si stanno solo separando i dati solo per ID, è possibile che non sia mai possibile accedere a molte righe di dati per letture o scritture. Ora, questa dovrebbe essere una considerazione importante: individuare tutti gli ID a cui si accede più frequentemente e partizionarli . Tutti gli ID con accesso meno frequente dovrebbero risiedere in una grande tabella di archivio che è ancora accessibile dalla ricerca dell'indice per quella query "una volta in una luna blu".
L'impatto globale dovrebbe essere quello di avere almeno due partizioni: una per ID con accesso frequente e l'altra per il resto degli ID. Se gli ID a cui si accede di frequente è abbastanza grande, è possibile partizionarlo facoltativamente.