Na zajímavých věcech ze světa, instrukce a recenze. Maximální stupeň paralelismu - Vyberte optimální hodnotu SQL Maximální stupeň paralelismu

Není tajemstvím, že přemýšlet o problematice konfigurace serveru SQL Server spojené s nárůstem výkonnosti, odborníci z nich většina z nich rozhodne ve prospěch zvýšení hardwaru. Ale je to vždy oprávněné? Jsou všechny použité metody nastavení serveru? Je známo, že práce s konfiguračními parametry a změnou jejich výchozí hodnoty je schopen zlepšit výkon a další vlastnosti tohoto systému. Mezi tyto možnosti konfigurace má konfiguraci SQL jednu možnost s množstvím otázek, to je možnost - maximální stupeň paralelismu (DOP) - Zde je o tom a promluvme si o tom.

Maximální stupeň paralelismu (DOP) volba určuje počet podprocesů, které SQL Server může přetvořit požadavek a znamená počet použitých serverových procesorů. Výchozí parametr je 0 - maximální stupeň paralelismu. Pokud máte například 24 jader - pak hodnota "maximálního stupně paralelismu" bude rovna 24 a optimalizátorem, pokud to považuje za nezbytné, může používat všechny procesory k provedení jedné instrukce, to znamená, že dotaz bude být paralelně 24 proudy. Pro většinu případů je to dobré, ale ne pro každého. Také ne vždy dobré, pomocí hodnoty tohoto výchozího parametru. Konfigurace tohoto parametru může být nutné, například v následující situaci: například máme například žádost, ve které všichni zaměstnanci dělají informace o každodenních operacích, a v určitém časovém období každý uživatel provádí požadavek, který staví Zpráva o všech uživatelských operací pro nějakou dobu platnosti. Přirozeně, pokud je časová mezera velká, bude tento dotaz proveden po dlouhou dobu a při instalaci DOP ve výchozím nastavení bude mít všechny dostupné procesory, které budou přirozeně ovlivnit provoz ostatních uživatelů. V důsledku toho se změní hodnotu DOP, můžeme bez změny v dotazu, aby se zvýšila doba odezvy serveru SQL Server od ostatních uživatelů.
MS doporučuje nastavit hodnotu následujícím způsobem:

Nastavení parametru na TSQL Celý pro server:

Exec sp_configure "Maximální stupeň paralelismu", 4; Přenastavit.

Tuto hodnotu můžete také nastavit pro konkrétní dotaz TSQL:

Použijte AdventureReureWorks2008R2; Go Select Productid, OrderQty, Sum (LineEteal) jako celkový od prodeji prodeje.SalesorderDetail tam< $5.00 GROUP BY ProductID, OrderQty ORDER BY ProductID, OrderQty OPTION (MAXDOP 2); GO

V tomto příkladu "Tip" MaxDOP změní výchozí hodnotu parametru maximálního stupně paralelismu na 2. Zobrazení aktuálního nastavení může být:

Exec sp_configure "show Advanced", 1; Přenastavit; Exec sp_configure "Max stupeň paralelismu"

Podívejme se, jak je tato hodnota ovlivněna rychlostí provedení dotazu. Aby byl testovací dotaz napsán, na delší dobu, přidejte k ní další výběr. Žádost získá následující formulář:

< $5.00) dt2 WHERE dt.UnitPrice < $5.00 GROUP BY dt.ProductID, dt.OrderQty ORDER BY dt.ProductID, dt.OrderQty

Na mém zkušebním stroji se zobrazí hodnota "Maximální stupeň paralelismu" v 0. MSSQL je spuštěna strojem s 4-core procesorem. Provedl jsem řadu experimentů s různými hodnotami Maxdop: rovná 1 - bez paralelizace dotazu; rovna 2 - Použití pouze 2 jader; 4 - Použití všeho a bez náznaku určit volbu, která používá výchozí pokračování. Aby bylo možné získat statistiku provedení, musí být požadavek zahrnut do volby nastavené statistiky, jakož i zapnout tlačítko zobrazení dotazu v aplikaci Management Studio. Prečení získaných výsledků jsem provedl každý dotaz v cyklu 3krát. Výsledky lze vidět níže:

