Onimnim stvarima iz svijeta IT, uputstava i recenzija. Maksimalni stupanj paralelizma - Odaberite optimalnu SQL vrijednost maksimalni stupanj paralelizma

Nije tajna da razmišlja o problemima konfiguriranja SQL servera povezanog s povećanjem performansi, većina njih stručnjaci imaju izbor u korist povećanja hardvera. Ali je li uvijek opravdan? Je li sve korištene metode podešavanja poslužitelja? Poznato je da je rad sa konfiguracijskim parametrima i promjenom njihovih zadanih vrijednosti sposobna poboljšati performanse i druge karakteristike ovog sistema. Među tim opcijama konfiguracije, SQL konfiguracija ima jednu opciju s puno pitanja, to je opcija - maks. Stupanj paralelizma (DOP) - evo o tome.

Maksimalni stepen opcije paralelizma (DOP) određuje broj niti koji SQL Server može paralerirati zahtjev i znači broj korištenih server. Zadani parametar je 0 - maksimalni stupanj paralelizma. Na primjer, ako imate 24 kernela - tada će vrijednost "maks stupnja paralelizma" biti jednaka 24, a optimizator, ako ga smatra potrebnim, može koristiti sve procesore za izvršavanje jedne upute, odnosno upita će biti paralelni sa 24 potoka. Za većinu slučajeva ovo je dobro, ali ne za sve. Također, ne uvijek dobro, koristeći vrijednost ovog zadanog parametra. Konfiguriranje ovog parametra možda će biti potrebno, na primjer, u sljedećoj situaciji: Na primjer, imamo aplikaciju u kojoj svi zaposleni daju informacije o svakodnevnom poslovanju, a u određenom vremenskom periodu svaki korisnik vrši zahtjev kojim se nanosi zahtjev Izvještaj o svim korisničkim operacijama za određeno vremenski prekid. Prirodno, ako je vremenski razmak velik, ovaj će se upit biti izvršen duže vrijeme i, prilikom instaliranja DOP-a prema zadanim postavkama, poduzet će sve dostupne procesore, koji će prirodno utjecati na rad drugih korisnika. Slijedom toga, promjena vrijednosti DOP-a, možemo bez promjene upita u mestu za povećanje vremena odziva SQL servera od ostalih korisnika.
MS preporučuje postavljanje vrijednosti na sljedeći način:

Postavljanje parametra na TSQL cjelokupnoj za server:

Exec sp_configure "Maksimalni stepen paralelizma", 4; Rekonfiguriranje.

Ovu vrijednost možete postaviti i za određeni TSQL upit:

Koristite AdventureWorks2008R2; Idite odabir produced, ordenqty, suma (postavljanje) kao totalfrom prodaje.salesorderdetail u kojem jedinice< $5.00 GROUP BY ProductID, OrderQty ORDER BY ProductID, OrderQty OPTION (MAXDOP 2); GO

U ovom primjeru, "HINT" MAXDOP mijenja zadanu vrijednost maks. Stupnja paralelizma parametra do 2. Pogledajte trenutnu postavku može biti:

Exec sp_configure "Prikaži napredno", 1; Rekonfigurisati; EXEC SP_Configure "Maksimalni stupanj paralelizma"

Sada da vidimo kako se utječe ova vrijednost brzine izvršenja upita. Da bi se ispitni upit napisan, duže vrijeme dodajte još jedan izbor. Zahtjev će steći sljedeći obrazac:

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

Na mojoj testiranju, vrijednost "Maks. Stupanj paralelizma" prikazuje se u 0. MSSQL pokreće stroj sa 4 jezgrenim procesorom. Provodio sam niz eksperimenata sa različitim vrijednostima MAXDOP-a: jednako 1 - bez paralelizacije upita; jednak 2 - koristeći samo 2 jezgre; Jednako 4 - koristeći sve i bez nagovještaja za određivanje opcije koja koristi zadani nastavak. Da bi se dobila statistika izvršenja, zahtjev mora biti uključen u skupinu postavljenog statistike o opciji, kao i omogućuje dugme za prikaz upita u upravljanju u menadžmentu. Da bi se usečio dobijene rezultate, obavljao sam svaki upit u ciklusu 3 puta. Rezultati se mogu vidjeti u nastavku:

