Hver er munurinn á frumvísitölu og aukavísitölu? Og hver er kosturinn við annan en hinn?


svara 1:

Leyfðu mér að útskýra fyrst líkt:

Líkt

  • Báðar vísitöluuppbyggingarnar eru útfærðar sem aðskildir fyrsta flokks hlutir í gagnagrunninum. Þetta felur í sér að taflan og samsvarandi vísitala þess (aðal eða framhaldsskóli) eru til sem tvö aðskild mannvirki. Báðir útfæra óbeint stig, þar sem fyrirspurnir leita fyrst í vísitölunni og nota afrakstur þeirrar leitar til að ná beint í skrána sem þeir benda á. Vísitölublokkir í báðum vísitölugerðum halda færslunum raðað. þ.e hvað sem raunveruleg vísitölufærsla er → oftast eru færslurnar í vísitölublokkinni alltaf flokkaðar eftir vísitölu / leitarlykli.

Mismunur

Aðalvísitala

  • Aðalvísitala hefur áhrif á geymslu og skipulag lína í gagnablokkum. Gagnablokkir eru platablokkir þar sem raunveruleg röð raða (mörg dálkar) eru geymd. Fyrir aðalvísitölu verður að raða röðunum í gagnablokkir á vísitakkanum. Til viðbótar við þá staðreynd að vísitölufærslurnar sjálfar eru flokkaðar í vísitölublokkinn er aðal vísitalan einnig þvinguð. Röð röð í gagnablokkunum. Eftirfarandi skýringarmynd, fengin að láni frá „Innleiðing Garcia Molina o.fl. gagnagrunnskerfi,“ sýnir hvernig vísitölufærslurnar í vísitölublokkunum (vinstra megin) innihalda ábendingar (þetta eru línuleitendur í hugtakagagnagrunni) línur í gagnablokkum (hægri hlið). Hver gagnablokk inniheldur línur í röð eftir vísitölulykli.
  • Hægt er að búa til aðalvísitöluna fyrir bæði takka og ekki lykil dálka. Það er engin aðalvísitala sem er aðeins fyrir aðallykilinn. Já, það er venjulega búið til á aðallykli töflunnar. Vegna þess að aðalvísitalan breytir leiðinni (línurnar verða að vera flokkaðar) að gögnin eru skipulögð í töflu, getur gefin tafla innihaldið að hámarki 1 aðalvísitölu.

Secondary index

  • Aukavísitalan hefur engin áhrif á hvernig línurnar eru í raun skipulagðar í gagnablokkum. Þeir geta verið í hvaða röð sem er. Eina röðin er vísitölulykillinn í vísitölublokkum. Eftirfarandi skýringarmynd frá „Innleiðing Garcia Molina o.fl. gagnagrunnskerfi“ sýnir hvernig vísitölufærslurnar í vísitölublokkunum (vinstra megin) innihalda ábendingar (þetta eru línuleitendur í hugtakanotkun gagnagrunnsins)) að samsvarandi línum í gagnablokkum (hægri hlið). Engum línum er raðað í gagnablokkina samkvæmt vísitölulyklinum