Vyberte DT.Productid, Dt.Orderqty, Sum (DT.LLINETOTAL) AS CELKEM Ze Sales.SalesOrderDetail DT, (Vybrat * od Sales.Sesalesordetail, kde UnitRice< $5.00) dt2 WHERE dt.UnitPrice < $5.00 GROUP BY dt.ProductID, dt.OrderQty ORDER BY dt.ProductID, dt.OrderQty OPTION (MAXDOP 1); SQL Server Execution Times: CPU time = 45942 ms, elapsed time = 46118 ms. SQL Server Execution Times: CPU time = 45926 ms, elapsed time = 46006 ms. SQL Server Execution Times: CPU time = 45506 ms, elapsed time = 45653 ms.

Pokud jde o dotaz, je jasné, že při instalaci nápovědy (MaxDOP 1) byl dotaz proveden bez paralelizace. Průměrná doba provedení dotazu 45925,66 ms

Vyberte DT.Productid, Dt.Orderqty, Sum (DT.LLINETOTAL) AS CELKEM Ze Sales.SalesOrderDetail DT, (Vybrat * od Sales.Sesalesordetail, kde UnitRice< $5.00) dt2 WHERE dt.UnitPrice < $5.00 GROUP BY dt.ProductID, dt.OrderQty ORDER BY dt.ProductID, dt.OrderQty OPTION (MAXDOP 2); SQL Server Execution Times: CPU time = 51684 ms, elapsed time = 28983 ms. SQL Server Execution Times: CPU time = 51060 ms, elapsed time = 26165 ms. SQL Server Execution Times: CPU time = 50903 ms, elapsed time = 26015 ms.

Při instalaci nápovědy (MAXDOP 2) byl dotaz proveden paralelně s 2 CPU, lze jej vidět na počtu provedení z hlediska provedení dotazu. Průměrný čas provedení dotazu 27054.33 ms

Vyberte DT.Productid, Dt.Orderqty, Sum (DT.LLINETOTAL) AS CELKEM Ze Sales.SalesOrderDetail DT, (Vybrat * od Sales.Sesalesordetail, kde UnitRice< $5.00) dt2 WHERE dt.UnitPrice < $5.00 GROUP BY dt.ProductID, dt.OrderQty ORDER BY dt.ProductID, dt.OrderQty OPTION (MAXDOP 4); SQL Server Execution Times: CPU time = 82275 ms, elapsed time = 23133 ms. SQL Server Execution Times: CPU time = 83788 ms, elapsed time = 23846 ms. SQL Server Execution Times: CPU time = 53571 ms, elapsed time = 27227 ms.

Při instalaci nápovědy (MaxDOP 4) byl dotaz prováděn paralelně se 4 CPU. Průměrná doba provedení dotazu 24735.33 ms

Vyberte DT.Productid, Dt.Orderqty, Sum (DT.LLINETOTAL) AS CELKEM Ze Sales.SalesOrderDetail DT, (Vybrat * od Sales.Sesalesordetail, kde UnitRice< $5.00) dt2 WHERE dt.UnitPrice < $5.00 GROUP BY dt.ProductID, dt.OrderQty ORDER BY dt.ProductID, dt.OrderQty SQL Server Execution Times: CPU time = 85816 ms, elapsed time = 23190 ms. SQL Server Execution Times: CPU time = 85800 ms, elapsed time = 23307 ms. SQL Server Execution Times: CPU time = 58515 ms, elapsed time = 26575 ms.

Žádost byla provedena paralelně, stejně jako 4 CPU. Průměrný čas dotazu 24357.33ms

odkazy: http://support.microsoft.com/kb/2023536.

Účel: Prozkoumejte účinek SQL paralelismu pro práci s požadavky 1c

Literatura:

Testovací prostředí:

· Windows Server 2008 R2 Enterprise

· MS SQL Server 2008 R2

· 1C Enterprise 8.2.19.90

Obrázek 1. Vlastnosti SQL "General"


Obrázek 2. SQL Vlastnosti "Advanted"

Přístroje:

· SQL Server Profiler

· 1C Požadavek konzoly

Požadavek na zkoušku:

VYBRAT

AK. Jméno jako jméno

Z

Registrace. Tlakový klasifikátor jako AK

Interní připojení Registrace. Tlakový klasifikátor jako AK1

Ac.Kod \u003d AK1.Kod

Příprava:

Spustíme SQL Server Profiler, nastavte připojení, označte události a sloupce, jak je znázorněno na obrázku 3.


Obrázek 3. TRACKOVÉ VLASTNOSTI

Nainstalujte výběr pro naši databázi


Obrázek 4. Základní filtr

Snížení:

· Maximální stupeň paralelismu - MDOP

· Prahová hodnota SOST pro paralelnost - náklady

Testování plánu požadavků (MDOP \u003d 1)