Odaberite DT.Productid, DT.orderqty, suma (DT.linetotal) kao ukupno iz prodaje.salesorderDetail DT (odaberite * iz prodaje.SaleSordetail u kojem jedinice< $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.

U pogledu upita jasno je da se prilikom instaliranja nagovještaja (Maxdop 1) upit izveden bez paralelizacije. Prosječno vrijeme izvršenja upita 45925.66 ms

Odaberite DT.Productid, DT.orderqty, suma (DT.linetotal) kao ukupno iz prodaje.salesorderDetail DT (odaberite * iz prodaje.SaleSordetail u kojem jedinice< $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.

Prilikom postavljanja nagoveštaja (MAXDOP 2) upit je izveden paralelno sa 2 CPU-a, može se vidjeti na broju izvršenja u pogledu izvršenja upita. Prosječno vrijeme izvršenja upita 27054.33 ms

Odaberite DT.Productid, DT.orderqty, suma (DT.linetotal) kao ukupno iz prodaje.salesorderDetail DT (odaberite * iz prodaje.SaleSordetail u kojem jedinice< $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.

Prilikom postavljanja nagoveštaja (MaxDOP 4), upit je izveden paralelno sa 4 CPU-a. Prosječno vrijeme izvršenja upita 24735.33 ms

Odaberite DT.Productid, DT.orderqty, suma (DT.linetotal) kao ukupno iz prodaje.salesorderDetail DT (odaberite * iz prodaje.SaleSordetail u kojem jedinice< $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.

zahtjev je izveden paralelno, kao i 4 CPU-a. Prosječno vrijeme upita 24357.33ms

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

Svrha: Ispitajte učinak SQL paralelizma na rad sa zahtjevima 1c

Literatura:

Ispitno okruženje:

· Windows Server 2008 R2 Enterprise

· MS SQL Server 2008 R2

· 1C Enterprise 8.2.19.90

Slika 1. SQL Svojstva "Općenito"


Slika 2. SQL Svojstva "Advandosed"

Instrumenti:

· SQL PROFILER SERVER

· 1c traži konzola

Zahtjev za testiranje:

Izabrati

AK. Ime kao ime

Od

Registriranje. Klasifikator pritiska kao AK

Interna veza Registriranje. Klasifikator pritiska kao AK1

Autor Ac.KOD \u003d AK1.KOD

Priprema:

Pokrećemo profilar SQL Server, postavite vezu, označite događaje i stupce kao što je prikazano na slici 3.


Slika 3. Svojstva u praksu

Instalirajte izbor za našu bazu podataka


Slika 4. Bazni filter

Smanjenje:

· Maksimalno stupanj paralelizma - MDOP

· Sjajni prag za paralelizam - trošak

Ispitivanje plana sekvencijalnog zahtjeva (MDOP \u003d 1)


Slika 5. Zahtevajte konzolu - Vrijeme performansi 20 sek.

SQL Server "Maksimalni stupanj paralelizma" je postavljen na 1 (bez paralelizma). Gledamo rezultat u profiliru (Sl.6)


Slika 6. Plan sekvencijalnog zahtjeva

SQL Server formirao je redovan plan zahtjeva, dok: ukupni učitavanje CPU \u003d 6.750 (i), a vrijeme za izvršenje upita \u003d 7,097 (s)

Ispitivanje plana paralelnog zahtjeva (MDOP \u003d 0, COST \u003d 5)

Transfer SQL server u paralelizam (u SQL upitu):

Koristite master;

Exec Sp_configure "Prikaži naprednu opciju", 1;

Ponovo konfigurirati s prevladavanjem.

Koristite master;

exec sp_configure "Maksimalni stupanj paralelizma", 0;

Ponovo konfigurirati s prevladavanjem.

Izvesti isti upit (slika 7)


Slika 7. Zahtjevi za konzole - Vrijeme izvršenja 16 sec.

Provjerite rezultat u profilima (slika 8)


Slika 8. Paralelni plan zahtjeva

SQL Server Ovaj put je formirao paralelni plan upita, dok ukupno učitavanje CPU \u003d 7,905 sekundi, a trajanje upita \u003d 3,458 sekundi

Ispitivanje redoslijednog plana zahtjeva (MDOP \u003d 0, COST \u003d 150)

Pokušat ćemo se riješiti paralelnog plana pomoću parametra "Troškovi za paralelizam". Prema zadanim postavkama, parametar je postavljen na 5. U našem slučaju, iz formiranja paralelnog plana bilo je moguće riješiti 150 (u SQL upitu):

Koristite master;

exec sp_configure. "Troškovi praga za paralelsm", 150 ;

Provjerite izvršenje upita u ovim uvjetima (Sl. 9)

Slika 9. Zahtjevi za konzole - Vrijeme izvršenja 20 sek.

Provjerite rezultat u profiliru (Sl. 10)


Slika 10. Plan sekvencijalnog zahtjeva.

SQL Server formirao je redoslijedni plan zahtjeva. Ukupno utovarivanje CPU \u003d 7,171 sekundi, vrijeme izvršenja upita \u003d 7, 864 sekundi.

Zaključci:

· Izvođenje testnog upita u 1c Enterprise okruženju pomoću SQL poslužitelja Paralelnog plana Plan pruža značajan pojačanje performansi u odnosu na sekvencijalni plan (16 sec. Protiv 20 sekundi - dobitak 4 sek.)

· Izvršite testni upit SQL serverom kada koristite planu paralelnog zahtjeva potrebno je dva puta brže nego kada koristite redovni plan zahtjeva (3,5 sek. Protiv 7,1 sec.)

· Paralelizam SQL servera ne može se podesiti ne samo da se koristi MDOP parametar, već i parametar "Troškovi praga za paralelizam"

  • Udžbenik

Ovaj je priručnik dizajniran za početnike koji traže jednostavan priručnik na ruskom za ugradnju engleska verzija SQL Server 2012, koji će se koristiti za upotrebu za SharePoint 2013.
Ovaj članak nije za profesionalce.

Sav rad je podijeljen u 3 faze:

  • Instaliranje SQL Server 2012
  • Postavljanje maks. Stupnja postavke konfiguracije paralelizma
  • Podešavanje ispravnog računDizajniran za instaliranje SharePoint 2013
Takođe u članku opisuje proces microsoftove instalacije.Neto okvir. 3.5 u MS Okoliš Windows server Standard za 2012. godinu R2.

PAŽNJA: Pod rezom brojne slike!

Instaliranje SQL Server 2012

1. Prije instalacije provjerite ima li dovoljno slobodnog prostora na tvrdom disku (u mom slučaju, potrebno je 2,7 GB).
Nakon pokretanja distribucije odaberite stavku " Instalacija"U levom meniju, onda" kliknite "Artikl" Novi SQL Server Samostalni ili dodajte funkcije postojećoj instalaciji":

2. Pokrenite čarobnjaka za instalaciju. To će provjeriti. Možete kliknuti na tipku "Prikaži detalje" i pogledajte detaljan izvještaj:

3. Detaljni izveštaj. Pritisnite tipku "OK":

4. Unesite ključ proizvoda i pritisnite tipku "Sljedeće":

5. Slaže se sa uvjetima licence ugovora.
Da to učinim, stavite krpelj " Prihvaćam licencne uvjete

6. Na koraku uloga za postavljanje odaberite prvu stavku " Instalacija funkcije SQL Server"Pritisnite tipku" Next ":

7. U koraku "Izbor značajki" slavi " Usluge motora baze podataka", "Alati za upravljanje - Basic"I" Alati za upravljanje - kompletno". Zatim pritisnite tipku" Dalje ":

8. Tada će instalacijski program izvršiti još jedan ček. Možete kliknuti na tipku "Prikaži detalje" i pogledajte detaljan izvještaj:

9. Detaljan izveštaj. (U ovoj fazi sam imao grešku u "Microsoft .NET Framework 3.5 je instaliran ..." Pravilo. O ovome u nastavku). Pritisnite tipku "Next":

10. U koraku "Konfiguracija instancije" morate konfigurirati instancu usluge SQL Server.
Ponavljam da je ovaj članak namijenjen početnicima. Stoga pretpostavljamo da SQL Server nije instaliran na vašem poslužitelju, što znači da ćete ostaviti sve zadane postavke. Pritisnite tipku "Next":

11. Na ovom koraku čarobnjak za instalaciju prikazuje zahtjeve za prostor na disku. Pritisnite tipku "Next":

12. Na korak konfiguracije servera morate navesti račun za uslugu " Motor baze podataka SQL Server"Nakon ispunjavanja polja" Naziv računa "i" Lozinka "pritisnite tipku" Sljedeće ":

13. Na koraku "Konfiguracija baze podataka" dovoljno je dodavati trenutnog korisnika na administratore SQL Server. Da biste to učinili, kliknite gumb "Dodaj trenutni korisnički", a zatim kliknite gumb "Dalje":

14. U sljedećem koraku pritisnite tipku "Next":

15. Zatim, čarobnjak za instalaciju ponovo izvršava ček i prikazuje svoje rezultate. Pritisnite tipku "Next":

16. U koraku "spreman za instaliranje", čarobnjak će prikazati sažetke informacija. Ovdje morate kliknuti gumb "Install":

17. Nakon završetka instalacije, prikazuju se informacije o generiranim operacijama:

18. Nepotrebne u ovoj fazi da biste ponovo pokrenuli računar. U nekim slučajevima (na primjer, prilikom instaliranja Microsoft .NET Framework 3.5), sam čarobnjak za instalaciju prikazuje prozor s prijedlogom za ponovno pokretanje računara. Ne odbijajte.

Postavljanje maks. Stupnja postavke konfiguracije paralelizma

Prema zadanim postavkama, vrijednost parametra "maks. Stupnja paralelizma" je 0.
SharePoint 2013 zahtijeva da ovaj parametar bude jednak 1.
Lako je popraviti!

1. Pokretanje Microsoft SQL Server Studio za upravljanje (Start - Svi programi - Microsoft SQL Server 2012 - Studio za upravljanje SQL Server).

2. Na ekranu veze na server kliknite gumb "Connect".

3. Desnom tipkom miša kliknite na svoj server u prozoru " Objekt Explorer."I odaberite" Nekretnine.":

4. U prozoru Svojstva poslužitelja koji se otvara u lijevom meniju, odaberite stranicu " Napredan"I napravite listu svojstava na dnu ekrana. Podesite vrijednost parametra Maksimalni stepen paralelizma"In 1 i kliknite "OK":

5. Ne zatvarajte studio za upravljanje SQL Server, doći će vam dobro.

Postavljanje prava na račun za postavljanje SharePoint 2013

Račun u kojem se u ime instalacije SharePoint 2013 mora imati povećana prava na SQL serveru.
Ovaj se račun preporučuje davanje sljedećih uloga:
  • dbcreator
  • securityAdmin.
  • javni
1. U studiju za upravljanje SQL serverom u prozoru " Objekt Explorer."Proširi stavku" Sigurnost". Zatim desnom tipkom miša kliknite na poen" Logins."I odaberite" Nova prijava.":

2. U polju "Naziv za prijavu" unesite ime domena Račun iz kojeg planirate instalirati i konfigurirati SharePoint 2013.

3. U lijevom meniju odaberite stranicu " Uloge servera."I provjerite ulogu" DBCreator "i" SecurityAdmin ", a također provjerite je li" javna "uloga već obeležena. Zatim kliknite" OK ":

Sada je SQL server spreman za instalaciju SharePoint 2013.

Instaliranje Microsoft .NET Framework 3.5 u MS Windows Server 2012 R2 Standart

U koraku broj 9 poantu " Instaliranje SQL Server 2012"Imao sam grešku: nije bio instaliran .NET Framework 3.5.
Da biste riješili ovaj problem, moraju se izvesti sljedeći koraci:

1. Morate otvoriti konzolu " Menadžer servera.".

2. U lijevom meniju odaberite stavku "Nadzorna ploča".

3. U sredini prozora kliknite na stavku "Dodaj uloge i funkcije".

4. U magistru koji se otvara, preskočite "prije nego što započnete".

5. U koraku "Tip instalacije" odaberite stavku " Instalacija zasnovana na ulozi ili značajku". Pritisnite tipku" Next ".

6. U sljedećem koraku ostavite sve po zadanim postavkama i pritisnite tipku "Dalje".

7. Preskočite korake "Server uloge" klikom na gumb "Dalje".

8. U koraku "funkcije" slavimo potvrdni okvir ".NET Framework 3.5 funkcije". Pritisnite tipku "Next".

9. Nakon završetka instalacijskog postupka možete zatvoriti čarobnjaka "Dodaj čarobnjake" i čarobnjaka.

10. Spremni!

Sve dobro i mirno nebo iznad glave!

P.S. Sretan dan kosmonautike!

Maksimalni stupanj paralelizma (DOP) - Dodatna opcija konfiguracije SQL Server, koja je povezana s mnogim pitanjima i koji su posvećeni mnogim publikacijama. U ovom je članu njegovog bloga autor nada da će napraviti malo jasnoće da ova opcija čini i kako ga koristiti.
Prvo, autor bi želio razlikovati sve sumnje u činjenicu da navedeni opcija postavlja koliko procesora može koristiti SQL Server prilikom servisiranja više veza (ili korisnika) - nije tako! Ako SQL Server ima pristup četiri neaktivna procesora, a konfiguriran je za korištenje svih četiri procesora, koristit će sva četiri procesora, bez obzira na maksimalni stupanj paralelizma.
Pa šta ova opcija daje? Ova opcija postavlja maksimalni broj procesora koji SQL Server može koristiti za jedan zahtjev. Ako se zahtjev za SQL server mora vratiti velika zapremina Podaci (mnogi zapisi), ponekad ima smisla paralelirati, provaliti na nekoliko malih zahtjeva, od kojih će svaki vratiti podskup redaka. Dakle, SQL Server može koristiti više procesora, a samim tim, na višeprocesorskim sustavima, veliki broj zapisa cjelokupnog upita potencijalno se može vratiti brže nego na jednoprocesorskom sustavu.
Mnogo je kriterija koji se moraju uzeti u obzir prije okidača SQL Server "Intra Query paralelizam" (razbijanje zahtjeva za nekoliko potoka), a ovdje nema detalja. Možete ih pronaći u Bolu, tražeći frazu "stepen paralelizma". Kaže da se odluka o paralelizaciji zasniva na pristupačnosti memorijskog procesora i, posebno, na dostupnosti samih procesora.
Dakle, zašto moramo razmišljati putem upotrebe ove opcije - jer, ostavljajući ga u zadanoj vrijednosti (sama SQL Server odlučuje o paralelizaciji), ponekad možete dobiti neželjene efekte. Ovi efekti izgledaju ovako:

    Paralelni zahtjevi su sporiji.

    Vrijeme izvršenja zahtjeva može postati nepravedno, a može nepravilno korisnici. Vrijeme izvršenja može se promijeniti jer:

      Zahtjev može ponekad paralelno, a ponekad ne.

      Zahtjev se može blokirati paralelnim zahtjevom ako su procesori preopterećeni prije toga.

Prije nego što nastavimo, autor bi želio primijetiti da nema posebne potrebe zaroniti u unutrašnju organizaciju paralelizma. Ako ste zainteresirani za ovo, možete pročitati članak "Paralelna prerada upita" u knjigama u knjigama, u kojoj se ove informacije postavljaju detaljnije. Autor vjeruje da postoje samo dvije važne stvari koje biste trebali znati o unutrašnjoj organizaciji paralelizma:

    Paralelni zahtjevi mogu generirati više niti nego što je navedeno u opciji "MAX stupanj paralelizma". DOP 4 može generirati više dvanaest niti, četiri za zahtjev i dodatne potoke koji se koriste za sortiranje, potoke, jedinice i sklopove itd.

    Paralelizacija zahtjeva može izazvati različite šljoke za čekanje sa CXpacket-om ili 0x0200. To se može koristiti za pronalaženje tih pauka koji su u stanju pripravnosti kada su paralelne operacije i imaju u Sysprocess Waitype: cxpacket. Da bi se olakšao ovaj zadatak, autor nudi korištenje pohranjene procedure u svom blogu: Track_WaitStats.

I tako da se "zahtjev može izvesti sporije kada se paralelira" zašto?

    Ako sistem ima vrlo slabu Širina pojasa Diskovne podsisteme, zatim prilikom analize zahtjeva, njegova raspadanja može se izvesti duže nego bez paralelizma.

    Mogući blokovi podataka ili blokiranje raspona podataka za procesor koji generira drugi koji se koristi paralelno i pokrenut kasniji proces, itd.

    Ako nema indeksa za predikat, što dovodi do skeniranja tablice. Paralelni rad u okviru zahtjeva može sakriti činjenicu da će zahtjev završiti mnogo brže s dosljednim planom izvršenja i s ispravnim indeksom.

Iz svega toga slijedi preporuka za provjeru izvršenja upita bez paralelizma (DOP \u003d 1), to će pomoći u prepoznavanju mogućih problema.
Gore navedeni učinci paralelizma, sami bi vas trebali izvući da interna mehanika paralelizacije zahtjeva nije prikladna za upotrebu u OLTP aplikacijama. To su takve aplikacije za koje se promjena vremena izvršenja može iritirati korisnike i za koje se poslužitelj istovremeno služi mnogim korisnicima vjerovatno neće odabrati planu paralelnog izvršenja zbog ovih aplikacija Profil opterećenja procesora.
Stoga će, ako ćete koristiti paralelizam, tada će najvjerovatnije biti potreban za zadatke za vađenje podataka (skladište podataka), podršku za donošenje odluka ili sustava izvještavanja, gdje ih nema mnogo zahtjeva, ali ih nema mnogo zahtjeva Snažan server s velikim količinama operativne memorije.
Ako se odlučite koristiti paralelizam, koja vrijednost treba biti instalirana za DOP?. Dobra praksa za ovaj mehanizam je da ako imate 8 procesora, a zatim instalirajte DOP \u003d 4, a to će sa velikim mjerom vjerojatnosti biti optimalna instalacija. Međutim, nema garancije da će raditi. Jedini način da se uvjerite da je ovo testiranje različitih vrijednosti za DOP. Pored ovoga, autor je želio ponuditi svoje, na osnovu empirijskih zapažanja Vijeća, nikada ne postavljajući ovaj broj više od polovine broja procesora koji su na skladištu. Ako je autor imao procesore manji od šest, postavio bi DOP u 1, što jednostavno zabranjuje paralelizaciju. Mogao bi napraviti izuzetak ako ima bazu podataka koja podržava proces samo jednog korisnika (neke tehnologije ekstraranja podataka ili zadataka izveštavanja), u ovom slučaju, u ovom slučaju bit će moguće instalirati DOP u 0 (zadanu vrijednost) koja Omogućuje SQL Serveru da donese odluku o potrebi da paralelizira upit.
Prije dovršetka članka, autor je želio upozoriti vas na činjenicu da paralelno stvaranje indeksa ovisi o broju koji instalirate za DOP. To znači da ćete ga možda želite promijeniti u trenutku kreiranja ili ponovnog stvaranja indeksa da biste povećali performanse ove operacije, a naravno, možete koristiti MaxDop sazorni upit, što vam omogućava da zanemarite vrijednost u Konfiguracija i može se koristiti u minimalnom satu za teret.
Konačno, vaš zahtjev može usporiti kada se paralelira zbog grešaka, pa provjerite je li zadnji servisni paket instaliran na vašem poslužitelju.

Kreirajte proc Track_WaitStats (@num_samples int \u003d 10 , @ CALLUSNUM INT \u003d 1 @ Kašnjenje Nvarchar ( 10 ) \u003d "Minuta") AS - T. Davidson - Ovaj pohranjeni postupak je predviđen \u003d kao što je \u003d bez garancija, - I nema nikakvih prava. - Upotreba uključenih uzoraka skripta podliježu uvjetima - naveden na http://www.microsoft.com/info/cpyright.htm - @num_samples je broj vremena za snimanje čekanja, - Default je 10 puta 10 puta. Zadani interval kašnjenja je 1 minut - Odgoda je interval odgode. Odgoda specificira da li. - Interval kašnjenja je minuta ili sekundi - Kreirajte tablicu čekanja ako ne postoji, u suprotnom skraćuje Postavite noću nanošenje ako ne postoji (odaberite 1 Od sisobjects gdje je ime \u003d "waitstats") stvoriti tablicu čeka (Varchar ( 80 ), Zahteva numerički ( 20 ,1 ), Numerički ( 20 ,1 ), Numerički ( 20 ,1 ), Sada DateTime Zadatak Getdate ()) Ostalo skraćeno stol sa čekanjama DBCC SQLPERF (WaitStats, Clear) - Očistite WaitStats Progladite @i int, @ kašnjenje Varchar (kašnjenje) 8 ), @ Dt varchar ( 3 ), @ Sada DateTime, @ TotalWait Numeric ( 20 ,1 ), @ Endmetime datetime, @ begintime datetime, @ hr int, @ min int, @ sec int select @i \u003d 1 Odaberite @DT \u003d SLUČAJ Niži (@DelayType) Kada "MINUTE" kada "minut" tada "M" kada je "M" kada "mi" onda "M" Kada je "M", tada "M" kada je "sekundi" tada "S" kada je "S" "S" kada "sec" tada "s" kad je "s" kada "s" "s" endom " Završavanje kašnjenja ako @DT ne u ("s", "m") započnite print "Molimo vas da odložite kašnjenje tipa e.g. sekundi ili minuta" Povratni kraj ako @DT \u003d "s" započnite odabir @sec \u003d @ kašnjenje% 60 Odaberite @min \u003d cast ((@delaynum / 60 ) Kao int) odaberite @hr \u003d cast ((@min / 60 ) Kao int) odaberite @min \u003d @ min% 60 Kraj ako @DT \u003d "M" započnite odabir @sec \u003d 0 Odaberite @min \u003d @ kašnjenje% 60 Odaberite @hr \u003d cast ((@delaynum / 60 ) Kao int) kraj Select @Delay \u003d desno ("0" + pretvori (Varchar ( 2 ), @ HR), 2 2 ), @ min), 2 ) + ":" + + Taino ("0" + pretvori (Varchar ( 2 ), @ Sec), 2 ) ako @hr\u003e 23 ili @min\u003e 59 ili @sec\u003e 59 Započnite odabir. "HH: MM: SS Odgoda vremena ne može\u003e 23:59:59" Odaberite "Odgodni interval i tip:" + Pretvori (Varchar ( 10 ), @ OdgovorNum) + "," + @DelayType + "pretvara se na" + @Delay povratni kraj dok (@i<= @num_samples) begin insert into waitstats (, requests, ,) exec ("dbcc sqlperf(waitstats)" ) select @i = @i + 1 WaitFor Odgoda @Delay End --- Kreirajte Izvještaj sa čekanjama Execute get_waitStats --//--//--//--//--//--//--//--//--//-//--//--//--//--//--//--//--//--/ Stvorite proc get_waitstats kao - Ovaj pohranjeni postupak je predviđen \u003d kao što je \u003d bez garancija i - Nema nikakvih prava. - Upotreba uključenih uzoraka skripta podložna su navedenim uvjetima - na http://www.microsoft.com/info/cpyright.htm. -- - Ovaj prob će kreirati Izvještaj WAOKESTATS-a uvrštavajući tipove čekanja - procenat - može se pokrenuti kada Track_WaitStats pogađa Set nocount na deklare @now DateTime, @ TOTALWAIT NUMERIC ( 20 ,1 ), @ endtime datetime, @ begintime datetime, @ hr int, @ min int, @ sec int Select @ wapdam (sada), @ begintime \u003d min (sada), @ wandStime \u003d " Ukupno " --- oduzmi čekanje, spavanje i resurse_queue iz ukupno Odaberite @Totalwait \u003d suma () + 1 Od čekate gdje ne ("Čekaj SFOR", "SLEEP", "Resource_Queue", "Ukupno", "*** Ukupno ***") i sada \u003d @now - Umetnite podešene iznose, rang po postotku silazno Izbrišite WaitStats gdje \u003d "*** Ukupno ***" i sada \u003d @now ubacite u WAITSTATS Odaberite "*** Ukupno ***", 0 , @ TotalWait, @ TotalWait, @ Sad Select ,, postotak \u003d cast ( 100 * / @ TotalWait kao numerički ( 20 ,1 )) od čekanja u kojem ne ("Waitfor", "Sleep", "Resource_Queue", "Ukupno") i sada \u003d @now redoslijed po postotku Desc

U ovom ćemo postu razgovarati samo o MS SQL serveru. Ako idete na "Isprobajte sreću" da biste koristili 1c s Oracleom, DB2, Postgre vam ove informacije će biti beskorisne. Ali morate shvatiti da u 1c postoje prvenstveno stručnjaci na MS SQL serveru. Stručnjaci za DB2 izgledaju napori iz IBM-a. Možete dugo se raspravljati o dobrom ili lošem, ovaj DBMS je važan, jedan, najviše "glatki" 1C radi s MS SQL serverom. Sudeći po najnovijim porukama sa "prednjim" više ili manje pristojnim radom sa DB2. Iako sam lično imao iskustvo postavljanja 1C-a za rad sa DB2 više u verziji 8.1 - sve je bilo nekako ne baš. U svakom slučaju, izbor drugog DBMS-a trebao bi biti jasno obrazložen - ili opcije koje nisu u MS SQL (klaster sa balansiranjem opterećenja, rešetka itd.) Ili financijama (Oracle već kupljena) ili platforma (sve na Linuxu) .

Dakle, kako biste trebali učiniti sa MS SQL serverom:

1) Konfigurirajte minimalnu i maksimalnu količinu memorije. Minimum je polovina sistemske memorije. Maksimalni - memorijski sistem bez 2GB. To se vrši putem upravljačkog studija - u svojstvima servera:

2) Ako prioritet nije instaliran na kartici procesor - morate instalirati

3) maksimalni stepen paralelizma u 1.

4) Uključite SQL Server agenta, prilagodite poštu baze podataka - tamo nema ništa teško, neću detaljno opisati.