Samanburður

  • Í fyrsta lagi getur notandinn skilgreint margar aukavísitölur vegna þess að þær hafa engin áhrif á skipulag línanna í töflunni. Það getur þó aðeins verið ein aðalvísitala. Þar sem aðalvísitalan þarf ekki endilega að vera á aðallyklinum, þá getur aðalvísitalan einnig innihaldið afritunarlykla. Reyndar er dæmið hér að ofan fyrir aukavísitöluna fyrir afritaða lykla. Þetta er sameiginlegt hjá báðum. Auðvitað, þegar aðalvísitalan er búin til á aðallyklinum, geta það auðvitað ekki verið afritarvísitakkar vegna þess að aðallykillinn framfylgir EINNIG TAKMARKANIR. Hægt er að nota bæði aðal- og aukavísitölur fyrir punktaleit og sviðsspurningar. Hins vegar er reiknað með að fyrirspurnir um aðalvísitöluna verði hraðari í báðum tilvikum - sérstakur vísitölulykill og tvítekinn vísitakki. Gert er ráð fyrir að stigaleitin þegar um er að ræða NON UNIQUE vísitölu verði hraðari með aðalvísitölu. Hins vegar, ef vísitalan er EINNIG, helst ætti leitin með aðal- og aukavísitöluna að taka sama tíma - að minnsta kosti sama magn af I / O. Þetta er vegna þess að aðalvísitalan neyðir röð línanna í gagnablokkum. Þannig að ef notandinn hefur áhuga á að finna línur fyrir HVAR KEY> = 20 OG KEY <= 40, þá eru miklar líkur á því að færri diskablokkir og því minna I / O verði lesnir. Hugsanlegt er að línur sem samsvara þessum takka séu í sama gagnablokk (jafnvel þó að vísitalan sé ekki einsdæmi). Aftur á móti hefur aukavísitalan enga stjórn á skipulagi lína. Fyrir sama dæmi um að finna allar gagnaskrár milli 20 og 40 er því mögulegt að gagnaskrárnar sem samsvara hverjum takka séu í sérstakri gagnablokk. Augljóslega felur þetta í sér að það verða fleiri I / Ó og því geta fyrirspurnir með efri vísitölunni verið minni skilvirkni. Fyrir punktaleit með einstökum vísitölutökkum skiptir ekki máli hvort vísitalan er aðal eða efri. Niðurstaðan af leitinni er röðaraleitari og gagnagrunnurinn verður samt að fylgja henni til að ná raunverulegu skránni. Svo er það einn I / O. Vegna þess að aðalvísitalan neyðir röð línanna í gagnablokkum eru DML-skjöl minna skilvirk. Þar sem DML verður að hafa línurnar í raða röð innan gagnablokkar, INSERT / UPDATE leiðir til tíðar röðaskipta nema notandinn sjái til þess að innskotin séu gerð í röð. Hver DML leiðir til röðaskipta í röð innan gagna. Kubbinn krefst einnig uppfærslu á samsvarandi aðalvísitöluuppbyggingu síðan vísitöluinnfærslan. Nú verður að uppfæra nýja línustaðinn (þar sem röðinni hefur verið færst). Röð hreyfingin krefst einnig uppfærslu á efri vísitölu uppbyggingu, en líkurnar á því að INSERT valdi röð hreyfingar eru tiltölulega litlar fyrir efri vísitöluna, vegna þess að INSERT gerir það. Það er ekki nauðsynlegt að halda línunum í raða röð innan gagnablokkar. Mál eins og vaxandi línur sem þarf að færa saman í annan reit eru eitt fárra tilvika röð hreyfinga í efri vísitölunni.

svara 2:

Aðalvísitala er geymslubygging sem inniheldur raunverulegar grunnraðir töflunnar í B-tré byggingargeymslu. Að jafnaði er vísitalan skipulögð í kringum PRIMARY KEY, ef tilgreind er.

Aðalvísitölur eru stundum kallaðar „þyrpdar vísitölur“, þó að ekki allir hlutir sem kallaðir eru þyrpingar í vísitölum séu „raunveruleg“ útfærsla frumvísitölu (þ.e. ekki þau í PostgreSQL).

Mikill meirihluti geymsluvéla geymir grunnborðslínur án sérstakrar pöntunar fengnar úr dálkagögnum og innleiða ekki „raunverulegar“ aðalvísitölur.

Fáar DB geymsluvélar innleiða í raun frumvísitölur. Oracle „Index Organised Tables“ og MySQL InnoDB eru algengustu geymsluvélarnar sem nota frumvísitölur.

Stærsti kosturinn við geymslu skipulagðs geymslu er að leitir á PRIMARY KEY krefjast stakrar „göngu“ grunn B trésins. Í flestum öðrum minni fylkingum þarf PRIMARY KEY search leit að tveimur skrefum: Eitt til að fletta upp grunntöflu röðarans í annarri vísitöluuppbyggingu sem er byggð umhverfis PK og röðin sækir sig.

Í þessu fyrirkomulagi er leit að PK ekki ódýrari en leit með aðra vísitölu.

Þar sem aðalvísitala er notuð til að skipuleggja grunntöfluna færðu aðeins eina í hverri töflu.

Helsti gallinn við aðalvísitölu minni samanborið við aðrar tegundir minni er að hleðsla getur verið hægari þar sem hvert INSERT í grunnborðinu þarf að fara í gegnum B-tré til að komast að því hvar línan á að geyma. Þar sem flestar geymsluvélar sem styðja frumvísitölur nota aðal vísitölulykilinn sem leitargrein fyrir aukavísitölur, getur þú notað aukavísitölur sem taka mikið pláss ef þú ert með langan aðallykil (það er að segja ef þú notar eitthvað eins og alheims einstakt auðkenni sem PK og með aðrar vísitölur).


