Beperk de maximale grootte van geïndexeerde gegevens tot 1c. Bijzonderheden over het gebruik van de indexeringsoptie "Index met aanvullende bestelling". Indexeren met optionele bestelling

of

Waarom zou een 1C-ontwikkelaar metingen en details moeten "indexeren"?

- Nou, je hebt verzoeken! - zei de database en hing ...

Het korte antwoord op de kopvraag is dat hierdoor zoekopdrachten snel kunnen worden uitgevoerd en de negatieve impact van blokkering op wordt verminderd.

Wat is een index?

Indexplaatsing optimaliseren

Als het aantal tabellen niet toestaat dat ze in het RAM-geheugen van de server "passen", komt de snelheid van het schijfsubsysteem (I / O) op de eerste plaats. En hier kunt u letten op de mogelijkheid om indexen in afzonderlijke bestanden op verschillende harde schijven te plaatsen.

Gedetailleerde beschrijving van acties http: // technet.microsoft.com/ ru-ru/ bibliotheek/ Mevrouw175905.aspx
Het gebruik van een index uit een andere bestandsgroep verbetert de prestaties van niet-geclusterde indexen vanwege het parallellisme tussen I / O en de index zelf.
Voor de maatvoering kunt u bovenstaande bewerking gebruiken.

Impact van indexen op sloten

De afwezigheid van de vereiste index voor de query betekent dat alle records van de tabel moeten worden herhaald, wat op zijn beurt leidt tot buitensporige vergrendelingen, d.w.z. onnodige records worden geblokkeerd. Bovendien, hoe langer de query wordt uitgevoerd vanwege ontbrekende indexen, hoe langer de vergrendelingstijden.
Een andere reden voor vergrendelingen is het kleine aantal records in de tabellen. In dit opzicht gebruikt SQL Server bij het kiezen van een plan voor het uitvoeren van query's geen indexen, maar doorkruist het de hele tabel (Table Scan), waardoor het geheel wordt geblokkeerd. Om dergelijke vergrendelingen te voorkomen, is het noodzakelijk om het aantal records in tabellen te verhogen tot 1500-2000. In dit geval worden tabelscans duurder en begint SQL Server indexen te gebruiken. Dit kan natuurlijk niet altijd, een aantal mappen zoals "Organisaties", "Magazijnen", "Onderverdelingen", enz. hebben meestal weinig ingangen. In deze gevallen zal indexering de prestaties niet verbeteren.

Indexefficiëntie

We hebben in de titel van dit artikel al opgemerkt dat we geïnteresseerd zijn in het effect van indexen op de queryprestaties. Indexen zijn dus het meest geschikt voor de volgende soorten taken:

  • Zoekopdrachten die "smalle" zoekcriteria specificeren. Dergelijke zoekopdrachten zouden slechts een klein aantal rijen moeten lezen die aan bepaalde criteria voldoen.
  • Query's die een bereik van waarden specificeren. Deze query's moeten ook een klein aantal rijen lezen.
  • Een zoekopdracht die wordt gebruikt bij bindbewerkingen. Kolommen, die vaak worden gebruikt als bindsleutels, zijn geweldig voor indexen.
  • Een zoekopdracht die gegevens in een specifieke volgorde leest. Als de resultaatdataset moet worden gesorteerd in de volgorde van de geclusterde index, dan is sorteren niet nodig omdat de resultaatdataset al van tevoren is gesorteerd. Als er bijvoorbeeld een geclusterde index wordt gemaakt op de kolommen achternaam (achternaam), voornaam (voornaam) en de toepassing sorteert op achternaam en vervolgens eerst, dan is het niet nodig om een ​​ORDER BY-instructie toe te voegen.