Obrázek 5. Požadavek konzoly - výkon výkonu 20 sekund.

Server SQL Server "Maximální stupeň paralelismu" je nastaven na hodnotu 1 (bez paralelismu). Díváme se na výsledek v profileru (obr.6)


Obrázek 6. Sekvenční plán požadavků

SQL Server vytvořil plán sekvenčního požadavku, zatímco: Celkem načítání CPU \u003d 6,750 (y) a čas pro provedení dotazu \u003d 7,097 (y)

Testování plánu paralelního požadavku (MDOP \u003d 0, cost \u003d 5)

Přenos SQL Server do režimu paralelismu (v dotazu SQL):

Používat master;

Exec sp_configure "Zobrazit pokročilé volby", 1;

Překonfigurovat s přepsáním.

Používat master;

exec sp_configure "Maximální stupeň paralelismu", 0;

Překonfigurovat s přepsáním.

Proveďte stejný dotaz (obrázek 7)


Obrázek 7. Žádosti konzoly - doba provedení 16 sekund.

Zkontrolujte výsledek v profileru (obrázek 8)


Obrázek 8. Plán paralelního požadavku

SQL Server tentokrát vytvořil plán paralelního dotazu, zatímco celkové zatížení CPU \u003d 7.905 sekund a doba trvání dotazu \u003d 3 458 sekund

Testování plánu postupného požadavku (MDOP \u003d 0, COST \u003d 150)

Pokusíme se zbavit paralelního plánu pomocí parametru "mezní hodnota nákladů pro paralelismus". Ve výchozím nastavení je parametr nastaven na hodnotu 5. V našem případě, od tvorby paralelního plánu bylo možné se zbavit 150 (v SQL Query):

Používat master;

exec sp_configure. "Prahová hodnota nákladů pro paralely", 150 ;

Zkontrolujte provedení dotazu podle těchto podmínek (obr. 9)

Obrázek 9. Žádosti konzoly - doba provedení 20 sekund.

Zkontrolujte výsledek v profileru (obr. 10)


Obrázek 10. Sekvenční plán požadavků.

SQL Server vytvořil plán sekvenčního požadavku. Celkem načítání CPU \u003d 7,171 sekund, čas provedení dotazu \u003d 7, 864 sekund.

ZÁVĚRY:

· Provádění zkušebního dotazu v prostředí 1C Enterprise Server pomocí serveru SQL Server Parallel PLAN Server poskytuje významný výkonnostní zesílení ve srovnání se sekvenčním plánem (16 sekund. Proti 20 sekund - výhry 4 sekundy.)

· Proveďte testovací dotaz pomocí SQL Server při použití plánu paralelního požadavku trvá dvakrát rychleji než při použití plánu sledování (3,5 sekundy. Proti 7.1 sec.)

· SQL Server paralelismus nelze nastavit nejen pomocí parametru MDOP, ale také parametr "mezní hodnota nákladů pro paralelismus"

  • Tutorial

Tato příručka je určena pro začátečníky, kteří hledají jednoduchý manuál v ruštině pro instalaci anglická verze SQL Server 2012, který bude použit pro SharePoint 2013.
Tento článek není pro profesionály.

Veškerá práce je rozdělena do 3 fází:

  • Instalace SQL Server 2012
  • Nastavení maximálního stupně nastavení konfigurace paralelismu
  • Nastavení práva ÚčetNavrženo pro instalaci služby SharePoint 2013
Také v článku popisuje proces microsoft Instalace.NET Framework. 3.5 V prostředí MS Windows Server. 2012 R2 Standart.

Pozor: Pod řezu mnoho obrázků!

Instalace SQL Server 2012

1. Před instalací se ujistěte, že na pevném disku je dostatek volného místa (v mém případě to trvalo 2,7 GB).
Po spuštění distribuce vyberte položku " Instalace."V levém menu pak" Klikněte na položku " Nový SQL Server Samostatný nebo přidat funkce do existující instalace":

2. Spusťte Průvodce instalací. Zkontroluje to. Můžete kliknout na tlačítko "Zobrazit podrobnosti" a zobrazit podrobnou zprávu:

3. Podrobná zpráva. Stiskněte tlačítko "OK":

4. Zadejte kód Product Key a stiskněte tlačítko "Další":

5. Souhlasíte s podmínkami licenční smlouvy.
Chcete-li to udělat, vložte klíště " Souhlasím s licenčními podmínkami

6. V kroku nastavení nastavení vyberte první položku " Instalace SQL Server Server". Stiskněte tlačítko" Další ":

