1C niyə yavaşlayır və niyə yeni server adətən kömək etmir
Birincisi - yeni server almamaq. On haldan səkkizində 1C-in yavaş işləməsinin səbəbi avadanlıqda deyil: milyonlarla artıq sətir oxuyan sorğularda, çatışmayan indekslərdə, VBİS-in köhnəlmiş statistikasında və ya istifadəçilər arasındakı kilidlənmələrdədir. Bütün bunlar alətlərlə diaqnostika olunur: 1C-in texnoloji jurnalı və SQL sorğu planları günahkarı kod sətrinə qədər dəqiq göstərir.
Səbəbi necə axtarırıq
- 1C-in texnoloji jurnalı - uzun sorğular və kilidlənmə gözləmələri üzrə hadisələrin toplanmasını sazlayırıq; hansı əməliyyatların və kimin kodunun vaxtı yediyi barədə dəqiq mənzərə alırıq.
- SQL sorğu planları - VBİS-in ağır sorğuları əslində necə icra etdiyinə baxırıq: indekslə axtarış əvəzinə skanlamalar, artıq birləşmələr, qeyri-optimal daxili sorğular.
- VBİS gözləmə statistikası - serverin nəyə dirəndiyini müəyyən edirik: disklər, prosessor, kilidlənmələr, yaddaş.
- Əsas əməliyyatlar üzrə APDEX ölçmələri - sürəti “orta göstərici” ilə yox, istifadəçinin gözü ilə qeydə alırıq.
Tipik tapıntılar
İllər ərzində “günahkarlar” siyahısı təkrarlanır: dövr içində sorğular, seçimsiz virtual cədvəllərlə birləşmələr, keçirilmə tranzaksiyası içində qalıqların alınması, indekslənməmiş sahələr üzrə seçimlər, kütləvi yükləmələrdən sonra köhnəlmiş statistika, öz yazılmış kodda artıq kilidlənmələr. Demək olar ki, hamısı avadanlığı dəyişmədən və yeni konfiqurasiyaya keçmədən müalicə olunur.
Real layihələrdən təzə nəticələr
- Kassir qarşısındakı çeklərin siyahısı: 25 saniyə → dərhal (505 410 → 4 məntiqi oxuma) - kassa əməliyyatları üçün indekslər üstəgəl giriş məhdudlaşdırma mexanizminin araşdırılması.
- Altı ağır idarəetmə hesabatı: vaxt üzrə −22…−42 % - tam eyni məlumatlarla: “əvvəl” və “sonra” nəticəsi “gözəyarı” yox, SHA-256 nəzarət cəmi ilə tutuşdurulub.
- “Kassaların axşam donmaları”: kilidlənmə sıfır çıxdı - 48 nüvəli serverdə SQL-in aqressiv paralelizmi yavaşladırdı (zavod ayarları: cost threshold = 5, MAXDOP = 0). İki ayar - və pik lotereya olmaqdan çıxdı. Niyə əvvəlcə ölçüb, yalnız sonra avadanlıq alındığının klassik nümunəsi.
- 2 dəqiqə “keçirilməyən” sənəd → 17 saniyə - hər sətir üzrə dövr içindəki qalıqlar sorğusu bir set-based sorğuya yenidən yazıldı.
- Araşdırmadan sonra hesabatların bir hissəsi dəyişdirilmədən saxlanıldı - dar yer sorğuda deyildi və yenidən yazmaq qazanc verməzdi. Sürətlənməyəcək şeyə büdcənizi xərcləməmək də nəticədir.
Ən iri layihənin ətraflı təhlili - “Bazanın kəsilməsi: 4,2 TB → 105 QB” keysində.
SQL serverində 1C-in sürətləndirilməsi
Ayrıca istiqamət - VBİS-in 1C üçün sazlanması: yaddaş və paralellik parametrləri, tempdb, statistikanın avtomatik yenilənməsi, indekslərə xidmət. “Defolt” quraşdırmalar abstrakt yükə hesablanıb, 1C profilinə yox. Həm MS SQL, həm də PostgreSQL sazlayırıq - birindən digərinə miqrasiyalar da daxil olmaqla.