pasūtīšana". Indeksēšanas opcijas "Indekss ar papildu

Šodien mēs runāsim par MS SQL DBVS indeksiem un to iekšējo struktūru. Mēģināšu runāt par indeksiem gan no DBVS, gan no 1C 8.3 viedokļa.

Indeksi ir saišu kopa, kas sakārtota pēc noteiktām kolonnām, kas izveidota, lai optimizētu MS SQL DBVS veiktspēju.

Netiešā indeksu izveide:

Platforma pati izveido indeksus, izmantojot katram metadatu objektam iepriekš zināmas datu atslēgas (saite, kods, nosaukums, mērījumi utt.)

Skaidra indeksu izveide iespējams trīs veidos:

  1. Karoga “Indekss” iestatīšana laukam (atribūtam/dimensijai). Opcija "Indekss ar papildu" pasūtīšana" indeksam pievieno lauku "Kods" vai "Nosaukums" (galvenokārt ).
  2. Lauka pievienošana " ".
  3. Indeksētā lauka norādīšana vaicājumā, izmantojot konstrukciju “ ”.

Saņemiet 267 video nodarbības 1C bez maksas:

Indeksi Microsoft SQL DBVS

Indeksi MS SQL DBVS ir lapas ar 8 KB datiem katrā. Neskatoties uz to, ka indeksi ir paredzēti, lai uzlabotu DBVS veiktspēju, tiem ir daži trūkumi - tie aizņem vietu diskā un palēnina DBVS darbu pie rindu rakstīšanas.

Indeksu veidi MS SQL DBVS:

  1. Negrupēti indeksi— šādi indeksi nepārbūvē tabulas, bet tikai organizē saites.
  2. Klasterizēti indeksi ir nepieciešami, lai izveidotu tabulu atbilstoši indeksam. Dati tiek sakārtoti, piemēram, alfabēta secībā. Nederīgs bieži mainīgām kolonnām, jo DBVS pastāvīgi fiziski atjauno tabulu, izmantojot šo indeksu.
  3. Unikāli indeksi- sava veida "virsstruktūra" klasterizētiem un negrupētiem indeksiem. Šāds indekss ir unikāls, pamatojoties uz galvenajiem laukiem.

Atslēgu veidi DBVS:

  • Primārā atslēga— kolonnu kopa, kas unikāli raksturo rindu.
  • Ārējā atslēga (sveša)— tabulas lauks, kurā tiek saglabāta primārās atslēgas vērtība, lai organizētu attiecības starp tabulām. 1C neizmanto šāda veida atslēgas.

Svarīgas indeksu lietošanas nianses

Pareiza indeksu izmantošana var paātrināt vaicājumu ne tikai vairākas reizes, bet simtiem, dažreiz pat tūkstošiem reižu.

Šāda veida paātrinājumu vienkārši nevar panākt ar aparatūru. Tāpēc šai tēmai ir jāpievērš liela uzmanība.

Bieži vien, lai paātrinātu vaicājumu, jums ir jāizveido savs rādītājs, un ir vairāki dažādi veidi, kā to izdarīt.

Video pamācībās apskatīsim vairākus indeksa izveides veidus. Apskatīsim arī situāciju, kad vajadzīgā sastāva indeksu nevar izveidot, izmantojot standarta platformas rīkus, un tas būs jāizveido DBVS.

Indeksu iestatīšana, izmantojot standarta platformas rīkus

Nodarbība parāda, kādi indeksi faktiski tiek izveidoti objektiem DBVS līmenī.
Ne viss šajā tēmā ir tik acīmredzams, kā varētu šķist no pirmā acu uzmetiena. Galu galā vairākiem objektiem ir indeksu izveides iespējas.
Mēs apskatīsim visu informāciju šajā videoklipā.

Indeksēšana ar papildu pasūtīšanu

Video redzama atšķirība starp indeksa veidošanas opciju Rādītājs no Indekss ar papildu pasūtīšana.
Piemērā parādīts, kāda veida indeksu platforma veidos, izmantojot papildu pasūtīšanu.

