Maybaygiare.org

Blog Network

Cos’è la cardinalità in un database?

I database hanno un sacco di gergo, e la cardinalità è una di quelle parole che le persone esperte tendono a dimenticare che non sapevano una volta. Ma se non lo sai—e ci vuole un po ‘ per sentirsi davvero a proprio agio con la cardinalità—è super confuso quando il DBA lo lascia cadere nel mezzo di una frase senza rallentare! Non temere: ti ho preso, come si suol dire.Cardinalità significa due cose nei database. Per i nostri scopi, uno conta molto più dell’altro. Facciamo prima quello semplice e poi scaviamo in quello che conta per le prestazioni della query.La definizione di cardinalità che conta molto per le prestazioni delle query è la cardinalità dei dati. Questo è tutto su quanti valori distinti sono in una colonna.Il primo significato di cardinalità è quando si sta progettando il database-quello che viene chiamato modellazione dei dati. In questo senso, cardinalità significa se una relazione è uno-a-uno, molti-a-uno, o molti-a-molti. Quindi stai davvero parlando della cardinalità del rapporto.La definizione ufficiale del dizionario Cardinality, non di database, è matematica: il numero di valori in un set. Quando applicato ai database, il significato è un po ‘ diverso: è il numero di valori distinti in una colonna della tabella, rispetto al numero di righe nella tabella. I valori ripetuti nella colonna non contano.Di solito non parliamo di cardinalità come un numero, però. È più comune parlare semplicemente di cardinalità” alta “e” bassa”. Un sacco di valori distinti è alta cardinalità; un sacco di valori ripetuti è bassa cardinalità.Immagine di una tabella di descrizione del prodotto in un database di e-commerce:La colonnaProductID sarà di alta cardinalità perché probabilmente è la chiave primaria di quella tabella, quindi è totalmente unica. Se ci sono mille righe nella tabella, ci saranno mille diversi valoriProductID. La colonnaCategory avrà molte ripetizioni e sarà una cardinalità bassa o media: forse 50 o 100 diversiCategory valori. Name è probabilmente alta cardinalità, a meno che non ci sia più in questa tabella di quanto non sembri (ad esempio più righe per diversi colori del prodotto e altre varianti).La cardinalità influisce molto sulle prestazioni, perché influenza il piano di esecuzione della query. Il pianificatore esaminerà le statistiche delle colonne e le userà per capire quanti valori è probabile che una query corrisponda, tra le altre cose. A seconda di ciò che trova, potrebbe utilizzare diversi piani di esecuzione delle query per cercare di ottenere le migliori prestazioni. Ma questo è un argomento per un post sul blog diverso, perché ci vuole un po ‘di lavoro per explain.So ora, la prossima volta che qualcuno lascia cadere” alta cardinalità “in una frase senza fermarsi, sai che significano davvero” un sacco di valori diversi.”E il gioco è fatto!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.