objednávání". Vlastnosti použití možnosti indexování „Index s přídavnými

Dnes si povíme něco o MS SQL DBMS indexech a jejich vnitřní struktuře. Pokusím se mluvit o indexech jak z pohledu DBMS, tak z pohledu 1C 8.3.

Indexy jsou sada odkazů uspořádaných podle určitých sloupců, vytvořených pro optimalizaci výkonu MS SQL DBMS.

Implicitní vytváření indexů:

Platforma sama vytváří indexy pomocí datových klíčů známých předem pro každý objekt metadat (odkaz, kód, název, měření atd.)

Explicitní vytváření indexů možné třemi způsoby:

  1. Nastavení příznaku „Index“ pro pole (atribut/dimenze). Možnost „Indexovat s dalšími“ ordering“ přidá do indexu pole „Kód“ nebo „Název“ (především pro ).
  2. Přidávání pole do „ “.
  3. Určení indexovaného pole v dotazu pomocí konstrukce „ “.

Získejte 267 videolekcí na 1C zdarma:

Indexy v Microsoft SQL DBMS

Indexy v MS SQL DBMS jsou stránky s daty po 8 KB. Navzdory skutečnosti, že indexy jsou navrženy tak, aby zlepšily výkon DBMS, mají určité nevýhody – zabírají místo na disku a zpomalují práci DBMS při zápisu řádků.

Typy indexů v MS SQL DBMS:

  1. Neklastrované indexy— takové indexy nepřestavují tabulky, ale pouze organizují odkazy.
  2. Seskupené indexy potřebné k sestavení tabulky v souladu s indexem. Data jsou uspořádána například abecedně. Neplatné pro často se měnící sloupce, protože DBMS neustále fyzicky přestavuje tabulku pomocí tohoto indexu.
  3. Unikátní indexy- druh „nadstavby“ pro shlukované a neshlukované indexy. Takový index je jedinečný na základě klíčových polí.

Typy klíčů v DBMS:

  • Primární klíč— sada sloupců, které jednoznačně charakterizují řádek.
  • Cizí klíč (cizí)— pole tabulky, které ukládá hodnotu primárního klíče pro účely organizace vztahů mezi tabulkami. 1C nepoužívá tento typ klíčů.

Důležité nuance použití indexů

Správné použití indexů může zrychlit dotazy nejen krát, ale stovky, někdy i tisíckrát.

Tento druh zrychlení jednoduše nelze dosáhnout pomocí hardwaru. Proto je třeba tomuto tématu věnovat zvýšenou pozornost.

Často, abyste urychlili dotaz, musíte vytvořit svůj vlastní index a existuje několik různých způsobů, jak to udělat.

Ve video tutoriálech se podíváme na několik způsobů, jak vytvořit index. Zvážíme i situaci, kdy index požadovaného složení nelze vytvořit pomocí standardních nástrojů platformy a bude nutné jej vytvořit v DBMS.

Nastavení indexů pomocí standardních nástrojů platformy

Lekce ukazuje, jaké indexy se vlastně vytvářejí pro objekty na úrovni DBMS.
Ne vše je v tomto tématu tak samozřejmé, jak by se na první pohled mohlo zdát. Koneckonců, pro řadu objektů existují funkce vytváření indexů.
Na všechny detaily se podíváme v tomto videu.

Indexace s dodatečným objednáním

Video ukazuje rozdíl mezi možností konstrukce indexu Index z Index s přídavnými objednávání.
Příklad ukazuje, jaký druh indexu platforma vytvoří při použití dodatečného řazení.

Vytvoření indexu pro dimenze registru

Indexování první dimenze registrů má několik nuancí.
Video ukazuje, jaké indexy se vytvářejí pro měření registru. Rovněž je zvažována situace indexování dimenze prvního registru.

nebo

Proč musí vývojář 1C „indexovat“ rozměry a podrobnosti?

- No, máte požadavky! - databáze řekla a zavěsila...

Krátká odpověď na otázku z názvu je, že to umožní rychlé spouštění dotazů a sníží negativní dopad zámků na .

Co je index?

Optimalizace umístění indexu

Když objem tabulek neumožňuje, aby se „vešly“ do paměti RAM serveru, je na prvním místě rychlost diskového subsystému (I/O). A zde můžete věnovat pozornost možnosti umístit indexy do samostatných souborů umístěných na různých pevných discích.

Podrobný popis akcí http://technet.microsoft.com/ru-ru/knihovna/slečna175905.aspx
Použití indexu z jiné skupiny souborů zlepšuje výkon indexů bez klastrů díky souběžnosti I/O procesů a práce na indexu samotném.
Výše uvedené zpracování lze použít pro stanovení rozměrů.

Vliv indexů na zámky