7. V kroku "Výběr funkce" Oslavte " Služby databázového motoru.", "Nástroje pro správu - základní"A" Nástroje pro správu - kompletní". Poté stiskněte tlačítko" Další ":

8. Pak instalační program provede další kontrolu. Můžete kliknout na tlačítko "Zobrazit podrobnosti" a zobrazit podrobnou zprávu:

9. Podrobná zpráva. (V této fázi jsem měl chybu v "Microsoft .NET Framework 3.5 je nainstalován ..." Pravidlo. O tom níže). Stiskněte tlačítko "Další":

10. V kroku "Konfigurace instance" musíte nakonfigurovat instanci služby SQL Server.
Opakuji, že tento článek je určen pro začátečníky. Proto předpokládáme, že SQL Server nebyl na vašem serveru nainstalován, což znamená, že opustíte všechna výchozí nastavení. Stiskněte tlačítko "Další":

11. V tomto kroku zobrazí Průvodce instalací požadavky na místo na disku. Stiskněte tlačítko "Další":

12. V kroku konfigurace serveru musíte zadat účet domény pro službu " Databázový stroj SQL Server". Po vyplnění pole" Název účtu "a" Heslo "stiskněte tlačítko" Další ":

13. Na kroku "Konfigurace databázového motoru" stačí přidat aktuální uživatele do správců serveru SQL Server. Chcete-li to provést, klepněte na tlačítko "Přidat aktuální uživatel" a klepněte na tlačítko "Další":

14. V dalším kroku stiskněte tlačítko "Další":

15. Dále, průvodce instalací znovu provede kontrolu a zobrazí jeho výsledky. Stiskněte tlačítko "Další":

16. V kroku "Připraveno k instalaci" se průvodce zobrazí souhrnné informace. Zde musíte kliknout na tlačítko "Instalovat":

17. Po dokončení instalace se zobrazí informace o generované operací:

18. Zveřejněný v této fázi pro restart počítače. V některých případech (například při instalaci Microsoft .NET Framework 3.5), průvodce instalací sám zobrazí okno s návrhem k restartování počítače. Neodmítněte.

Nastavení maximálního stupně nastavení konfigurace paralelismu

Ve výchozím nastavení je hodnota parametru "Max stupeň paralelismu" 0.
SharePoint 2013 vyžaduje, aby byl tento parametr roven 1.
Je snadné opravit!

1. Launch. Microsoft SQL Server Management Studio (Start - Všechny programy - Microsoft SQL Server 2012 - SQL Server Management Studio).

2. Na obrazovce Připojení na server klepněte na tlačítko "Připojit".

3. Klepněte pravým tlačítkem myši na server v okně " Objekt Explorer."A vyberte" Vlastnosti.":

4. V okně vlastností serveru, které se otevře v levém menu, vyberte stránku " Pokročilý"A proveďte seznam vlastností v dolní části obrazovky. Nastavte hodnotu parametru Maximální stupeň paralelismu" v 1 a klikněte na tlačítko OK:

5. Nezavírejte SQL Server Management Studio, bude to užitečné.

Nastavení práva účtu pro nastavení služby SharePoint 2013

Účet, ve kterém musí mít instalaci služby SharePoint 2013 zvýšená práva v serveru SQL Server.
Tento účet se doporučuje poskytnout následující role:
  • dbcreator.
  • zabezpečení.
  • veřejnost
1. V SQL Server Management Studio v okně " Objekt Explorer."Rozbalte položku" Bezpečnostní". Pak klepněte pravým tlačítkem myši na bod" Přihlášení."A vyberte" Nové přihlášení.":

2. V poli "Přihlašovací jméno" zadejte doménové jméno Účet, ze kterého plánujete instalovat a konfigurovat SharePoint 2013.

3. V levém menu vyberte stránku " Serverové role."A zkontrolujte roli" DBCReator "a" Securityadmin ", a také se ujistěte, že je již označena" veřejná "role. Poté klikněte na" OK ":

Nyní SQL Server je připraven k instalaci SharePoint 2013.

Instalace Microsoft .NET Framework 3.5 v MS Windows Server 2012 R2 Standart

V kroku číslo 9 bodu " Instalace SQL Server 2012"Měl jsem chybu: to nebylo nainstalováno .NET Framework 3.5.
Chcete-li tento problém vyřešit, musí být provedeny následující kroky:

1. Musíte otevřít konzoli " Správce serveru.".