svara 3:

Aðalvísitala er geymslubygging sem inniheldur raunverulegar grunnraðir töflunnar í B-tré byggingargeymslu. Að jafnaði er vísitalan skipulögð í kringum PRIMARY KEY, ef tilgreind er.

Aðalvísitölur eru stundum kallaðar „þyrpdar vísitölur“, þó að ekki allir hlutir sem kallaðir eru þyrpingar í vísitölum séu „raunveruleg“ útfærsla frumvísitölu (þ.e. ekki þau í PostgreSQL).

Mikill meirihluti geymsluvéla geymir grunnborðslínur án sérstakrar pöntunar fengnar úr dálkagögnum og innleiða ekki „raunverulegar“ aðalvísitölur.

Fáar DB geymsluvélar innleiða í raun frumvísitölur. Oracle „Index Organised Tables“ og MySQL InnoDB eru algengustu geymsluvélarnar sem nota frumvísitölur.

Stærsti kosturinn við geymslu skipulagðs geymslu er að leitir á PRIMARY KEY krefjast stakrar „göngu“ grunn B trésins. Í flestum öðrum minni fylkingum þarf PRIMARY KEY search leit að tveimur skrefum: Eitt til að fletta upp grunntöflu röðarans í annarri vísitöluuppbyggingu sem er byggð umhverfis PK og röðin sækir sig.

Í þessu fyrirkomulagi er leit að PK ekki ódýrari en leit með aðra vísitölu.

Þar sem aðalvísitala er notuð til að skipuleggja grunntöfluna færðu aðeins eina í hverri töflu.

Helsti gallinn við aðalvísitölu minni samanborið við aðrar tegundir minni er að hleðsla getur verið hægari þar sem hvert INSERT í grunnborðinu þarf að fara í gegnum B-tré til að komast að því hvar línan á að geyma. Þar sem flestar geymsluvélar sem styðja frumvísitölur nota aðal vísitölulykilinn sem leitargrein fyrir aukavísitölur, getur þú notað aukavísitölur sem taka mikið pláss ef þú ert með langan aðallykil (það er að segja ef þú notar eitthvað eins og alheims einstakt auðkenni sem PK og með aðrar vísitölur).


svara 4:

Aðalvísitala er geymslubygging sem inniheldur raunverulegar grunnraðir töflunnar í B-tré byggingargeymslu. Að jafnaði er vísitalan skipulögð í kringum PRIMARY KEY, ef tilgreind er.

Aðalvísitölur eru stundum kallaðar „þyrpdar vísitölur“, þó að ekki allir hlutir sem kallaðir eru þyrpingar í vísitölum séu „raunveruleg“ útfærsla frumvísitölu (þ.e. ekki þau í PostgreSQL).

Mikill meirihluti geymsluvéla geymir grunnborðslínur án sérstakrar pöntunar fengnar úr dálkagögnum og innleiða ekki „raunverulegar“ aðalvísitölur.

Fáar DB geymsluvélar innleiða í raun frumvísitölur. Oracle „Index Organised Tables“ og MySQL InnoDB eru algengustu geymsluvélarnar sem nota frumvísitölur.

Stærsti kosturinn við geymslu skipulagðs geymslu er að leitir á PRIMARY KEY krefjast stakrar „göngu“ grunn B trésins. Í flestum öðrum minni fylkingum þarf PRIMARY KEY search leit að tveimur skrefum: Eitt til að fletta upp grunntöflu röðarans í annarri vísitöluuppbyggingu sem er byggð umhverfis PK og röðin sækir sig.

Í þessu fyrirkomulagi er leit að PK ekki ódýrari en leit með aðra vísitölu.

Þar sem aðalvísitala er notuð til að skipuleggja grunntöfluna færðu aðeins eina í hverri töflu.

Helsti gallinn við aðalvísitölu minni samanborið við aðrar tegundir minni er að hleðsla getur verið hægari þar sem hvert INSERT í grunnborðinu þarf að fara í gegnum B-tré til að komast að því hvar línan á að geyma. Þar sem flestar geymsluvélar sem styðja frumvísitölur nota aðal vísitölulykilinn sem leitargrein fyrir aukavísitölur, getur þú notað aukavísitölur sem taka mikið pláss ef þú ert með langan aðallykil (það er að segja ef þú notar eitthvað eins og alheims einstakt auðkenni sem PK og með aðrar vísitölur).