Absence potřebného indexu pro dotaz znamená iteraci všech záznamů v tabulce, což zase vede k redundantním zámkům, tzn. nepotřebné záznamy jsou blokovány. Navíc čím déle trvá dokončení dotazu kvůli chybějícím indexům, tím delší bude doba držení zámku.
Dalším důvodem zámků je malý počet záznamů v tabulkách. V tomto ohledu SQL Server při výběru plánu provádění dotazů nepoužívá indexy, ale prochází celou tabulku (Table Scan), čímž blokuje celou tabulku. Aby k takovému blokování nedocházelo, je nutné zvýšit počet záznamů v tabulkách na 1500-2000. V tomto případě se skenování tabulky prodraží a SQL Server začne používat indexy. Samozřejmě to nelze vždy provést u řady adresářů, jako jsou „Organizace“, „Sklady“, „Divize“ atd. obvykle mají málo záznamů. V těchto případech indexování nezlepší výkon.

Index výkonu

Již v názvu článku jsme poznamenali, že nás zajímá vliv indexů na výkon dotazů. Indexy jsou tedy nejvhodnější pro následující typy úloh:

  • Dotazy, které specifikují „úzká“ kritéria vyhledávání. Takové dotazy musí číst pouze malý počet řádků, které splňují určitá kritéria.
  • Dotazy, které určují rozsah hodnot. Tyto dotazy také potřebují číst malý počet řádků.
  • Vyhledávání, které se používá při operacích propojení. Sloupce, které se často používají jako klíče vazby, jsou skvělé pro indexy.
  • Vyhledávání, při kterém jsou data čtena v určitém pořadí. Má-li být výsledková sada řazena v seskupeném indexovém pořadí, pak není nutné žádné řazení, protože výsledková sada je již předřazena. Pokud je například vytvořen seskupený index ve sloupcích příjmení, křestní jméno a aplikace vyžaduje řazení podle příjmení a poté podle křestního jména, není třeba přidávat klauzuli ORDER BY.

Pravda, při vší užitečnosti indexů je tu jedno velmi důležité ALE – index musí být „efektivně využíván“ a musí umožňovat nalezení dat pomocí menšího počtu I/O operací a množství systémových prostředků. Naopak nepoužité (zřídka používané) indexy pravděpodobněji zhorší výkon zápisu dat (protože každá operace, která upravuje data, musí také aktualizovat stránky indexu) a vytvoří nadbytečný databázový prostor.

Krytina(pro daný požadavek) se nazývá index, který obsahuje všechna potřebná pole pro tento požadavek. Pokud je například index vytvořen ve sloupcích a, b a c a příkaz SELECT se dotazuje na data pouze z těchto sloupců, je vyžadován pouze přístup k indexu.

Abychom mohli určit efektivitu indexu, můžeme zhruba odhadnout pomocí bezplatné online služby, která ukazuje „plán provádění dotazů“ a použité indexy.

Při popisu detailů různých objektů v metadatech je možné nastavit vlastnost Index. Tato vlastnost umožňuje vývojáři konfigurace upozornit systém na potřebu vytvořit v databázi samostatný index pro odpovídající podrobnosti.

Kromě volby "Index" v této vlastnosti lze u většiny objektů nastavit volbu "Index s dodatečným objednáním". Tato možnost je určena především pro použití v dynamických seznamech.

Ve volbě "Index" je index vytvořen přímo na základě podrobností. Index je také doplněn o odkaz pro zajištění určitého pořadí záznamů v indexu při opakování hodnot atributů.

Ve volbě "Index s dalším řazením" je index sestaven podle atributu a také podle některého pole, které se obvykle používá k řazení objektů tohoto typu. U adresáře je index v závislosti na hlavní reprezentaci doplněn kódem nebo názvem. A u dokumentu je rejstřík doplněn o datum. Tento rejstřík je také doplněn o odkaz.

Ve volbě "Index" může dynamický seznam poskytnout efektivní prohlížení velkých objemů informací s řazením podle tohoto atributu, protože k tomu bude použit vytvořený index.

Volba "Index s dodatečným řazením" v dynamickém seznamu může poskytnout efektivní zobrazení velkého množství informací s výběrem podle hodnoty daného atributu a s řazením odpovídajícím hlavnímu řazení pro daný objekt. V tomto případě přítomnost indexu, který obsahuje atribut, podle kterého se provádí výběr, a hlavní objednávkové pole umožní systému použít index při prohlížení seznamu.

Indexy samozřejmě ovlivňují i ​​další způsoby získávání informací (získávání dat pomocí metod objektových manažerů nebo dotazů).

Při určování možnosti pro vlastnost Index byste tedy měli vycházet z toho, které možnosti pro získávání informací je třeba nejprve optimalizovat. Pokud například potřebujete zobrazit seznam s výběrem podle detailů, pak má smysl použít volbu „Index s dodatečným objednáním“. A pokud je index potřeba např. pouze pro vyhledávání dotazováním objektů podle daných detailů bez řazení, pak je lepší použít volbu „Index“, aby vytvořený index vyžadoval méně systémových prostředků.

Složení indexů generovaných systémem pro různé kombinace vlastností metadat je podrobně popsáno v článku „Indexy databázových tabulek“.