2. V levém menu vyberte položku "Dashboard".

3. Ve středu okna klikněte na položku "Přidat role a funkce".

4. V mistrovi, který se otevírá, přeskočte "před začátkem".

5. V kroku "Typ instalace" vyberte položku " Instalace založená na role nebo funkci". Stiskněte tlačítko" Další ".

6. V dalším kroku ponechte ve výchozím nastavení vše a stiskněte tlačítko "Další".

7. Přeskočte krok "serverové role" klepnutím na tlačítko "Další".

8. V kroku "Funkce" oslavujeme zaškrtávací políčko ".NET Framework 3.5 Funkce". Stiskněte tlačítko "Další".

9. Po dokončení procesu instalace můžete zavřít průvodce "Přidat role a funkce funkce".

10. Připraven!

Všechno dobré a klidné nebe nad hlavou!

P.S. Šťastný Den kosmonautiky!

Maximální stupeň paralelismu (DOP) - Další možností konfigurace SQL Server, která je spojena s mnoha otázkami a která je věnována mnoha publikacím. V tomto článku jeho blogu autor doufá, že učiní malou jasnost, že tato volba dělá a jak ji používat.
Za prvé, autor by rád rozptýlil jakékoli pochybnosti o tom, že zadaná volba nastavuje, kolik procesorů může používat SQL Server při servisu více připojení (nebo uživatelů) - to není tak! Pokud má SQL Server přístup ke čtyřem neaktivním procesorům a je nakonfigurován pro použití všech čtyř procesorů, bude používat všechny čtyři procesory bez ohledu na maximální stupeň paralelismu.
Co tedy tato volba dává? Tato volba nastavuje maximální počet procesorů, které SQL Server může použít pro jeden požadavek. Pokud se požadavek na SQL Server se musí vrátit velký objem Data (mnoho záznamů), někdy má smysl paralelovat, rozbíjí se do několika malých požadavků, z nichž každý vrátí jejich podmnožinu řádků. SQL Server tedy může používat více procesorů, a proto na multiprocesorových systémech může být velký počet záznamů celého dotazu potenciálně vrácen rychleji než v systému jednorázového procesoru.
Existuje mnoho kritérií, která musí být zohledněna před spuštěním SQL Server spouští "Intra dotaz paralelismus" (porušení požadavku na několik proudů), a zde není podrobně žádný bod. Můžete je najít v Bol, hledání fráze "stupeň paralelismu". Říká se, že rozhodnutí o paralelizaci je založeno na dostupnosti procesoru paměti a zejména na dostupnosti samotných procesorů.
Tak proč musíme přemýšlet prostřednictvím této možnosti - protože opouštět na výchozí hodnotu (SQL Server sám rozhoduje o paralelizaci), někdy můžete získat nežádoucí efekty. Tyto účinky vypadají takto:

    Paralelní požadavky jsou pomalejší.

    Doba provádění žádostí se může stát nedeterministickými a může to nelegální uživatele. Čas provedení se může změnit, protože:

      Žádost může někdy paralelně a někdy ne.

      Žádost může být blokována paralelním požadavkem, pokud byly před tím přetíženy procesory.

Než budeme pokračovat, autor by si všiml, že není třeba se ponořit do vnitřní organizace paralelismu. Máte-li zájem o to, můžete si přečíst článek "Paralelní dotaz zpracování" v knihách on-line, ve kterých jsou tyto informace podrobněji stanoveny. Autor věří, že existují pouze dvě důležité věci, které byste měli vědět o vnitřní organizaci paralelnosti:

    Paralelní požadavky mohou generovat více podprocesů, než je uvedeno v možnost "Max stupeň paralelismu". DOP 4 může generovat více dvanáct vláken, čtyři pro požadavek a další toky použité pro třídění, proudy, jednotky a sestavy atd.

    Paralelizace požadavků může vyvolat různé spidové spidové čekat s čekacím typu CXPacket nebo 0x0200. To lze použít k nalezení těchto spidů, které jsou v pohotovostním režimu, když jsou paralelní operace a mají v systémech SYSProcesses: CXPacket. Chcete-li usnadnit tento úkol, autor nabízí použití uložené procedury v jeho blogu: track_waitstats.

A tak "požadavek může být proveden pomalejší při paralelním" proč?

    Pokud má systém velmi slabý Šířka pásma Subsystémy disku, pak při analýze požadavku může být jeho rozklad proveden delší než bez paralelismu.

    Možné datové bloky nebo blokování datových rozsahů pro procesor generovaný jiným použitým paralelně a spuštěním pozdějšího procesu atd.

    Pokud neexistuje žádný index pro predikát, který vede ke skenování tabulky. Paralelní operace v rámci požadavku může skrýt skutečnost, že požadavek bude dokončena mnohem rychleji s konzistentním plánem provádění a správným indexem.