5) Prilagodite planove usluga:
Općenito:
a) Ažurirajte statistiku - svaka 2 sata
b) DBCC Freeproccache - svaka 2 sata
Za svaku bazu podataka:
a) puna sigurnosna kopija
b) Potpuna sigurnosna kopija
c) Defragmentacija indeksa - svaki dan
d) indeksi perestroike - noću vikendom
e) Provjera integriteta baze - jednom mjesečno noću vikendom

6) Preporučujem da instalirate model oporavka za svaku bazu podataka (u Svojstva) kao jednostavnom. Ako nemate sistem 24/7 i manje od 1000 korisnika u bazi, ne postoji klaster tolerancije grešaka i niste potpisali SLA u kojoj preuzmemo izlaz iz bilo koje opreme za vraćanje podataka do sekunde (a ne od posljednje sigurnosne kopije) Ova preporuka će biti razumna. Inače ćete vrlo brzo dugo i konvulzivno odražavati gdje će se roditi trupcirati

7) Uklonite tempdb bazu podataka iz uobičajenih baza podataka na drugi disk - čak i ako morate konfigurirati raid nizu i smanjiti njegovu performanse. Inače, 1 korisnik će moći paralizirati posao svih ostalih. Ako imate hardver akceleratora umjesto tvrdog diska, naravno, naravno ne možete odvojiti i stavljati tempdb, ali samo je ako postoji

