საინტერესო რამ მსოფლიოს მას, ინსტრუქციები და მიმოხილვები. პარალელიზმის მაქსიმალური ხარისხი - აირჩიეთ ოპტიმალური SQL ღირებულების პარალელიზმის მაქსიმალური ხარისხი

საიდუმლო არ არის, რომ ფიქრი SQL სერვერის კონფიგურაციის პრობლემების შესახებ, რომელიც დაკავშირებულია შესრულების ზრდასთან, IT ექსპერტები მათგან ყველაზე მეტად არჩევანს აპარატურის გაზრდის სასარგებლოდ აკეთებენ. მაგრამ ის ყოველთვის გამართლებულია? არის ყველა სერვერის კონფიგურაცია მეთოდი უკვე გამოიყენება? ცნობილია, რომ კონფიგურაციის პარამეტრების მუშაობა და მათი ნაგულისხმევი ღირებულებების შეცვლა შეუძლია ამ სისტემის შესრულების და სხვა მახასიათებლების გაუმჯობესებას. ამ კონფიგურაციის პარამეტრებს შორის, SQL კონფიგურაციას აქვს ერთი ვარიანტი ბევრი კითხვებით, ეს არის ვარიანტი - პარალელიზმის მაქსიმალური ხარისხი (DOP) - აქ არის ამის შესახებ და მოდით ვისაუბროთ ამის შესახებ.

პარალელიზმის მაქსიმალური ხარისხი (DOP) ვარიანტი განსაზღვრავს თემების რაოდენობას, რომელიც SQL Server- ს შეუძლია მოითხოვოს მოთხოვნის პარალელურად და ნიშნავს სერვერის პროცესორების რაოდენობას. ნაგულისხმევი პარამეტრი არის 0 - პარალელიზმის მაქსიმალური ხარისხი. მაგალითად, თუ თქვენ გაქვთ 24 ბირთვი - მაშინ "პარალელიზმის მაქსიმალური ხარისხის" ღირებულება იქნება 24 და ოპტიმიზატორი, თუ იგი აუცილებლად მიიჩნევს, შეუძლია გამოიყენოს ყველა პროცესორი, რომ შეასრულოს ერთი ინსტრუქცია, რომელიც არის, შეკითხვა 24 ნაკადს პარალელურად. უმეტეს შემთხვევაში, ეს კარგია, მაგრამ არა ყველასთვის. ასევე, ყოველთვის არ არის კარგი, ამ ნაგულისხმევი პარამეტრის ღირებულების გამოყენებით. ამ პარამეტრის კონფიგურაცია შეიძლება საჭირო იყოს, მაგალითად, შემდეგ ვითარებაში: მაგალითად, ჩვენ გვაქვს განაცხადი, რომელშიც ყველა თანამშრომელი ყოველდღიური ოპერაციების შესახებ ინფორმაციას აწვდის და, გარკვეულ პერიოდში, თითოეული მომხმარებელი ასრულებს მოთხოვნას, რომელიც აშენებს ანგარიშში ყველა მომხმარებლის ოპერაციის შესახებ გარკვეული დროის განმავლობაში. ბუნებრივია, თუ დრო გატაცება დიდია, ეს შეკითხვა შესრულდება დიდი ხნის განმავლობაში და, როდესაც DOP- ის ინსტალაციისას, მიიღებს ყველა შესაძლო პროცესორს, რომელიც ბუნებრივად იმოქმედებს სხვა მომხმარებლების საქმიანობაზე. შესაბამისად, DOP- ის ღირებულების შეცვლა, ჩვენ შეგვიძლია შეცვალოს ცვლილებების გარეშე შეკითხვაზე SQL Server- ის რეაგირების დრო სხვა მომხმარებლებისგან.
MS რეკომენდაციას აძლევს შემდეგნაირად:

პარამეტრის პარამეტრი TSQL- ზე სერვერზე:

"პარალელიზმის მაქსიმალური ხარისხი", 4; Reconfigure.

თქვენ ასევე შეგიძლიათ დააყენოთ ეს მნიშვნელობა კონკრეტული TSQL შეკითხვისთვის:

გამოიყენეთ AdventureWorks2008R2; აირჩიეთ პროდუქტი, ორდენი, თანხა (lineetal), როგორც ტოტალიზატორის გაყიდვები.< $5.00 GROUP BY ProductID, OrderQty ORDER BY ProductID, OrderQty OPTION (MAXDOP 2); GO

ამ მაგალითში, "მინიშნება" MaxDop ცვლის პარალელიზმის პარამეტრის მაქსიმალურ ხარისხს 2. მიმდინარე პარამეტრის ნახვა შეიძლება იყოს:

EXEX SP_CONFIGURE "აჩვენეთ მოწინავე", 1; რეკონსტრუქცია; EXEX SP_CONFIGURE "პარალელიზმის მაქსიმალური ხარისხი"

ახლა მოდი ვნახოთ, როგორ ეს მნიშვნელობა დაზარალდა შეკითხვის შესრულების მაჩვენებლით. იმისათვის, რომ გამოცდის შეკითხვაზე, ზემოთ ჩამოთვლილი, უფრო მეტი დრო, დაამატეთ სხვა. მოთხოვნა მიიღებს შემდეგ ფორმას:

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

ჩემი ტესტი მანქანა, ღირებულება "მაქსიმალური ხარისხი პარალელიზმის" არის ნაჩვენები 0. MSSQL იწყება მანქანა 4 Core პროცესორი. მე ვატარებდი ექსპერიმენტების სერიას სხვადასხვა Maxdop ღირებულებით: 1-ის ტოლია - შეკითხვის პარალელიზაციის გარეშე; ტოლია 2 - მხოლოდ 2 ბირთვით; თანაბარი 4 - გამოყენებით ყველა და გარეშე მინიშნება, რათა დადგინდეს ვარიანტი, რომელიც იყენებს default გაგრძელებაა. აღსრულების სტატისტიკის მისაღებად, მოთხოვნა უნდა მოიცავდეს კომპლექტი სტატისტიკის დროს ვარიანტი, ასევე საშუალებას მისცემს შეკითხვის გეგმის ჩვენება ღილაკს მენეჯმენტის სტუდიაში. მიღებული შედეგების მისაღწევად, მე შევასრულებ ყველა შეკითხვას ციკლში 3-ჯერ. შედეგები ჩანს ქვემოთ:

აირჩიეთ DT.ProductId, dt.orderqty, თანხა (dt.linetotal), როგორც სულ გაყიდვებისგან. Salesorderdetail DT, (SELECT * გაყიდვებისგან.< $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.

შეკითხვის თვალსაზრისით, ნათელია, რომ მინიშნება (MaxDop 1) ინსტალაციისას, შეკითხვა შესრულდა პარალელიზაციის გარეშე. საშუალო შეკითხვის აღსრულება დრო 45925.66 ms

აირჩიეთ DT.ProductId, dt.orderqty, თანხა (dt.linetotal), როგორც სულ გაყიდვებისგან. Salesorderdetail DT, (SELECT * გაყიდვებისგან.< $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.

მინიშნება (MaxDop 2) ინსტალაციისას, შეკითხვა შესრულდა 2 CPU- ების პარალელურად, ის ჩანს შეკითხვის აღსრულების თვალსაზრისით. საშუალო შეკითხვის აღსრულება დრო 27054.33 ms

აირჩიეთ DT.ProductId, dt.orderqty, თანხა (dt.linetotal), როგორც სულ გაყიდვებისგან. Salesorderdetail DT, (SELECT * გაყიდვებისგან.< $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.

მინიშნება მინიშნება (MaxDop 4), შეკითხვა შესრულდა 4 CPU- ების პარალელურად. შეკითხვის საშუალო შესრულების დრო 24735.33 MS

აირჩიეთ DT.ProductId, dt.orderqty, თანხა (dt.linetotal), როგორც სულ გაყიდვებისგან. Salesorderdetail DT, (SELECT * გაყიდვებისგან.< $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.

მოთხოვნა შესრულდა პარალელურად, ასევე 4 CPU- ში. საშუალო შეკითხვის დრო 24357.33ms

ბმულები: http://support.microsoft.com/kb/2023536

მიზანი: შეამოწმეთ SQL პარალელიზმის ეფექტი 1C- ის მოთხოვნით

ლიტერატურა:

ტესტის გარემო:

· Windows Server 2008 R2 Enterprise

· MS SQL Server 2008 R2

· 1C საწარმო 8.2.19.90

ფიგურა 1. SQL თვისებები "ზოგადი"


ფიგურა 2. SQL თვისებები "abused"

ინსტრუმენტები:

· SQL Server Profiler

· 1C მოთხოვნის კონსოლი

ტესტის მოთხოვნა:

არჩევა

Ak. სახელი სახელით

თითოეული

რეგისტრაცია. ზეწოლის კლასიფიკატორი, როგორც AK

შიდა კავშირი რეგისტრაცია. ზეწოლის კლასიფიკატორი AK1

AC.KOD \u003d AK1.KOD

მომზადება:

ჩვენ აწარმოებს SQL Server Profiler, მითითებული კავშირი, ნიშნის მოვლენები და სვეტები, როგორც ნაჩვენებია ფიგურა 3.


ფიგურა 3. კვალი თვისებები

დააინსტალირეთ შერჩევა ჩვენს მონაცემთა ბაზაში


ფიგურა 4. საბაზისო ფილტრი

შემცირება:

პარალელიზმის მაქსიმალური ხარისხი - MDOP

· პარალელიზმის ბარიერი - ღირებულება

ტესტირება რიგითი მოთხოვნის გეგმა (MDOP \u003d 1)


ფიგურა 5. მოთხოვნა კონსოლი - შესრულების დრო 20 წ.

SQL Server "პარალელიზმის მაქსიმალური ხარისხი" არის 1 (პარალელიზმის გარეშე). ჩვენ ვხედავთ შედეგს პროფილში (ნახ .6)


ფიგურა 6. რიგითი მოთხოვნის გეგმა

SQL Server ჩამოყალიბდა რიგითი მოთხოვნის გეგმა, ხოლო: სულ loading CPU \u003d 6,750 (s), და დრო აღსრულების შეკითხვის \u003d 7,097 (s)

პარალელური მოთხოვნის გეგმის ტესტირება (MDOP \u003d 0, ღირებულება \u003d 5)

გადარიცხვა SQL Server პარალელიზმის რეჟიმში (SQL შეკითხვაზე):

გამოიყენეთ ოსტატი;

Exec Sp_Configure "აჩვენეთ გაფართოებული ვარიანტი", 1;

Reconfigure ერთად override.

გამოიყენეთ ოსტატი;

exec Sp_Configure "პარალელიზმის მაქსიმალური ხარისხი", 0;

Reconfigure ერთად override.

შეასრულოს იგივე შეკითხვა (სურათი 7)


ფიგურა 7. კონსოლი მოთხოვნები - შესრულების დრო 16 წ.

შეამოწმეთ შედეგი პროფილში (სურათი 8)


ფიგურა 8. პარალელური მოთხოვნის გეგმა

SQL Server ამ დროს ჩამოყალიბდა პარალელური შეკითხვის გეგმა, ხოლო CPU \u003d 7.905 წამი, და შეკითხვის ხანგრძლივობა \u003d 3,458 წამი

ტესტირება რიგითი მოთხოვნის გეგმა (MDOP \u003d 0, ღირებულება \u003d 150)

ჩვენ შევეცდებით, მოვახერხოთ პარალელური გეგმის მოშორება "პარალელიზმისთვის" პარამეტრების შესაფასებლად "პარამეტრების გამოყენებით. ჩვეულებრივ, პარამეტრი არის მითითებული 5. ჩვენს შემთხვევაში, პარალელური გეგმის ჩამოყალიბებისგან, შესაძლებელი იყო 150 (SQL შეკითხვაზე) მოშორება:

გამოიყენეთ ოსტატი;

exec sp_configure. "ღირებულება ბარიერი პარალელები", 150 ;

შეამოწმეთ შეკითხვის აღსრულება ამ პირობებში (ნახ. 9)

ფიგურა 9. კონსოლი მოთხოვნები - აღსრულების დრო 20 წ.

შეამოწმეთ შედეგი პროფილში (ნახ .10)


ფიგურა 10. თანმიმდევრული მოთხოვნის გეგმა.

SQL Server ჩამოყალიბდა რიგითი მოთხოვნის გეგმა. სულ ჩატვირთვა CPU \u003d 7.171 წამი, შეკითხვის აღსრულების დრო \u003d 7, 864 წამი.

დასკვნები:

· 1 სთ-ის საწარმო გარემოში გამოცდის შეკითხვის განხორციელება SQL Server პარალელური გეგმის სერვერის გამოყენებით მნიშვნელოვან შესრულების მოგებას უწევს თანმიმდევრულ გეგმას (16 წ. 20 წამი - მოგება 4 წ.

· შეასრულეთ ტესტირების შეკითხვა SQL Server- ის მიერ პარალელური მოთხოვნის გეგმის გამოყენებით ორჯერ უფრო სწრაფად, ვიდრე რიგითი მოთხოვნის გეგმის გამოყენებით (3.5 წ. 7.1 წმ.

· SQL Server პარალელიზმი არ შეიძლება მორგებული არა მარტო MDOP პარამეტრის გამოყენებით, არამედ პარამეტრი "პარალელიზმისთვის"

  • გენელის

ეს სახელმძღვანელო განკუთვნილია დამწყებთათვის, რომელიც რუსულ ენაზე მარტივი სახელმძღვანელოს ეძებს ინგლისური ვერსია SQL Server 2012, რომელიც გამოყენებული იქნება გამოყენებული SharePoint 2013.
ეს სტატია არ არის პროფესიონალებისთვის.

ყველა სამუშაო დაყოფილია 3 ეტაპად:

  • ინსტალაცია SQL Server 2012
  • პარალელიზმის სერვერის კონფიგურაციის პარამეტრების მაქსიმალური ხარისხი
  • შექმნის უფლება ანგარიშიშექმნილია SharePoint 2013
ასევე სტატიაში აღწერს პროცესს microsoft დანადგარები.წმინდა ჩარჩო. 3.5 MS გარემოში Windows Server 2012 R2 სტანდარტული.

ყურადღება: დაჭრილი ბევრი სურათები!

ინსტალაცია SQL Server 2012

1. ინსტალაციის დაწყებამდე, დარწმუნდით, რომ მყარ დისკზე საკმარისი თავისუფალი ადგილია (ჩემს შემთხვევაში, 2.7 გბ).
განაწილების დაწყების შემდეგ აირჩიეთ პუნქტი " დაყენება"მარცხენა მენიუში, მაშინ" დააჭირეთ "პუნქტს" ახალი SQL Server Stand-Alone ან დაამატოთ ფუნქციები არსებული ინსტალაცია":

2. დაიწყე ინსტალაციის ოსტატი. ეს შეამოწმებს. თქვენ შეგიძლიათ დააჭიროთ "შოუ დეტალებს" ღილაკს და ნახეთ დეტალური ანგარიში:

3. დეტალური ანგარიში. დააჭირეთ "OK" ღილაკს:

4. შეიყვანეთ პროდუქტის გასაღები და დააჭირეთ ღილაკს "შემდეგი" ღილაკს:

5. ვეთანხმები სალიცენზიო შეთანხმების პირობებს.
ამის გაკეთება, დააყენა tick " მე ვეთანხმები ლიცენზიის პირობებს

6. კონფიგურაცია როლის ნაბიჯი, აირჩიეთ პირველი პუნქტი " SQL Server ფუნქცია ინსტალაცია"დააჭირეთ ღილაკს" შემდეგი "ღილაკს:

7. ნაბიჯი "მხატვრული შერჩევა" აღსანიშნავად " მონაცემთა ბაზის ძრავის მომსახურება", "მართვის ინსტრუმენტები - ძირითადი"და" მართვის ინსტრუმენტები - სრული"შემდეგ დააჭირეთ ღილაკს" შემდეგი "ღილაკს:

8. მაშინ ინსტალერი შეასრულებს სხვა შემოწმებას. თქვენ შეგიძლიათ დააჭიროთ "შოუ დეტალებს" ღილაკს და ნახეთ დეტალური ანგარიში:

9. დეტალური ანგარიში. (ამ ეტაპზე, მე მქონდა შეცდომა "Microsoft. NET Framework 3.5 დამონტაჟებულია ..." წესი. ამის შესახებ ქვემოთ). დააჭირეთ ღილაკს "შემდეგი" ღილაკს:

10. "ინსტანციის კონფიგურაციაში" ნაბიჯი, თქვენ უნდა დააკონფიგურიროთ SQL Server Service- ის მაგალითად.
მე ვიმეორებ, რომ ეს სტატია განკუთვნილია დამწყებთათვის. აქედან გამომდინარე, ჩვენ ვივარაუდოთ, რომ SQL Server არ იყო დამონტაჟებული თქვენს სერვერზე, რაც იმას ნიშნავს, რომ თქვენ დატოვებთ ყველა სტანდარტულ პარამეტრებს. დააჭირეთ ღილაკს "შემდეგი" ღილაკს:

11. ამ ნაბიჯით, ინსტალაციის ოსტატი აჩვენებს დისკზე მოთხოვნებს. დააჭირეთ ღილაკს "შემდეგი" ღილაკს:

12. სერვერის კონფიგურაციის ნაბიჯი, თქვენ უნდა მიუთითოთ დომენის ანგარიში სერვისისთვის " SQL Server მონაცემთა ბაზის ძრავა"მას შემდეგ, რაც" ანგარიშის სახელის "და" პაროლი "სფეროების შევსების შემდეგ დააჭირეთ ღილაკს" შემდეგი "ღილაკს:

13. "მონაცემთა ბაზის ძრავის კონფიგურაციის" ნაბიჯი, საკმარისია, რომ დაამატოთ მიმდინარე მომხმარებელი SQL Server Administrators- ზე. ამისათვის დააჭირეთ ღილაკს "დაამატეთ მომხმარებლის მომხმარებლის დამატება", შემდეგ დააჭირეთ ღილაკს "შემდეგი" ღილაკს:

14. მომდევნო ეტაპზე დააჭირეთ ღილაკს "შემდეგი" ღილაკს:

15. შემდეგი, ინსტალაციის ოსტატი კვლავ ახორციელებს შემოწმებას და აჩვენებს შედეგებს. დააჭირეთ ღილაკს "შემდეგი" ღილაკს:

16. ნაბიჯი "მზად არის ინსტალაციისთვის", ოსტატი გამოჩნდება შემაჯამებელ ინფორმაციას. აქ თქვენ უნდა დააჭიროთ ღილაკს "ინსტალაცია":

17. ინსტალაციის დასრულების შემდეგ, წარმოდგენილია ინფორმაცია წარმოებული ოპერაციების შესახებ:

18. ამ ეტაპზე ამ ეტაპზე კომპიუტერთან გადატვირთვა. ზოგიერთ შემთხვევაში (მაგალითად, Microsoft- ის ინსტალაციისას. NET Framework 3.5), ინსტალაციის ოსტატი თავისთავად ფანჯარაში გამოჩნდება კომპიუტერის გადატვირთვის წინადადებით. არ უარი თქვას.

პარალელიზმის სერვერის კონფიგურაციის პარამეტრების მაქსიმალური ხარისხი

ჩვეულებრივ, "პარალელიზმის მაქსიმალური ხარისხის" ღირებულება 0 არის 0.
SharePoint 2013 მოითხოვს, რომ ეს პარამეტრი 1-ის ტოლია.
ადვილია დაფიქსირება!

1. გაშვება Microsoft SQL Server Management Studio (დაწყება - ყველა პროგრამა - Microsoft SQL Server 2012 - SQL Server Management Studio).

2. სერვერზე ეკრანზე, დააჭირეთ "დაკავშირებას" ღილაკს.

3. მარჯვენა ღილაკით თქვენს სერვერზე ფანჯარაში " ობიექტის Explorer."და აირჩიეთ" Თვისებები.":

4. სერვერის თვისებების ფანჯარაში, რომელიც ხსნის მარცხენა მენიუში, აირჩიეთ გვერდი " Მოწინავე"ეკრანის ბოლოში თვისებების ჩამონათვალი. პარამეტრის ღირებულების მითითება პარალელიზმის მაქსიმალური ხარისხი" 1 და დააჭირეთ "OK":

5. არ დაიხურება SQL Server Management Studio, იგი მოვა მოსახერხებელი.

2013 წლის Sharepoint- ის პარამეტრების ანგარიშის უფლებების შექმნა

ანგარიშის სახელით, რომლის სახელიც Sharepoint 2013, უნდა გაიზარდოს SQL Server- ში.
ეს ანგარიში რეკომენდირებულია შემდეგი როლების მიცემა:
  • dbcreator
  • უშიშრად.
  • სახალხო
1. SQL Server Management Studio ფანჯარაში " ობიექტის Explorer."გაფართოების პუნქტი" უშიშროება"შემდეგ მარჯვენა ღილაკით წერტილი" Logins."და აირჩიეთ" ახალი შესვლა.":

2. "შესვლა სახელი" სფეროში, შეიყვანეთ დომენის სახელი ანგარიშზე, საიდანაც თქვენ აპირებთ SharePoint 2013- ის ინსტალაციისა და კონფიგურაციას.

3. მარცხენა მენიუში აირჩიეთ გვერდი " სერვერის როლები."და შეამოწმეთ" DBCreator "და" SecurityAdmin "როლი და ასევე დარწმუნდით, რომ" საზოგადოების "როლი უკვე აღინიშნება. შემდეგ დააჭირეთ ღილაკს" OK ":

ახლა SQL Server მზად არის ინსტალაციის SharePoint 2013.

Microsoft- ის ინსტალაცია. NET Framework 3.5 MS Windows Server 2012 R2 Standart

პუნქტის მე -9 პუნქტით " ინსტალაცია SQL Server 2012"მე მქონდა შეცდომა: ეს არ იყო დამონტაჟებული. NET Framework 3.5.
ამ პრობლემის მოსაგვარებლად, უნდა შესრულდეს შემდეგი ნაბიჯები:

1. თქვენ უნდა გახსნათ კონსოლი " სერვერის მენეჯერი.".

2. მარცხენა მენიუში აირჩიეთ "Dashboard" პუნქტი.

3. ფანჯრის ცენტრში, დააჭირეთ ღილაკს "დაამატეთ როლები და ფუნქციები".

4. სამაგისტრო, რომ გაიხსნა, გამოტოვოთ "სანამ დაიწყება".

5. "მონტაჟის ტიპი" ნაბიჯი, აირჩიეთ საქონელი " როლური ან ფუნქციის დაფუძნებული მონტაჟი"დააჭირეთ ღილაკს" შემდეგი "ღილაკს.

6. მომდევნო ნაბიჯში, დატოვეთ ყველაფერი და დააჭირეთ "შემდეგი" ღილაკს.

7. Skip "Server Roles" დაწკაპვით "შემდეგი" ღილაკს.

8. ნაბიჯი "თვისებები", ჩვენ აღვნიშნავთ "NET Framework 3.5 მახასიათებლები" ჩამრთველი. დააჭირეთ ღილაკს "შემდეგი" ღილაკს.

9. ინსტალაციის პროცესის დასრულების შემდეგ, შეგიძლიათ "დაამატოთ როლები და მახასიათებლები ოსტატი" ოსტატი.

10. მზად!

ყველა კარგი და მშვიდობიანი ცის ზემოთ თქვენი უფროსი!

P.S. ბედნიერი Cosmonautics დღე!

პარალელიზმის მაქსიმალური ხარისხი (DOP) - დამატებითი SQL Server კონფიგურაციის ვარიანტი, რომელიც დაკავშირებულია ბევრ კითხვასთან და ბევრ პუბლიკაციასთან არის დაკავშირებული. ამ სტატიაში მისი ბლოგი, ავტორი იმედოვნებს, რომ პატარა სიწმინდე, რომ ეს ვარიანტი აკეთებს და როგორ გამოვიყენოთ იგი.
პირველი, ავტორს სურს გააფართოვოს რაიმე ეჭვი იმ ფაქტს, რომ მითითებული ვარიანტი ადგენს რამდენი პროცესორი შეიძლება გამოიყენოს SQL Server როდესაც მომსახურების მრავალჯერადი კავშირები (ან მომხმარებლებს) - ეს ასე არ არის! თუ SQL Server- ს აქვს ოთხი უმოქმედო პროცესორების ხელმისაწვდომობა და კონფიგურირებულია ყველა ოთხი პროცესორის გამოყენება, ის გამოიყურება ოთხივე პროცესორს, მიუხედავად იმისა, რომ პარალელიზმის მაქსიმალური ხარისხი.
რა არის ეს ვარიანტი? ეს პარამეტრი ადგენს მაქსიმალური რაოდენობის პროცესორებს, რომ SQL Server- ს შეუძლია გამოიყენოს ერთი მოთხოვნა. თუ SQL Server- ის მოთხოვნა უნდა დაბრუნდეს დიდი მოცულობა მონაცემები (ბევრი ჩანაწერი), ზოგჯერ აზრი აქვს პარალელურად, რომელიც არღვევს რამდენიმე მცირე მოთხოვნას, რომელთაგან თითოეული მათგანი დაბრუნდება რიგების სუბსტრზე. ამდენად, SQL Server- ს შეუძლია გამოიყენოს მრავალჯერადი პროცესორები და, შესაბამისად, მრავალპროფილური სისტემებით, მთლიანი შეკითხვის დიდი რაოდენობა შეიძლება სწრაფად დაბრუნდეს, ვიდრე ერთი პროცესორული სისტემა.
არსებობს ბევრი კრიტერიუმი, რომელიც უნდა იქნას გათვალისწინებული SQL Server იწვევს "Intra შეკითხვის პარალელიზმის" (რამდენიმე ნაკადს მოითხოვს) და აქ დეტალურად არ არის. თქვენ შეგიძლიათ იპოვოთ ისინი Bol- ში, მოძებნეთ ფრაზა "პარალელიზმის ხარისხი". იგი აცხადებს, რომ პარალელიზაციის გადაწყვეტილება ეფუძნება მეხსიერების პროცესორების ხელმისაწვდომობას და, განსაკუთრებით, პროცესორების ხელმისაწვდომობას.
ასე რომ, რატომ უნდა ვიფიქროთ ამ პარამეტრის გამოყენების გზით - იმიტომ, რომ ეს ნაგულისხმევი მნიშვნელობით (SQL Server თავად გადაწყვეტს პარალელურად), ზოგჯერ შეგიძლიათ არასასურველი ეფექტი. ეს ეფექტები ასე გამოიყურება:

    პარალელური მოთხოვნები ნელია.

    მოთხოვნის შესრულების დრო შეიძლება გახდეს არაგონივრული, და მას შეუძლია არარეგულარული მომხმარებლები. აღსრულების დრო შეიძლება შეიცვალოს, რადგან:

      მოთხოვნა შეიძლება ზოგჯერ პარალელურად და ზოგჯერ არ არის.

      მოთხოვნა შეიძლება დაბლოკოს პარალელურად მოთხოვნით, თუ ეს პროცესორები გადატვირთულია.

სანამ ჩვენ გავაგრძელებთ, ავტორს სურს შეამჩნია, რომ პარალელიზმის შიდა ორგანიზაციაში არ არის აუცილებელი. თუ თქვენ დაინტერესებული ხართ, თქვენ შეგიძლიათ წაიკითხოთ სტატია "პარალელური შეკითხვის დამუშავების პროცესი" წიგნებში, სადაც ეს ინფორმაცია უფრო დეტალურად არის მითითებული. ავტორი მიიჩნევს, რომ არსებობს მხოლოდ ორი მნიშვნელოვანი რამ, რაც უნდა იცოდეთ პარალელიზმის შიდა ორგანიზაციის შესახებ:

    პარალელური მოთხოვნები შეიძლება უფრო მეტი თემა იყოს, ვიდრე "პარალელიზმის მაქსიმალური" ვარიანტი. DOP 4 შეიძლება გენერირება უფრო თორმეტი თემა, ოთხი მოთხოვნის და დამატებითი ნაკადების გამოიყენება დახარისხება, ნაკადები, ერთეული და ასამბლეების და ა.შ.

    მოთხოვნის პარალელიზაცია შეიძლება პროვოცირება სხვადასხვა ობობები დაველოდოთ ლოდინის ტიპის CXPacket ან 0x0200. ეს შეიძლება გამოყენებულ იქნას იმ spids, რომლებიც ლოდინი, როდესაც პარალელური ოპერაციები, და აქვს Sysprocesses Waittype: CXPacket. ამ ამოცანის ხელშეწყობის მიზნით, ავტორი სთავაზობს ბლოგზე შენახული პროცედურის გამოყენებას: track_waitstats.

ასე რომ, "მოთხოვნა შეიძლება შესრულდეს ნელი, როდესაც პარალელურად" რატომ?

    თუ სისტემა ძალიან სუსტია andwidg დისკის ქვესისტემები, მაშინ თხოვნის ანალიზისას, მისი დაშლა შეიძლება შესრულდეს პარალელიზმის გარეშე.

    შესაძლო მონაცემთა ბლოკები ან დაბლოკვის მონაცემები მერყეობს პარალელურად გამოყენებული პროცესორებისთვის, რომელიც გამოიყენება პარალელურად, რომელიც დაიწყო შემდგომში და ა.შ.

    თუ არ არსებობს ინდექსი პროგნოზირებისთვის, რაც მაგიდის სკანირებას იწვევს. მოთხოვნის ფარგლებში პარალელური ოპერაცია შეიძლება დამალოს იმ ფაქტს, რომ მოთხოვნა ბევრად უფრო სწრაფად დასრულდება თანმიმდევრული შესრულების გეგმისა და სწორი ინდექსით.

ყოველივე ეს შემდეგნაირად მიიჩნევს რეკომენდაციის შესამოწმებლად შეკითხვის გარეშე პარალელიზმის გარეშე (DOP \u003d 1), ეს ხელს შეუწყობს შესაძლო პრობლემების იდენტიფიცირებას.
პარალელიზმის ზემოაღნიშნული ეფექტი, თავად უნდა მოიტანოს, რომ მოთხოვნის პარალელიზაციის შიდა მექანიკა არ არის შესაფერისი OLTP აპლიკაციების გამოყენებისათვის. ეს არის ისეთი აპლიკაციები, რომლისთვისაც აღსრულების დროს შეიძლება შეიცვალოს მომხმარებლების გაღიზიანება და, რისთვისაც სერვერზე ერთდროულად ბევრ მომხმარებელს ემსახურება, საეჭვოა პარალელური აღსრულების გეგმის შერჩევა პროცესორის დატვირთვის პროფილის ამ განაცხადების გამო.
აქედან გამომდინარე, თუ თქვენ აპირებთ პარალელიზმის გამოყენებას, მაშინ სავარაუდოდ საჭირო იქნება მონაცემების მოპოვების ამოცანებისათვის (მონაცემთა საწყობი), გადაწყვეტილების მიღების ან საანგარიშო სისტემების მხარდაჭერა, სადაც არ არის ბევრი მოთხოვნა, მაგრამ ისინი რთულია და შესრულებულია ძლიერი სერვერი საოპერაციო მეხსიერების დიდი მოცულობით.
თუ გადაწყვეტთ პარალელიზმის გამოყენებას, რა მნიშვნელობა უნდა დამონტაჟდეს დოპისთვის? კარგი პრაქტიკა ამ მექანიზმისთვის არის ის, რომ თუ თქვენ გაქვთ 8 პროცესორი, შემდეგ დააინსტალირეთ DOP \u003d 4, და ეს დიდი ალბათობა იქნება ოპტიმალური ინსტალაცია. თუმცა, არ არსებობს გარანტია, რომ ის იმუშავებს. ერთადერთი გზა, რათა დარწმუნდეთ, რომ ეს არის DOP- ის სხვადასხვა ღირებულებების შესამოწმებლად. გარდა ამისა, ავტორს სურდა შესთავაზოს საბჭოს ემპირიული დაკვირვების საფუძველზე, არასდროს არ დააყენებს ამ რაოდენობის ნახევარზე მეტი პროცესორების ნახევარზე მეტს. იმ შემთხვევაში, თუ ავტორს ჰქონდა პროცესორები, ვიდრე ექვსი, ეს იქნებოდა DOP 1, რომელიც უბრალოდ კრძალავს პარალელიზაციას. მას შეეძლო გამონაკლისი, თუ მონაცემთა ბაზა, რომელიც მხარს უჭერს მხოლოდ ერთი მომხმარებლის (ზოგიერთი მონაცემების მოპოვების ტექნოლოგიების ან საანგარიშო ამოცანების) პროცესს, ამ შემთხვევაში, გამონაკლისის მიზნით, შესაძლებელი იქნება DOP- ის ინსტალაციის 0 (default ღირებულება) საშუალებას აძლევს SQL სერვერს, მიიღოს გადაწყვეტილება შეკითხვის პარალელიზაციის აუცილებლობაზე.
სტატიის დასრულებამდე, ავტორს უნდოდა გააფრთხილოს იმ ფაქტზე, რომ პარალელურად ინდექსების შექმნა დამოკიდებულია DOP- ისთვის. ეს იმას ნიშნავს, რომ თქვენ შეიძლება შეიცვალოს ის შექმნის ან ხელახლა შექმნა ინდექსების გაზრდა ამ ოპერაციის შესრულება, და, რა თქმა უნდა, შეგიძლიათ გამოიყენოთ Maxdop მინიშნება შეკითხვა, რომელიც საშუალებას გაძლევთ იგნორირება იგნორირება კონფიგურაცია და შეიძლება გამოყენებულ იქნას მინიმალური დატვირთვის საათის განმავლობაში.
საბოლოო ჯამში, თქვენი მოთხოვნა შეიძლება შეანელებს შეცდომების გამო პარალელურად, ასე რომ დარწმუნდით, რომ თქვენს სერვერზე ბოლო სერვის პაკეტი დამონტაჟებულია.

შექმნა proc track_waitstats (@ num_samples int \u003d 10 , @ Delaynum int \u003d 1 @ Delaytype nvarchar ( 10 ) \u003d "წუთი") AS - T. Davidson - ეს შენახული პროცედურა უზრუნველყოფილია \u003d როგორც არის \u003d არ გარანტიები, - და არ შეესაბამება უფლებებს. - ჩართული სკრიპტის ნიმუშების გამოყენება პირობებს ექვემდებარება - მითითებული http://www.microsoft.com/info/cpyright.htm - @ num_samples არის რამდენჯერმე, რათა დაიჭიროთ waitstats, - ნაგულისხმევი 10-ჯერ. Default დაგვიანებით ინტერვალი არის 1 წუთი - Delaynum არის დაგვიანებით ინტერვალი. გადაჭარბება განსაზღვრავს თუ არა. - დაგვიანებით ინტერვალი არის წუთი ან წამი - შექმნა waitstats მაგიდა თუ ეს არ არსებობს, წინააღმდეგ შემთხვევაში truncate მითითებული nocount თუ არ არსებობს (აირჩიეთ 1 საწყისი SysObjects სადაც სახელი \u003d "Waitstats") შექმნა მაგიდის waitstats (Varchar ( 80 ), მოითხოვს რიცხვს ( 20 ,1 ), რიცხვითი ( 20 ,1 ), რიცხვითი ( 20 ,1 ), ახლა datetime default detdate ()) სხვა truncate მაგიდა waitstats dbcc sqlperf (waitstats, წმინდა) - წმინდა გარეთ waitsStats decovare @ II int, @ Delay Varchar ( 8 ), @ Dt varchar ( 3 ), @ ახლა datetime, @ Tallewait Numeric ( 20 ,1 ), @ Endtime datetime, @ begintime datetime, @ hr int, @ min int, @ sec int select select 1 SELECT \u003d CASE LOWER (@ DELAYTYPE) როდესაც "წუთი" მაშინ "M" შემდეგ "M" შემდეგ "M" მაშინ "მ" მაშინ "მმ" მაშინ "მ", როდესაც "მ" როდესაც "მ" მაშინ "მ" მაშინ "წამი" მაშინ "S" მაშინ "S" მაშინ "S" მაშინ "S" მაშინ "SS" მაშინ "S" მაშინ "S" მაშინ "S" DELEGETYPE END IF @ DT არ არის ("S", "M") დასაწყისი ბეჭდვა "გთხოვთ მიაწოდოთ დაგვიანებით ტიპის E.G. წამი ან წუთი" დაბრუნება დასასრული IF @ DT \u003d "S" დასაწყისი აირჩიეთ @Sec \u003d @ delaynum% 60 აირჩიეთ @ min \u003d მსახიობი ((@delaynum / 60 ) როგორც int) აირჩიეთ @HR \u003d მსახიობი ((@ min / 60 ) როგორც int) აირჩიეთ @ min \u003d @ min% 60 ბოლოს თუ @ dt \u003d "M" დასაწყისი აირჩიეთ @sec \u003d 0 აირჩიეთ @min \u003d @ delaynum% 60 აირჩიეთ @Hr \u003d მსახიობი ((@Delaynum / 60 ) როგორც INT) დასასრულს აირჩიეთ @DELAY \u003d RIGHT ("0" + Convert (Varchar ( 2 ), @ Hr), 2 2 ), @ min), 2 ) + "+ + +" 0 "+ Convert (Varchar ( 2 ), @ წმ), 2 ) თუ @ hr\u003e 23 ან @ min\u003e 59 ან @sec\u003e 59 აირჩიეთ აირჩიეთ. "HH: MM: SS დაგვიანებით დრო არ არის\u003e 23:59:59" აირჩიეთ "შეფერხების ინტერვალი და ტიპი:" + Convert (Varchar ( 10 ), @ Delaynum) + "," + "+ @Delaytype +" აკონვერტებს "+ @Delay დაბრუნების ბოლოს (@i<= @num_samples) begin insert into waitstats (, requests, ,) exec ("dbcc sqlperf(waitstats)" ) select @i = @i + 1 WaitFor Delay @DeLay End --- შექმნა Waitstats ანგარიშის შესრულება GET_WAITSTATS --//--//--//--//--//--//--//--//--//-//--//--//--//--//--//--//--//--/ შექმნა proc get_waitstats როგორც - ეს შენახული პროცედურა არის გათვალისწინებული \u003d როგორც არის \u003d არ გარანტიები, და - არ არის უფლებები. - ჩართული სკრიპტის ნიმუშების გამოყენება ექვემდებარება მითითებულ პირობებს - http://www.microsoft.com/info/cpyright.htm. -- - ეს proc შეიქმნება Waitstats ანგარიშის ჩამონათვალი დაველოდოთ ტიპის - პროცენტი - შეიძლება აწარმოებს, როდესაც track_waitstats აღსრულების უცნობია Nocount On DEBILARE @ NOW DATETIME, @ TALLWAIT NUMERIC ( 20 ,1 ), @ endtime datetime, @ begintime datetime, @ hr int, @ min int, @ sec int select select select @ no \u003d max (now), @ begintime \u003d min (ახლა), @ endtime \u003d max (ახლა) საწყისი waitstats სადაც \u003d " სულ " --- Loadfor, ძილი, და რესურსით აირჩიეთ @totalwait \u003d თანხა () 1 საწყისი waitstats სადაც არ არის ("Waitefor", "ძილის", "Resource_queue", "სულ", "*** სულ ***") და ახლა \u003d @ now - შესწორებული შეადგენს, წოდება პროცენტული mescending წაშლა waitstats სადაც \u003d "*** სულ ***" და ახლა \u003d @ now ჩადეთ waitstats აირჩიეთ "*** სულ ***", 0 , @ TUSTALWAIT, @ TUSTALWAIT, @ ახლა აირჩიეთ ,, პროცენტული \u003d მსახიობი ( 100 * / @ Tallewait როგორც Numeric ( 20 ,1 )) საწყისი waitstats სადაც არ არის ("Waitefor", "ძილის", "Resource_queue", "სულ") და ახლა \u003d @ now შეკვეთა პროცენტული desc

ამ პოსტზე, ჩვენ ვსაუბრობთ მხოლოდ MS SQL Server- ის შესახებ. თუ თქვენ აპირებთ "სცადოთ ბედნიერება" გამოიყენოთ 1C Oracle, DB2, Postrgre თქვენ ეს ინფორმაცია იქნება უსარგებლო. მაგრამ თქვენ უნდა გვესმოდეს, რომ 1C- ში პირველ რიგში არის ექსპერტები MS SQL Server- ზე. DB2- ზე ექსპერტები IBM- ის ძალისხმევას წარმოადგენენ. თქვენ შეგიძლიათ დიდი ხნის განმავლობაში კარგი ან ცუდი ამტკიცებდეთ, ეს DBMS მნიშვნელოვანია, ერთი, ყველაზე "გლუვი" 1C მუშაობს MS SQL Server- თან. DB2- თან "წინა" -ს უფრო მეტად ან ნაკლებად ღირსეულ მუშაობასთან დაკავშირებული უახლესი შეტყობინებით. მიუხედავად იმისა, რომ პირადად მე მქონდა გამოცდილება 1C- სთვის, რათა DB2- სთან მუშაობა 8.1 - ყველაფერი არ იყო ძალიან. ნებისმიერ შემთხვევაში, სხვა DBMS- ის არჩევანი უნდა იყოს ნათლად დასაბუთებული - არც პარამეტრები, რომლებიც არ არის MS SQL (კასეტური დატვირთვის დაბალანსება, ქსელი და ა.შ.), ან ფინანსები (Oracle უკვე შეძენილი) ან პლატფორმა (ყველა Linux) .

ასე რომ, რაც თქვენ უნდა გააკეთოთ MS SQL Server:

1) კონფიგურაცია მინიმალური და მაქსიმალური მეხსიერების მეხსიერებაში. მინიმუმ ნახევარი სისტემის მეხსიერება. მაქსიმალური მეხსიერება - მეხსიერების სისტემა 2GB გარეშე. ეს კეთდება მენეჯმენტის სტუდია - სერვერის თვისებებში:

2) თუ პრიორიტეტი არ არის დამონტაჟებული პროცესორი tab - თქვენ უნდა დააყენოთ

3) პარალელიზმის მაქსიმალური ხარისხი 1-ში.

4) შეიტანეთ SQL Server Agent, Customize მონაცემთა ბაზის ფოსტა - არაფერია რთული, მე არ აღწერს დეტალურად.

5) Customize სამსახურის გეგმები:
ზოგადი:
ა) სტატისტიკის განახლება - ყოველ 2 საათში
ბ) DBCC Freeprocache - ყოველ 2 საათში
თითოეული მონაცემთა ბაზისთვის:
ა) სრული სარეზერვო
ბ) სხვაობა სარეზერვო
გ) ინდექსების დეფრაგმენტაცია - ყოველ დღე
დ) პერესტროიკას ინდექსები - ღამით შაბათ-კვირას
ე) ბაზის მთლიანობის შემოწმება - შაბათ-კვირას თვეში ერთხელ