Voor al het nut van indexen is er echter één zeer belangrijke MAAR - de index moet "efficiënt worden gebruikt" en zou u in staat moeten stellen gegevens te vinden met minder I / O-bewerkingen en de hoeveelheid systeembronnen. Omgekeerd zullen ongebruikte (niet vaak gebruikte) indexen de schrijfsnelheid van gegevens verlagen (aangezien elke bewerking die de gegevens wijzigt, ook de indexpagina's moet vernieuwen) en overtollige databaseruimte creëren.

Aan het bedekken(voor een bepaald verzoek) wordt een index genoemd waarin alle benodigde velden voor dit verzoek zijn. Als er bijvoorbeeld een index is gemaakt op de kolommen a, b en c en de SELECT-instructie alleen gegevens van die kolommen opvraagt, is alleen toegang tot de index vereist.

Om de effectiviteit van de index te bepalen, kunnen we een ruwe schatting maken met behulp van een gratis online service die het "query-uitvoeringsplan" en de gebruikte indexen toont.

Correct gebruik van indexen kan zoekopdrachten niet alleen meerdere keren versnellen, maar honderden, soms zelfs duizenden keren.

Dit soort versnelling is simpelweg niet mogelijk met hardware. Daarom verdient dit onderwerp veel aandacht.

Om een ​​zoekopdracht te versnellen, moet u vaak uw eigen index maken, en u kunt dit op verschillende manieren doen.

In de videozelfstudies zullen we verschillende manieren bekijken om een ​​index te maken. We zullen ook rekening houden met de situatie waarin de index van de vereiste samenstelling niet kan worden gemaakt met behulp van standaard platformtools en deze in het DBMS moet worden gemaakt.

Indexen instellen met behulp van standaard platformtools

De les laat zien welke indexen daadwerkelijk worden gemaakt voor objecten op DBMS-niveau.
In dit onderwerp is niet alles zo vanzelfsprekend als het op het eerste gezicht lijkt. Voor een aantal objecten zijn er inderdaad kenmerken voor het maken van indexen.
We zullen alle nuances in deze video bekijken.

Indexeren met optionele bestelling

De video toont het verschil tussen de optie voor het maken van een index Inhoudsopgave van Index met toevoeging. stroomlijnen.
Het voorbeeld laat zien welke index door het platform zal worden gebouwd bij gebruik van aanvullende bestellingen.

Een index maken voor registerdimensies

Het indexeren van de eerste dimensie van registers kent verschillende nuances.
De video laat zien welke indexen zijn gemaakt voor registerdimensies. De situatie van het indexeren van de eerste dimensie van het register wordt ook overwogen.

Vandaag zullen we het hebben over MS SQL-indexen en hun interne structuur. Ik zal proberen over indexen te praten, zowel vanuit het oogpunt van het DBMS als vanuit het oogpunt van 1C 8.3.

Indexen zijn een reeks links geordend op specifieke kolommen, gemaakt om de prestaties van de MS SQL DBMS te optimaliseren.

Impliciet indexen maken:

Het platform maakt zelf indexen op basis van de gegevenssleutels (referentie, code, naam, afmetingen, enz.) die bekend zijn voor elk metadata-object.

Expliciet indexen maken op drie manieren mogelijk:

  1. De vlag "Index" naast het veld instellen (variabele / dimensie). Optie "Index met toevoegen. door te bestellen "voegt aan de index het veld" Code "of" Naam "(voornamelijk voor).
  2. Een veld toevoegen aan "".
  3. Specificeren van een geïndexeerd veld in een query met behulp van de "" constructie.

Ontvang gratis 267 1C-videotutorials:

Indexen in Microsoft SQL DBMS

Indexen in MS SQL DBMS zijn datapagina's van elk 8 KB. Ondanks het feit dat indexen zijn ontworpen om de prestaties van het DBMS te verbeteren, hebben ze bepaalde nadelen: ze nemen schijfruimte in beslag en vertragen het DBMS om rijen te schrijven.

Typen indexen in MS SQL DBMS:

  1. Niet-geclusterde indexen- zulke indexen herbouwen geen tabellen, maar organiseren alleen links.
  2. Geclusterde indexen zijn nodig om de tabel op te bouwen in overeenstemming met de index. De gegevens zijn bijvoorbeeld alfabetisch gesorteerd. Niet geldig voor regelmatig wisselende kolommen. Het DBMS bouwt de tabel constant fysiek opnieuw op in deze index.
  3. Unieke indexen- een soort "add-on" voor geclusterde en niet-geclusterde indexen. Een dergelijke index is uniek in termen van sleutelvelden.

Sleuteltypen in het DBMS:

  • Hoofdsleutel- een reeks kolommen die de rij uniek karakteriseren.
  • Vreemde sleutel- een tabelveld waarin de waarde van de primaire sleutel wordt opgeslagen om de relatie tussen tabellen te ordenen. 1C gebruikt dit type toetsen niet.

Belangrijke nuances bij het gebruik van indexen