8) Podesite bilo koje sredstvo za nadgledanje - na primjer, sviđa mi se reflektor http://www.quest.com/spotlight-on-sql-server-enterprise/

9) Označite se sa Microsoftom najboljeg analizera za najbolju praksu - http://www.microsoft.com/download/en/details.aspx?id\u003d15289 - prekrasan alat koji ne pomaže ne samo u postavkama, već i sa rješavanjem mnogih problema.

Kratko za ono što smo sve radili:

1) memorija. Minimalna vrijednost će vas jednostavno spasiti od "Glitches" kada SQL Server za neke druge poznate razloge ne koristi svu memoriju dostupnu na njemu. Mora da jede sve! Maksimalna vrijednost uštedjet će vas iz zamjene u slučaju da će istog optimizatora optimizatora SQL Server-a odlučiti da će ga još uvijek povrijediti ....

3) Vrlo važno - IMMO treba staviti u 1 u sve transakcijske sustave. Prvo, ovo sprečava dio brava između različitih procesa koji pokušavaju izvršiti 1 zahtjev, poštuju nas, štiti nas od nekih "čudnih" grešaka. Drugo ... 1 "Kill" zahtev moći će izvući sve resurse poslužitelja, što je nešto istinito u odnosu na ostatak korisnika sistema. Parametar određuje da li se 1 zahtjev može obraditi kao više procesorskih jezgra.

5) O statistici i čišćenju procesne predmemorije - ovo je "na saslušanje" i evo često zaboravljamo na reyndeksaciju. U međuvremenu, ovaj je postupak prilično važan, posebno uz povećanje obima baze, njegova važnost se povećava. Ponekad se do 60% performansi izgubi na fragmentaciji indeksa.

7) Ako postoji hardverski akcelerator ili jednostavno 2 diska s različitim pristupnim brzinama, rekordno bih razmišljao o istaknutoj grupi datoteka u bazama podataka i dijeljenje pojedinačnih tablica na različite matrice diskova, s različitim vremenom za pristup. Uostalom, slažete se, pH "roba u skladištima" i referentnu knjigu "Skladištenje dodatnih informacija" 2 objekta zahtjeva za skladište koji je ukorijenjen. Nije potrebno pohranjivati \u200b\u200bsve datoteke i slike na brzu nizu u bazi podataka - možete ga odabrati na zasebnom, ne tako brzo, ali gdje postoji mnogo mjesta (a ne plašite se gomile datoteka za preuzimanje) način).