6) მე გირჩევთ დააყენოთ აღდგენის მოდელი თითოეული მონაცემთა ბაზის (თვისებები) როგორც მარტივი. თუ არ გაქვთ 24/7 სისტემა და ბაზაზე 1000-ზე ნაკლები მომხმარებელი არ არის, არ არსებობს ბრალია-ტოლერანტული კასეტური და არ მოგიწევთ SLA- ს, რომელშიც ჩვენ ვიღებთ ნებისმიერ მოწყობილობის გასასვლელად მონაცემების აღდგენას მეორე (და არა უკანასკნელი სარეზერვო) ეს რეკომენდაცია გონივრული იქნება. წინააღმდეგ შემთხვევაში, თქვენ ძალიან მალე თქვენ დიდი ხნის განმავლობაში და convulsively ასახავს სად წავიდეთ დაიბადა tranzaction შესვლა

7) ამოიღონ TempDB მონაცემთა ბაზის ჩვეულებრივი მონაცემთა ბაზების სხვა დისკზე - მაშინაც კი, თუ თქვენ უნდა reconfigure Raid მასივი და შეამციროს მისი შესრულება. წინააღმდეგ შემთხვევაში, 1 მომხმარებელი შეძლებს ყველას პარალიზებას ყველას. თუ თქვენ გაქვთ აპარატურის აჩქარება ნაცვლად მყარ დისკზე, მაშინ, რა თქმა უნდა, არ შეიძლება ცალკე და ჩაიწეროს TEMPDB, მაგრამ ეს მხოლოდ იმ შემთხვევაში, თუ არსებობს