Reģistra izmēru indeksa izveide

Reģistru pirmās dimensijas indeksācijai ir vairākas nianses.
Video redzams, kādi indeksi tiek veidoti reģistra dimensijām. Tiek ņemta vērā arī pirmā reģistra dimensijas indeksēšanas situācija.

vai

Kāpēc 1C izstrādātājam ir jāreģistrē izmēri un informācija?

- Nu, jums ir lūgumi! - datubāze teica un karājās...

Īsā atbilde uz virsraksta jautājumu ir tāda, ka tas ļaus ātri izpildīt vaicājumus un samazināt bloķēšanas negatīvo ietekmi uz .

Kas ir indekss?

Indeksa izvietojuma optimizēšana

Ja tabulu apjoms neļauj tām “iekļauties” servera operatīvajā atmiņā, pirmajā vietā ir diska apakšsistēmas (I/O) ātrums. Un šeit jūs varat pievērst uzmanību iespējai ievietot indeksus atsevišķos failos, kas atrodas dažādos cietajos diskos.

Detalizēts darbību apraksts http://technet.microsoft.com/ru-ru/bibliotēka/jaunkundze175905.aspx
Izmantojot indeksu no citas failu grupas, tiek uzlabota nesagrupētu indeksu veiktspēja, pateicoties I/O procesu un paša indeksa darba vienlaicībai.
Iepriekš minēto apstrādi var izmantot, lai noteiktu izmērus.

Indeksu ietekme uz slēdzenēm

Vaicājumam nepieciešamā indeksa trūkums nozīmē visu tabulas ierakstu atkārtošanu, kas savukārt noved pie liekām bloķēšanām, t.i. nevajadzīgie ieraksti tiek bloķēti. Turklāt, jo ilgāks laiks nepieciešams vaicājuma pabeigšanai trūkstošo indeksu dēļ, jo ilgāks būs bloķēšanas aizturēšanas laiks.
Vēl viens bloķēšanas iemesls ir neliels ierakstu skaits tabulās. Šajā sakarā SQL Server, izvēloties vaicājuma izpildes plānu, neizmanto indeksus, bet pārmeklē visu tabulu (Table Scan), bloķējot visu tabulu. Lai izvairītos no šādas bloķēšanas, ir nepieciešams palielināt ierakstu skaitu tabulās līdz 1500-2000. Šajā gadījumā tabulu skenēšana kļūst dārgāka un SQL Server sāk izmantot indeksus. Protams, to ne vienmēr var izdarīt, izmantojot vairākus katalogus, piemēram, “Organizācijas”, “Noliktavas”, “Nodaļas” utt. parasti ir maz ierakstu. Šādos gadījumos indeksēšana neuzlabos veiktspēju.

Indeksa veiktspēja

Mēs jau raksta nosaukumā atzīmējām, ka mūs interesē indeksu ietekme uz vaicājuma veiktspēju. Tātad indeksi ir vispiemērotākie šāda veida uzdevumiem:

  • Vaicājumi, kas norāda “šaurus” meklēšanas kritērijus.Šādiem vaicājumiem ir jālasa tikai neliels skaits rindu, kas atbilst noteiktiem kritērijiem.
  • Vaicājumi, kas norāda vērtību diapazonu.Šiem vaicājumiem ir jālasa arī neliels skaits rindu.
  • Meklēšana, ko izmanto saistīšanas darbībās. Kolonnas, kuras bieži izmanto kā saistīšanas atslēgas, ir lieliski piemērotas indeksiem.
  • Meklēšana, kurā dati tiek nolasīti noteiktā secībā. Ja rezultātu kopa ir jākārto klasterizētā indeksa secībā, kārtošana nav nepieciešama, jo rezultātu kopa jau ir iepriekš sakārtota. Piemēram, ja tiek izveidots klasterizēts indekss kolonnās uzvārds, vārds un lietojumprogramma prasa kārtošanu pēc uzvārda un pēc tam pēc vārda, tad nav jāpievieno klauzula ORDER BY.