Ze všehoto se řídí doporučením pro kontrolu provedení dotazu bez paralelismu (DOP \u003d 1), to pomůže identifikovat možné problémy.
Výše uvedené účinky paralelismu, samy by měly přinést, že vnitřní mechanika paralelizace požadavků nejsou vhodná pro použití v aplikacích OLTP. Jedná se o takové aplikace, pro které může změna doby provedení dráždit uživatele a pro které je server současně sloužícím mnoha uživatelům, je nepravděpodobné, že bude pravděpodobně vybrat plán paralelního provádění v důsledku těchto aplikací Processor Workload profilu.
Proto pokud budete používat paralelismus, pak bude s největší pravděpodobností potřebná, pro úlohy extrakce dat (datový sklad), podporu rozhodovacích nebo vykazovaných systémů, kde není mnoho požadavků, ale jsou těžké a popraveny Výkonný server s velkým objemem operační paměti.
Pokud se rozhodnete použít paralelismus, jakou hodnotu by měla být instalována pro DOP ?. Dobrá praxe pro tento mechanismus je, že pokud máte 8 procesorů, pak nainstalujte DOP \u003d 4, a to bude s velkým stupněm pravděpodobnosti optimální instalace. Neexistuje však žádná záruka, že bude fungovat. Jediný způsob, jak se ujistit, že je testovat různé hodnoty pro DOP. Kromě toho autor chtěl nabídnout své, založené na empirických pozorování Rady, nikdy nestanoví toto číslo více než polovinu počtu procesorů, které jsou skladem. Pokud autor měl procesory méně než šest, bylo by nastaveno DOP v 1, což jednoduše zakazuje paralelizace. Mohl by učinit výjimku, pokud má databázi, která podporuje proces pouze jednoho uživatele (některé technologie extrakce dat nebo vykazujících úloh), v tomto případě, v pořadí výjimky, bude možné instalovat DOP v 0 (výchozí hodnotu) Umožňuje SQL Server učinit rozhodnutí o potřebě paralelizovat dotaz.
Před dokončením článku vás autor chtěl varovat za skutečnost, že paralelní tvorba indexů závisí na čísle, které instalujete pro DOP. To znamená, že jej budete chtít změnit v době vytváření nebo re-vytváření indexů pro zvýšení výkonnosti této operace a samozřejmě můžete použít dotaz na Hint MAXDOP, který umožňuje ignorovat nastavenou hodnotu v Konfigurace a mohou být použity v minimálním zatížení.
Nakonec může váš požadavek zpomalit při paralelování v důsledku chyb, takže se ujistěte, že je na serveru nainstalován poslední aktualizace Service Pack.