8) მონიტორინგის ნებისმიერი საშუალებით - მაგალითად, მომწონს Spotlight http://www.quest.com/spotlight-on-sql-server-

9) შეამოწმეთ თავი Microsoft Best Practice Analizer - http://www.microsoft.com/download/en/details.aspx?id\u003d15289 - მშვენიერი ინსტრუმენტი, რომელიც ხელს უწყობს არა მხოლოდ პარამეტრებს, არამედ ბევრ პრობლემას.

ახლა მოკლედ, რაც ჩვენ ყველაფერი გავაკეთეთ:

1) მეხსიერება. მინიმალური ღირებულება უბრალოდ გადარჩება "glitches", როდესაც SQL სერვერი ზოგიერთი სხვა ცნობილი მიზეზების გამო არ იყენებს ყველა მეხსიერებას. უნდა ჭამა ყველა! მაქსიმალური ღირებულება გადაარჩენს თქვენ სვოპიდან, თუ SQL Server Memory Optimizer- ის იგივე ოპტიმიზატორი გადაწყვეტს, რომ ის კვლავ ავნებს მას ....

3) ძალიან მნიშვნელოვანი წერტილი - IMMO- ს უნდა ჰქონდეს 1 ყველა ტრანსექტულ სისტემაში. პირველ რიგში, ეს ხელს უშლის საკეტებს შორის სხვადასხვა პროცესებს შორის, რომლებიც ცდილობენ 1 მოთხოვნის შესრულებას, შესაბამისად, ის იცავს ზოგიერთ "უცნაურ შეცდომებს. მეორე ... 1 "კლავს" მოთხოვნის შეძლებს შეძლებს ყველა სერვერის რესურსების გაყვანა, რაც გარკვეულწილად არ არის ჭეშმარიტი სისტემის დანარჩენ მომხმარებლებსთან დაკავშირებით. პარამეტრი განსაზღვრავს თუ არა 1 მოთხოვნის დამუშავებას, როგორც ბევრი პროცესორი ბირთვით.