Tiesa, ar visu indeksu lietderību ir viens ļoti svarīgs BET - indeksam ir jābūt “efektīvi izmantotam” un jāļauj atrast datus, izmantojot mazāk I/O operāciju un sistēmas resursu apjomu. Un otrādi, neizmantotie (reti izmantotie) indeksi, visticamāk, pasliktinās datu rakstīšanas veiktspēju (jo katrai darbībai, kas maina datus, ir jāatjaunina arī rādītāja lapas) un tiek radīta liekā datubāzes vieta.

Pārklājums(konkrētajam pieprasījumam) tiek saukts par indeksu, kurā ir visi šim pieprasījumam nepieciešamie lauki. Piemēram, ja indekss ir izveidots kolonnās a, b un c, un priekšraksts SELECT vaicā datus tikai no šīm kolonnām, tad ir nepieciešama tikai piekļuve indeksam.

Lai noteiktu indeksa efektivitāti, mēs varam aptuveni novērtēt, izmantojot bezmaksas tiešsaistes pakalpojumu, kas parāda “vaicājuma izpildes plānu” un izmantotos indeksus.

Aprakstot dažādu objektu detaļas metadatos, ir iespējams iestatīt rekvizītu Index. Šis rekvizīts ļauj konfigurācijas izstrādātājam norādīt sistēmai, ka datu bāzē ir jāizveido atsevišķs indekss atbilstošajai informācijai.

Papildus šī īpašuma opcijai "Indekss" lielākajai daļai objektu varat iestatīt opciju "Indekss ar papildu pasūtīšanu". Šī opcija galvenokārt ir paredzēta izmantošanai dinamiskajos sarakstos.

Opcijā "Indekss" indekss tiek veidots tieši, pamatojoties uz detaļām. Indekss tiek papildināts arī ar saiti, lai nodrošinātu noteiktu ierakstu secību indeksā, kad atribūtu vērtības tiek atkārtotas.

Opcijā "Indekss ar papildu pasūtīšanu" indekss tiek veidots pēc atribūta, kā arī pēc kāda lauka, ko parasti izmanto šāda veida objektu pasūtīšanai. Direktorijai indekss atkarībā no galvenā attēlojuma tiek papildināts ar kodu vai nosaukumu. Un dokumentam indekss tiek papildināts ar datumu. Šis rādītājs ir papildināts arī ar saiti.

Opcijā "Indekss" dinamiskais saraksts var nodrošināt efektīvu liela apjoma informācijas apskati, kārtojot pēc šī atribūta, jo šim nolūkam tiks izmantots izveidotais indekss.

Opcija "Rādītājs ar papildu secību" dinamiskajā sarakstā var nodrošināt efektīvu liela informācijas apjoma skatīšanu, atlasot pēc noteiktā atribūta vērtības un secību, kas atbilst noteikta objekta galvenajai secībai. Šajā gadījumā indeksa klātbūtne, kas ietver atribūtu, pēc kura tiek veikta atlase, un galvenais pasūtīšanas lauks ļaus sistēmai izmantot indeksu, skatot sarakstu.

Protams, indeksi ietekmē arī citus informācijas izguves veidus (datu iegūšanu, izmantojot objektu pārvaldnieku vai vaicājumu metodes).

Tādējādi, nosakot rekvizīta Indekss opciju, ir jāvadās no tā, kuras informācijas izguves opcijas vispirms ir jāoptimizē. Piemēram, ja nepieciešams skatīt sarakstu ar atlasi pēc detaļām, tad ir lietderīgi izmantot opciju “Rādītājs ar papildu pasūtīšanu”. Un, ja indekss ir nepieciešams, piemēram, tikai meklēšanai, vaicājot objektus pēc norādītajām detaļām bez secības, tad labāk izmantot opciju “Indekss”, lai izveidotais indekss prasītu mazāk sistēmas resursu.

Sistēmas ģenerēto indeksu sastāvs dažādām metadatu rekvizītu kombinācijām ir detalizēti aprakstīts rakstā “Datu bāzes tabulu indeksi”.