Vytvořit proc track_waitstats (@num_Samples Int \u003d 10 , @ Zpoždění int \u003d 1 @ DELAYTYPE nvarchar ( 10 ) \u003d "Minuty") as - T. Davidson - Tato uložená procedura je poskytována \u003d jak je \u003d bez záruk, - a přiznává žádná práva. - použití zahrnutých vzorků skriptů podléhají podmínkám - Zadáno na adrese http://www.microsoft.com/info/cpyright.htm - @Num_Samples je počet časů zachytit čekání, - Výchozí hodnota je desetkrát. Výchozí interval zpoždění je 1 minuta - DELAYNUM je interval zpoždění. DelayType Určuje, zda. - Interval zpoždění je minut nebo sekundy - Vytvořte tabulku WaitStats, pokud neexistuje, jinak zkrátí Nastavte nocount on Pokud neexistuje (vybrat) 1 Od sysObjects, kde jméno \u003d "waitstats") vytvářet tabulka čekánístat (varchar (varch) 80 ), Požádá numerické ( 20 ,1 ), Numeric ( 20 ,1 ), Numeric ( 20 ,1 ), Nyní DateTime default getdate ()) jinak zkrátí tabulka waitstats dbcc sqlperf (waitstats, clear) - vymazat waithattats deklarovat @i int, @ zpoždění varhar ( 8 ), @ Dt varchar ( 3 ), @ Now DateTime, @ tottwait numeric ( 20 ,1 ), @ Endtime DateTime, @ Begintime DateTime, @ HR INT, @ min int, @ sec int vyberte @i \u003d 1 Vyberte @dt \u003d případ nižší (@delaytype), když "minut" pak "m", když "minute" pak "m", když "min", když "min", když "m", když "mm" pak "m", když "mi" pak "m" Když "m" pak "m", když "sekundy" pak "s", když "druhý" pak "s", když "sec" pak "s" pak "s", když "ss", když "s" pak "s", když "s" pak "s" @ DelayType konec, pokud @dt není v ("s", "m") začátek tisku "Prosím, zadejte typ zpoždění, např. Sekundy nebo minuty" Návrat konec, pokud @dt \u003d "S" začátek vybrat @SEC \u003d @DADSNUM% 60 Vyberte @min \u003d Odlitek (@delaynum / 60 ) As int) Vyberte @hr \u003d cast ((@min / 60 ) As int) Vyberte @min \u003d @ min% 60 Konec, pokud @dt \u003d "m" začátek vybrat @SEC \u003d 0 Zvolte @min \u003d @Dewaynum% 60 Vyberte @hr \u003d cast (@delaynum / 60 ) As int) Konec Select @delay \u003d vpravo ("0" + konvert (varchar (varch) 2 ), @ H), 2 2 ), @ min), 2 ) + ":" + + Vpravo ("0" + převod (varchar (varch) 2 ), @ Sec), 2 ) Pokud @hr\u003e 23 nebo @min\u003e 59 nebo @SEC\u003e 59 Začněte vybrat. "HH: mm: SS Zpoždění čas nemůže\u003e 23:59:59" Vyberte "Interval a typ zpoždění:" + Převést (varchar (varchar) 10 ), @ Zpoždění) + "," + @DELAYTYPE + "převádí na" + @delay vrátit konec (@i)<= @num_samples) begin insert into waitstats (, requests, ,) exec ("dbcc sqlperf(waitstats)" ) select @i = @i + 1 WAITFORD ZPŮSOBU @DELAY END --- Vytvořit WaitTats Report Execute get_waitstats --//--//--//--//--//--//--//--//--//-//--//--//--//--//--//--//--//--/ Vytvořit proc get_waitstats as - Tato uložená procedura je poskytována \u003d jak je \u003d bez záruk a - příslušná práva. - Použití zahrnutých vzorků skriptů podléhají zadaným výrazům - na http://www.microsoft.com/info/cpyright.htm. -- - Tento proc vytvoří WaitTattS hlásí výpis typu čekání - procento - lze spustit, když je track_waitstats provádění Nastavit nocount na deklare @now DateTime, @ tottwait numeric ( 20 ,1 ), @ @ endtime DateTime, @ Begintime DateTime, @ HR INT, @ Min Int, @ Sec Int Select @ nyní \u003d Max (nyní), @ begintime \u003d min (nyní), @ endtime \u003d max (nyní) od waitstats, kde \u003d " Celkem " --- Odčítání čekání, spánku a zdrojem_que_queue z celkového počtu Vyberte @totalwait \u003d Sum () + 1 Od waitstats, kde ne v ("Waitfor", "spánek", "Resource_Queue", "Celkem", "*** Celkem ***") a nyní \u003d @now - Vložení upravených součtů, hodnost procenta Descending Smazat WaitStattats, kde \u003d "*** Celkem ***" a nyní \u003d @now vložka do Waitstats zvolte "*** Celkem ***", 0 , @ Totalwait, @ totutwait, @ nyní vyberte ,, procento \u003d obsazení ( 100 * / @ Cutterwait jako numerický ( 20 ,1 )) Od Waitstats, kde ne v ("Waitfor", "spánek", "Resource_Queue", "Celkem") a nyní \u003d @now objednávka podle procenta

V tomto příspěvku hovoříme pouze o SQL Server. Pokud se chystáte "zkusit štěstí" používat 1C s Oracle, DB2, postgrre k vám tyto informace budou k ničemu. Ale musíte pochopit, že v 1C existují především odborníci na MS SQL Server. Odborníci na DB2 se zdají snahy od IBM. Můžete se hádat dobro nebo špatné po dlouhou dobu, tento DBMS je důležitý, jeden, nejvíce "hladký" 1C pracuje s MS SQL Server. Posouzení nejnovějšími zprávami s více či méně slušnou prací s DB2. I když jsem osobně měl zkušenosti s nastavením 1C pracovat s DB2 více ve verzi 8.1 - Všechno bylo nějak moc. V každém případě by volba jiného DBMS by mělo být jasně odůvodněno - možnosti, které nejsou v MS SQL (cluster s vyvažováním zatížení, mřížky atd.) Nebo finance (Oracle již zakoupeno) nebo platforma (vše na Linuxu) .