5) პროცედურული ქეშის სტატისტიკისა და დასუფთავების შესახებ - ეს არის "მოსმენის შესახებ" და აქ ხშირად ჩვენ ხშირად დაივიწყებს რეინდედიას. იმავდროულად, ეს პროცედურა საკმაოდ მნიშვნელოვანია, განსაკუთრებით ბაზის მოცულობის ზრდით, მისი მნიშვნელობა იზრდება. ზოგჯერ შესრულების 60% -მდე დაკარგულია ინდექსის ფრაგმენტაცია.

7) თუ არსებობს აპარატურის ამაჩქარებელი ან უბრალოდ 2 დისკი სხვადასხვა ხელმისაწვდომობის სიჩქარით, მე ხელახლა ვიფიქრებდი მონაცემთა ბაზებში ფაილების ჯგუფების ხაზს უსვამს და ინდივიდუალური მაგიდები სხვადასხვა დისკზე, სხვადასხვა დაშვების დროს. ყოველივე ამის შემდეგ, თქვენ ეთანხმებით, pH "საწყობები საწყობებში" და საცნობარო წიგნი "დამატებითი ინფორმაციის შენახვა" 2 ობიექტის მოთხოვნის ობიექტის ფესვები. არ არის აუცილებელი შესანახად ყველა ფაილი და სურათები სწრაფი მასივი მონაცემთა ბაზაში - შეგიძლიათ შეარჩიოთ იგი ცალკე, არა როგორც სწრაფად, მაგრამ სადაც ბევრი ადგილები (და არ ეშინია bunch of ფაილი ჩამოტვირთოთ, მიერ გზა).