Takže v pořadí, co musíte udělat s MS SQL Server:

1) Konfigurace minimálního a maximálního množství paměti. Minimum je polovina systémové paměti. Maximální paměťový systém bez 2 GB. To se provádí prostřednictvím Management Studio - v vlastnostech serveru:

2) Pokud není na kartě Procesor instalována priorita - musíte instalovat

3) Maximální stupeň rovnoběžnosti vloženého v 1.

4) Zahrnout server SQL Server, přizpůsobit databázovou poštu - není tam nic těžké, nebudu podrobně popsat.

5) Přizpůsobení plánů služeb:
Všeobecné:
a) Aktualizovat statistiky - každých 2 hodiny
b) DBCC FreeProcCache - každých 2 hodiny
Pro každou databázi:
a) plné zálohování
b) Zálohování rozdílu
c) Defragmentace indexů - každý den
d) indexy perestrojika - v noci o víkendech
e) Kontrola integrity základny - jednou za měsíc v noci o víkendu

6) Doporučuji instalaci modelu obnovení pro každou databázi (ve vlastnostech) jako jednoduché. Pokud nemáte 24/7 systém a na základně méně než 1000 uživatelů, neexistuje žádný cluster tolerantní k chybám a nepodepsali jste SLA, ve které předpokládáme, že v případě výstupu z jakéhokoli zařízení pro obnovení dat Do sekundy (a ne od posledního zálohování) toto doporučení bude rozumné. Jinak budete brzy dlouho po dlouhou dobu a křečovitě odráží, kam jít narozený protokol Tranzaction

7) Odstraňte databázi tempdb z běžných databází na jiný disk - i když musíte překonfigurovat pole RAID a snížit jeho výkon. Jinak bude 1 uživatel schopen paralyzovat práci všech ostatních. Pokud máte hardwarovou akceleraci namísto pevného disku, pak samozřejmě nemůžete oddělit a dát na něj Tempdb, ale je to pouze tehdy, když je

8) Nastavte jakékoliv prostředky pro monitorování - například mám rád reflektor http://www.quest.com/spotlight-on-sql-server-enterprise/

9) Zkontrolujte sami s analyzátorem Microsoft Nejlepší praxe - http://www.microsoft.com/download/en/details.aspx?id\u003d15289 - nádherný nástroj, který pomáhá nejen s nastavením, ale také s řešením mnoha problémů.

Nyní stručně za to, co jsme to udělali:

1) paměť. Minimální hodnota vás jednoduše ušetří z "Glitches", když SQL Server pro některé další známé důvody nepoužívá všechna paměť k dispozici. Musí jíst vše! Maximální hodnota vás ušetří ze swapu v případě, že stejný optimalizátor paměti SQL Server Optimizátor rozhodne, že by mu stále ublížil.

3) Velmi důležitý bod - Immo je třeba vložit v 1 ve všech transakčních systémech. Za prvé, to zabrání části zámků mezi různými procesy, které se snaží provádět 1 požadavek, v tomto pořadí nás chrání před nějakým "podivným" chybám. Zadruhé ... 1 "zabít" požadavek bude schopen vytáhnout všechny zdroje serverů, což je poněkud ne pravdivé ve vztahu ke zbytku uživatelů systému. Parametr určuje, zda lze zpracovat 1 požadavek tolik procesorů.

5) O statistikách a čištění procesní cache - to je "na slyšení" a zde často zapomínáme na Reyndexation. Tento postup je zcela důležitý, zejména s nárůstem objemu základny, jeho význam se zvyšuje. Někdy až 60% výkonu jsou ztraceny na fragmentaci indexu.

7) Pokud existuje hardwarový akcelerátor nebo jednoduše 2 disky s různými přístupovými rychlostmi, doporučení bych přemýšlel o zvýraznění skupin souborů v databázích a dělení jednotlivých tabulek na různé diskové pole, s různým časem přístupu. Koneckonců souhlasíte, pH "Zboží ve skladech" a referenční knihy "Skladování dalších informací" 2 z předmětu požadavku na úložiště, který je zakořeněn. Není nutné ukládat všechny soubory a obrázky na rychlému poli v databázi - můžete jej vybrat na samostatné, ne tak rychle, ale kde je mnoho míst (a nebojí se spoustu souborů ke stažení, způsob).