ΠΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅ β ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΊΠΎΠ²Π°ΡΠ½ΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ ΡΠ±ΠΎΠ΅Π², ΡΠΏΠΎΡΠΎΠ±Π½ΡΡ ΠΏΠ°ΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Π²ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ½ΠΈ ΠΏΡΠΎΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ: ΠΎΡ Π±Π΅Π·ΠΎΠ±ΠΈΠ΄Π½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎ "Π·Π°ΠΊΡΡΡΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅" Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π·Π°Π²ΠΈΡΠ°Π½ΠΈΡ Π±Π°Π·Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π΄Π°ΠΆΠ΅ ΠΎΡΠΊΡΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ. ΠΠ»Π°Π²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° β ΡΠ°ΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠ°ΡΡΠΎ ΠΌΠ°ΡΠΊΠΈΡΡΡΡΡΡ ΠΏΠΎΠ΄ Π΄ΡΡΠ³ΠΈΠ΅ Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΊΠΈ: ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΡ ΡΠ°Π±ΠΎΡΡ, ΠΎΠ±ΡΡΠ²Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π²Π½Π΅Π·Π°ΠΏΠ½ΡΠ΅ Π²ΡΠ»Π΅ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠΈΠΏΠΈΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΈΠ»ΠΈ Π½Π΅Π²Π΅ΡΠ½ΡΡ ΡΡΡΠ»ΠΎΠΊ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡ ΡΠ΄ΡΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1Π‘ 8.3 ΠΈ ΡΡΠ΅Π±ΡΡΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°. ΠΡ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΊΡΠΎΡΡΡΡ Π² Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ, ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ, ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡ . ΠΡΠ° ΡΡΠ°ΡΡΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΊΠ°ΠΊ ΠΈΡ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² 1Π‘ ΠΈ SQL Server, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅.
ΠΡΠΎΠ±ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΄Π΅Π»ΠΈΠΌ ΡΠΊΡΡΡΡΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΠΆΡΡΠ½Π°Π»Π΅ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ, Π½ΠΎ ΡΠΎΡΠΌΠΎΠ·ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ½ΠΎΠ²ΡΡ Π·Π°Π΄Π°Ρ. Π’Π°ΠΊΠΈΠ΅ ΡΠ»ΡΡΠ°ΠΈ ΡΡΠ΅Π±ΡΡΡ ΡΡΡΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°ΠΌΠΏΠΎΠ² ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠΈΠ»ΠΈΡ Π²ΡΠΎΠ΄Π΅ SQL Server Profiler.
1. Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ "ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΠΎΡΠΎΠΊΠ°" Π² 1Π‘ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ
Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½ "ΠΏΠΎΡΠΎΠΊ" ΠΎΡΠ½ΠΎΡΠΈΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ Π² ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ (ΠΊΠ°ΠΊ Π² ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ), Π½ΠΎ ΠΈ ΠΊ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅. ΠΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ:
- π Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ β ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡΡ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡΡΠ°ΡΠΊΠΎΠ²).
- π ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ β Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ "Π·Π°ΠΌΠΎΡΠΊΠΈ" Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ (Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ, ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠΈ, ΡΠ΅Π³ΠΈΡΡΡΡ), ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°ΡΡΠΈΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΠΏΡΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅.
- β‘ Π€ΠΎΠ½ΠΎΠ²ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ β ΡΠ΅Π³Π»Π°ΠΌΠ΅Π½ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠ°ΡΡΡΠ»ΠΊΠΈ, ΠΎΠ±ΠΌΠ΅Π½Ρ Π΄Π°Π½Π½ΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ .
- π₯οΈ Π‘Π΅Π°Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ β ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ²ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ².
ΠΡΠΈΠ±ΠΊΠ° ΠΏΠΎΡΠΎΠΊΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
- π«
ΠΡΠΈΠ±ΠΊΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ : ΡΠ°ΠΉΠΌΠ°ΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΈΡΡΠ΅ΠΊβ ΠΏΠΎΡΠΎΠΊ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄ΠΎΠ»Π³ΠΎ ΠΆΠ΄Π΅Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠ°. - β
ΠΠΎΡΠΎΠΊ Π·Π°ΠΊΡΡΡ (ThreadClosed)β Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΠΈΠ·-Π·Π° ΡΠ±ΠΎΡ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. - β οΈ
Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½Π° ΠΈΠ·-Π·Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊβ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ "Π΄Π΅Π΄Π»ΠΎΠΊ" (Π²Π·Π°ΠΈΠΌΠ½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°).
Π‘Π°ΠΌΡΠ΅ ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ β ΡΠ΅, ΡΡΠΎ Π½Π΅ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΡΡ ΡΠ²Π½ΡΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π° ΠΏΡΠΎΡΠ²Π»ΡΡΡΡΡ ΠΊΠ°ΠΊ "ΠΏΠΎΠ΄Π²ΠΈΡΠ°Π½ΠΈΠ΅" ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ "ΠΡΠΎΠ²Π΅ΡΡΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ", Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠ»ΡΠ° Π²ΠΈΡΠΈΡ ΠΌΠΈΠ½ΡΡΠ°ΠΌΠΈ, Ρ ΠΎΡΡ Π² ΠΆΡΡΠ½Π°Π»Π΅ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π½Π΅Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ . ΠΡΠΎ ΡΠΈΠΏΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠ·Π½Π°ΠΊ ΡΠΊΡΡΡΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π‘Π£ΠΠ.
2. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² 1Π‘
ΠΠΎΠ»Π΅Π΅ 80% ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π² 1Π‘ ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΡΡΠ΅ΠΌΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠΌΠΈ ΠΏΡΠΈΡΠΈΠ½: Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ Π‘Π£ΠΠ ΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠΌΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ.
2.1. ΠΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ 1Π‘ (ΡΠ°ΠΌΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅)
ΠΠ°ΠΆΠ΅ ΠΎΠΏΡΡΠ½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠΈΡΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌ. Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ:
- π ΠΠ»ΠΈΠ½Π½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ β ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅ΠΆΠ΄Ρ
ΠΠ°ΡΠ°ΡΡΠ’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ()ΠΈΠΠ°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡΠ’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ()Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΡΠΆΠ΅Π»ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±Ρ ΠΎΠ΄ Π±ΠΎΠ»ΡΡΠΈΡ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠΎΠ²). - π Π―Π²Π½ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π±Π΅Π· ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ()Π±Π΅Π· ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎΠ Π°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ(). - π ΠΠ°ΡΡΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π² ΡΠΈΠΊΠ»Π΅ β Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΡΠΎΡ) Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΠΎΡΡΡΠΎΡΠ½ΠΎ.
ΠΡΠΈΠΌΠ΅Ρ ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:
ΠΠ°ΡΠ°ΡΡΠ’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ();
ΠΠ»Ρ ΠΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π‘ΡΡΠΎΠΊΠ° ΠΠ· Π’Π°Π±Π»ΠΈΡΠ½Π°ΡΠ§Π°ΡΡΡ Π¦ΠΈΠΊΠ»
ΠΠΎΠΊΡΠΌΠ΅Π½Ρ.ΠΠ°ΠΏΠΈΡΠ°ΡΡ(); // ΠΠ°ΠΏΠΈΡΡ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ!
ΠΠΎΠ½Π΅ΡΠ¦ΠΈΠΊΠ»Π°;
ΠΠ°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡΠ’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ();
Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΡΠ°Π±Π»ΠΈΡΡ Π½Π° Π²ΡΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π°, ΡΡΠΎ ΠΏΡΠΈ Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΡΡΡΠΎΠΊ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ°ΠΉΠΌΠ°ΡΡΠ°ΠΌ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ².
2.2. ΠΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π‘Π£ΠΠ
ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Microsoft SQL Server ΠΈΠ»ΠΈ PostgreSQL, ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½Ρ Ρ:
- π ΠΠ΅Ρ
Π²Π°ΡΠΊΠΎΠΉ ΡΠ΅ΡΡΡΡΠΎΠ² β Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ
tempdb, ΠΌΠ°Π»ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π±ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ»Π°. - βοΈ ΠΠ΅ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»ΠΈΡΠΊΠΎΠΌ Π½ΠΈΠ·ΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
MAX DOP(ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°). - π ΠΠ»ΠΈΠ½Π½ΡΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ SQL β ΠΊΠΎΠ³Π΄Π° 1Π‘ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ, Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π·Π°ΠΏΡΠΎΡ sp_who2 Π² SQL Server Management Studio, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ΅ΠΊΡΡΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΠΈΡ
ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΎΡΠΎΠ². ΠΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΠ²ΠΈΡΡ "Π²ΠΈΠ½ΠΎΠ²Π½ΠΈΠΊΠ°" Π·Π°Π²ΠΈΡΠ°Π½ΠΈΡ.
2.3. ΠΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠ΅ ΠΈ ΡΠ΅ΡΠ΅Π²ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ
ΠΠ°ΠΆΠ΅ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π‘Π£ΠΠ ΠΌΠΎΠ³ΡΡ Π΄Π°Π²Π°ΡΡ ΡΠ±ΠΎΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈΠ·-Π·Π°:
- π₯οΈ ΠΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° β Π²ΡΡΠΎΠΊΠΈΠΉ
CPU LoadΠΈΠ»ΠΈ Π½Π΅Ρ Π²Π°ΡΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ (Page Life ExpectancyΠ½ΠΈΠΆΠ΅ 300 ΡΠ΅ΠΊΡΠ½Π΄). - π ΠΠ΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ β ΠΎΠ±ΡΡΠ²Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ 1Π‘ ΠΈΠ»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ 1Π‘ ΠΈ Π‘Π£ΠΠ.
- πΎ ΠΠ΅Π΄Π»Π΅Π½Π½ΡΡ
Π΄ΠΈΡΠΊΠΎΠ² β Π΅ΡΠ»ΠΈ
tempdbΠΈΠ»ΠΈ ΡΠ°ΠΉΠ»Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π½Π° HDD Π²ΠΌΠ΅ΡΡΠΎ SSD.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅ Π² ΠΎΠ±Π»Π°ΠΊΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 1Π‘:Fresh) ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΈΠ·-Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½ ΠΏΠΎ CPU ΠΈΠ»ΠΈ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠΌΡ Π²Π²ΠΎΠ΄Ρ-Π²ΡΠ²ΠΎΠ΄Ρ.
ΠΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° SQL Server?
ΠΡΠΊΡΠΎΠΉΡΠ΅ SQL Server Management Studio, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π·Π°ΠΏΡΠΎΡ:
SELECT
SQLProcessUtilization AS [SQL Server Process CPU Utilization],
SystemIdle AS [System Idle Process],
100 - SystemIdle - SQLProcessUtilization AS [Other Process CPU Utilization]
FROM (
SELECT
record.value('ProcessUtilization[1]', 'int') AS SQLProcessUtilization,
record.value('SystemIdle[1]', 'int') AS SystemIdle
FROM (
SELECT [timestamp], CONVERT(xml, record) AS [record]
FROM sys.dm_os_ring_buffers
WHERE ring_buffer_type = N'RING_BUFFER_SCHEDULER_MONITOR'
AND record LIKE '%<ProcessUtilization>%'
) AS x
) AS y;
ΠΡΠΎΡ Π·Π°ΠΏΡΠΎΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΡΠ΅ΠΊΡΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ CPU ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ SQL Server ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΡΠ΅Π»ΠΎΠΌ.
3. ΠΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΠΎΡΠΎΠΊΠΎΠ²: ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ
Π§ΡΠΎΠ±Ρ ΡΡΡΡΠ°Π½ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΠΎΡΠΎΠΊΠ°, ΡΠ½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² 1Π‘ ΠΈ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ².
3.1. ΠΡΡΠ½Π°Π» ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ 1Π‘
ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° β ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΆΡΡΠ½Π°Π» ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ (ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β ΠΡΡΠ½Π°Π» ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ). ΠΡΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Ρ:
- π΄
ΠΡΠΈΠ±ΠΊΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈΠΈΠ»ΠΈLock timeout - β οΈ
ΠΠΎΡΠΎΠΊ Π·Π°ΠΊΡΡΡ(ThreadClosed) - β³
Π’Π°ΠΉΠΌΠ°ΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ(Timeout expired)
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°:
- π ΠΡΠ΅ΠΌΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ β ΠΊΠΎΡΡΠ΅Π»ΠΈΡΡΠ΅Ρ Π»ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° Ρ ΠΏΠΈΠΊΠΎΠ²ΡΠΌΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠ°ΠΌΠΈ?
- π€ ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ β maybe ΠΎΡΠΈΠ±ΠΊΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ°?
- π ΠΠ±ΡΠ΅ΠΊΡ ΠΌΠ΅ΡΠΊΠΈ β ΠΊΠ°ΠΊΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΈΠ»ΠΈ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΡΡΠ°ΡΡΠ²ΡΠ΅Ρ Π² ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ΅?
3.2. Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΆΡΡΠ½Π°Π» (ΡΠ°ΠΌΡΠΉ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ)
ΠΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° Π½Π΅ Π²ΠΈΠ΄Π½Π° Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΠΆΡΡΠ½Π°Π»Π΅, Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΆΡΡΠ½Π°Π» (1CV8Log). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ:
- ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° 1Π‘ (
conf.cfgΠΈΠ»ΠΈsrvinfo.reg). - ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
[Common]LogDir=ΠΏΡΡΡ_ΠΊ_ΠΏΠ°ΠΏΠΊΠ΅_Ρ_Π»ΠΎΠ³Π°ΠΌΠΈ
LogFile=1CV8Log
LogLevel=Debug
- ΠΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ΅ΡΠ²Π΅Ρ 1Π‘.
Π Π»ΠΎΠ³Π°Ρ ΠΈΡΠΈΡΠ΅ ΡΡΡΠΎΠΊΠΈ Ρ:
- π
LOCK:β ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°Ρ . - β‘
THREAD:β ΡΠΎΠ±ΡΡΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ. - β
EXCEPTION:β Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
ΠΡΠΊΠ°ΡΡ ΡΡΡΠΎΠΊΠΈ Ρ LOCK: ΠΈ THREAD:|ΠΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΊΠΈ Π΄ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡ|Π‘ΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ID ΠΏΠΎΡΠΎΠΊΠΎΠ² (thread ID) Π² ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΡΡΠΈΡ
Π·Π°ΠΏΠΈΡΡΡ
|ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅ΠΊΡΡΠ΅ΠΉΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ (CALLSTACK:)
-->
3.3. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π‘Π£ΠΠ
ΠΠ»Ρ Microsoft SQL Server ΠΏΠΎΠ»Π΅Π·Π½Ρ:
- π οΈ SQL Server Profiler β ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΎΡ 1Π‘ ΠΊ Π±Π°Π·Π΅.
- π Dynamic Management Views (DMV) β ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ:
SELECTt1.resource_type,
t1.resource_database_id,
t1.request_mode,
t1.request_session_id,
t2.blocking_session_id
FROM
sys.dm_tran_locks AS t1
INNER JOIN
sys.dm_os_waiting_tasks AS t2
ON t1.lock_owner_address = t2.resource_address;
ΠΠ»Ρ PostgreSQL ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅:
- π
pg_locksβ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ΅ΠΊΡΡΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. - π
pg_stat_activityβ Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΡΠΎΡΡ.
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ° Π΄Π»Ρ PostgreSQL:
SELECT
blocked_locks.pid AS blocked_pid,
blocking_locks.pid AS blocking_pid,
blocked_activity.usename AS blocked_user,
blocking_activity.usename AS blocking_user,
blocked_activity.query AS blocked_statement
FROM
pg_catalog.pg_locks blocked_locks
JOIN
pg_stat_activity blocked_activity ON blocked_activity.pid = blocked_locks.pid
JOIN
pg_catalog.pg_locks blocking_locks
ON blocking_locks.locktype = blocked_locks.locktype
AND blocking_locks.DATABASE IS NOT DISTINCT FROM blocked_locks.DATABASE
AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation
AND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.page
AND blocking_locks.tuple IS NOT DISTINCT FROM blocked_locks.tuple
AND blocking_locks.virtualxid IS NOT DISTINCT FROM blocked_locks.virtualxid
AND blocking_locks.transactionid IS NOT DISTINCT FROM blocked_locks.transactionid
AND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classid
AND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objid
AND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubid
AND blocking_locks.pid != blocked_locks.pid
JOIN
pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid
WHERE
NOT blocked_locks.GRANTED;
3.4. ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅:
- π₯οΈ ΠΠΈΡΠΏΠ΅ΡΡΠ΅Ρ Π·Π°Π΄Π°Ρ Windows β ΡΠ»Π΅Π΄ΠΈΡΠ΅ Π·Π° Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ Π½Π° CPU, ΠΏΠ°ΠΌΡΡΡ, Π΄ΠΈΡΠΊ.
- π PerfMon (Performance Monitor) β Π½Π°ΡΡΡΠΎΠΉΡΠ΅ ΡΠ±ΠΎΡΡΠΈΠΊΠΈ Π΄Π»Ρ SQL Server:
- π
SQLServer:Locks|Average Wait Time (ms)β ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ. - π
SQLServer:Locks|Lock Waits/secβ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ.
- π
- π 1Π‘:ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ° β Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.
ΠΡΠ»ΠΈ Π² ΠΆΡΡΠ½Π°Π»Π΅ 1Π‘ Π½Π΅Ρ ΡΠ²Π½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, Π½ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΎΡΠΌΠΎΠ·ΠΈΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠΊΡΡΡΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π‘Π£ΠΠ. Π§Π°ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΡΠΎΠ΅ΡΡΡ Π² Π΄ΠΎΠ»Π³ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π²ΠΈΠ΄Π½Ρ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ 1Π‘, Π½ΠΎ Π±Π»ΠΎΠΊΠΈΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ.
4. ΠΠΎΡΠ°Π³ΠΎΠ²Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ: ΠΊΠ°ΠΊ ΡΡΡΡΠ°Π½ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΠΎΡΠΎΠΊΠ°
ΠΠΎΠ³Π΄Π° ΠΏΡΠΈΡΠΈΠ½Π° ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΡΡΠΏΠ°ΡΡ ΠΊ Π΅Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ. ΠΠΈΠΆΠ΅ β ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΠ»ΡΡΠ°Π΅Π².
4.1. Π¨Π°Π³ 1: Π Π°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ "Π·Π°Π²ΠΈΡΡΠΈΠ΅" ΠΏΠΎΡΠΎΠΊΠΈ
ΠΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° ΡΠ²ΡΠ·Π°Π½Π° Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ, ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²ΡΡΡΠ½ΡΡ.
ΠΠ»Ρ 1Π‘ (ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ):
- ΠΡΠΊΡΠΎΠΉΡΠ΅
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β ΠΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ. - ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΠ΅Π°Π½ΡΡ Ρ ΡΡΠ°ΡΡΡΠΎΠΌ
ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡΠΈΠ»ΠΈΠΠΆΠΈΠ΄Π°Π½ΠΈΠ΅. - ΠΠ°ΠΆΠΌΠΈΡΠ΅
ΠΡΠ΅ΡΠ²Π°ΡΡΠ΄Π»Ρ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅Π°Π½ΡΠΎΠ².
ΠΠ»Ρ SQL Server:
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π·Π°ΠΏΡΠΎΡ Π΄Π»Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°:
-- ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ID Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°
SELECT
session_id,
command,
blocking_session_id,
wait_type,
wait_time,
wait_resource
FROM
sys.dm_exec_requests
WHERE
blocking_session_id <> 0;
-- Π£Π±Π΅ΠΉΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡ (Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ {ID} Π½Π° ΡΠ΅Π°Π»ΡΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ)
KILL {ID};
ΠΠ»Ρ PostgreSQL:
-- ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ
SELECT
pid,
usename,
query,
query_start
FROM
pg_stat_activity
WHERE
pid IN (
SELECT blocking_pid FROM pg_blocking_pids()
);
-- Π£Π±Π΅ΠΉΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡ
SELECT pg_terminate_backend({PID});
ΠΠ΅ΡΠ΅Π΄ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Π°Π½ΡΠ° ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π»ΠΈ ΠΎΠ½ ΠΊΡΠΈΡΠΈΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π³Π»Π°ΠΌΠ΅Π½ΡΠ½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅). Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΠΎΡΠ΅ΡΠ΅ Π΄Π°Π½Π½ΡΡ .
4.2. Π¨Π°Π³ 2: ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄
ΠΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° Π²ΡΠ·Π²Π°Π½Π° Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈΡΠΏΡΠ°Π²ΡΡΠ΅ Π΅Π³ΠΎ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ:
ΠΡΠ°Π²ΠΈΠ»ΠΎ 1: ΠΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ Π²ΡΠ΅ΠΌΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ
π« ΠΠ»ΠΎΡ ΠΎ:
ΠΠ°ΡΠ°ΡΡΠ’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ();
// ΠΠΎΠ»Π³ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ...
ΠΠ°ΠΏΡΠΎΡ = ΠΠΎΠ²ΡΠΉ ΠΠ°ΠΏΡΠΎΡ;
ΠΠ°ΠΏΡΠΎΡ.Π’Π΅ΠΊΡΡ = "ΠΠ«ΠΠ ΠΠ’Π¬ * ΠΠ Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ.ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°ΡΡΡΠ°";
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ = ΠΠ°ΠΏΡΠΎΡ.ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ();
ΠΠΎΠΊΠ° Π Π΅Π·ΡΠ»ΡΡΠ°Ρ.Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ() Π¦ΠΈΠΊΠ»
// ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ...
ΠΠΎΠ½Π΅ΡΠ¦ΠΈΠΊΠ»Π°;
ΠΠ°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡΠ’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ();
β Π₯ΠΎΡΠΎΡΠΎ:
// Π‘Π½Π°ΡΠ°Π»Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠΌ Π΄Π°Π½Π½ΡΠ΅
ΠΠ°ΠΏΡΠΎΡ = ΠΠΎΠ²ΡΠΉ ΠΠ°ΠΏΡΠΎΡ;
ΠΠ°ΠΏΡΠΎΡ.Π’Π΅ΠΊΡΡ = "ΠΠ«ΠΠ ΠΠ’Π¬ * ΠΠ Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ.ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°ΡΡΡΠ°";
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ = ΠΠ°ΠΏΡΠΎΡ.ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ();
ΠΠ°ΡΡΠΈΠ²ΠΠ°Π½Π½ΡΡ
= ΠΠΎΠ²ΡΠΉ ΠΠ°ΡΡΠΈΠ²;
ΠΠΎΠΊΠ° Π Π΅Π·ΡΠ»ΡΡΠ°Ρ.Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ() Π¦ΠΈΠΊΠ»
ΠΠ°ΡΡΠΈΠ²ΠΠ°Π½Π½ΡΡ
.ΠΠΎΠ±Π°Π²ΠΈΡΡ(Π Π΅Π·ΡΠ»ΡΡΠ°Ρ.Π’Π΅ΠΊΡΡΠΈΠ΅ΠΠ°Π½Π½ΡΠ΅);
ΠΠΎΠ½Π΅ΡΠ¦ΠΈΠΊΠ»Π°;
// Π’Π΅ΠΏΠ΅ΡΡ Π±ΡΡΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ
ΠΠ°ΡΠ°ΡΡΠ’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ();
ΠΠ»Ρ ΠΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΠ°Π½Π½ΡΠ΅ ΠΠ· ΠΠ°ΡΡΠΈΠ²ΠΠ°Π½Π½ΡΡ
Π¦ΠΈΠΊΠ»
// ΠΡΡΡΡΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°...
ΠΠΎΠ½Π΅ΡΠ¦ΠΈΠΊΠ»Π°;
ΠΠ°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡΠ’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ();
ΠΡΠ°Π²ΠΈΠ»ΠΎ 2: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
π« ΠΠ»ΠΎΡ ΠΎ (ΠΏΠΎΡΡΡΠΎΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ):
ΠΠ»Ρ ΠΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π‘ΡΡΠΎΠΊΠ° ΠΠ· Π’Π°Π±Π»ΠΈΡΠ° Π¦ΠΈΠΊΠ»
ΠΠΎΠΊΡΠΌΠ΅Π½Ρ = ΠΠΎΠΊΡΠΌΠ΅Π½ΡΡ.ΠΠ°ΠΊΠ°Π·ΠΠ»ΠΈΠ΅Π½ΡΠ°.Π‘ΠΎΠ·Π΄Π°ΡΡΠΠΎΠΊΡΠΌΠ΅Π½Ρ();
ΠΠΎΠΊΡΠΌΠ΅Π½Ρ.ΠΠ°ΠΏΠΈΡΠ°ΡΡ(); // ΠΠ°ΠΏΠΈΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ!
ΠΠΎΠ½Π΅ΡΠ¦ΠΈΠΊΠ»Π°;
β Π₯ΠΎΡΠΎΡΠΎ (ΠΏΠ°ΠΊΠ΅ΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ):
ΠΠ±ΡΠ΅ΠΊΡΠΠ°ΠΏΠΈΡΠΈ = ΠΠΎΠΊΡΠΌΠ΅Π½ΡΡ.ΠΠ°ΠΊΠ°Π·ΠΠ»ΠΈΠ΅Π½ΡΠ°.Π‘ΠΎΠ·Π΄Π°ΡΡΠΠ°Π±ΠΎΡΠΠ°ΠΏΠΈΡΠΈ();
ΠΠ»Ρ ΠΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π‘ΡΡΠΎΠΊΠ° ΠΠ· Π’Π°Π±Π»ΠΈΡΠ° Π¦ΠΈΠΊΠ»
ΠΠΎΠ²ΡΠΉΠΠΎΠΊΡΠΌΠ΅Π½Ρ = ΠΠ±ΡΠ΅ΠΊΡΠΠ°ΠΏΠΈΡΠΈ.ΠΠΎΠ±Π°Π²ΠΈΡΡ();
// ΠΠ°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠ΅...
ΠΠΎΠ½Π΅ΡΠ¦ΠΈΠΊΠ»Π°;
ΠΠ±ΡΠ΅ΠΊΡΠΠ°ΠΏΠΈΡΠΈ.ΠΠ°ΠΏΠΈΡΠ°ΡΡ(); // ΠΠ΄Π½Π° Π·Π°ΠΏΠΈΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ
!
ΠΡΠ°Π²ΠΈΠ»ΠΎ 3: ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΡΠ²Π½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ
π« ΠΠ»ΠΎΡ ΠΎ:
ΠΠΎΠΊΡΠΌΠ΅Π½Ρ.ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ();
// ΠΠΎΠ»Π³ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ...
ΠΠΎΠΊΡΠΌΠ΅Π½Ρ.Π Π°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ();
β Π₯ΠΎΡΠΎΡΠΎ:
// ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠ²Π½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ
ΠΠ°ΡΠ°ΡΡΠ’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ();
ΠΠΎΠΏΡΡΠΊΠ°
ΠΠΎΠΊΡΠΌΠ΅Π½Ρ.ΠΠ°ΠΏΠΈΡΠ°ΡΡ(); // ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π½Π° Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΠΈΡΠΈ
ΠΠ°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡΠ’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ();
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΌΠ΅Π½ΠΈΡΡΠ’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ();
ΠΡΠ·Π²Π°ΡΡΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅;
ΠΠΎΠ½Π΅ΡΠΠΎΠΏΡΡΠΊΠΈ;
4.3. Π¨Π°Π³ 3: ΠΠ°ΡΡΡΠΎΠΈΡΡ Π‘Π£ΠΠ
ΠΠ»Ρ SQL Server ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|---|
MAX DOP |
2β4 (Π΄Π»Ρ 4β8 ΡΠ΄Π΅Ρ) | ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°. Π‘Π»ΠΈΡΠΊΠΎΠΌ Π²ΡΡΠΎΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌ. |
Cost Threshold for Parallelism |
25β50 | ΠΠΎΡΠΎΠ³ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ Π·Π°ΠΏΡΠΎΡΠ°, ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. |
Lock Timeout (ms) |
10000β30000 | ΠΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ . Π£Π²Π΅Π»ΠΈΡΡΡΠ΅, Π΅ΡΠ»ΠΈ ΡΠ°ΡΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΡΠ°ΠΉΠΌΠ°ΡΡΡ. |
tempdb ΡΠ°Π·ΠΌΠ΅Ρ |
20β30% ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π±Π°Π·Ρ 1Π‘ | ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ tempdb ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΏΡΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅ Π±ΠΎΠ»ΡΡΠΈΡ
Π΄Π°Π½Π½ΡΡ
. |
ΠΠ»Ρ PostgreSQL ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°:
max_connectionsβ ΡΠ²Π΅Π»ΠΈΡΡΡΠ΅, Π΅ΡΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.work_memβ ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ (ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ 16β64 ΠΠ).deadlock_timeoutβ ΡΠ°ΠΉΠΌΠ°ΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π΅Π΄Π»ΠΎΠΊΠ° (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 1000 ΠΌΡ).
4.4. Π¨Π°Π³ 4: ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΡΠ°ΡΡΡ
ΠΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠ²ΡΠ·Π°Π½Ρ Ρ Π½Π΅Ρ Π²Π°ΡΠΊΠΎΠΉ ΡΠ΅ΡΡΡΡΠΎΠ²:
- π₯οΈ CPU: ΠΠ»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° 1Π‘ Ρ 50+ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 8 ΡΠ΄Π΅Ρ (Π»ΡΡΡΠ΅ 16+).
- π§ ΠΠΠ£: ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ β 16 ΠΠ Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° 1Π‘ + 32 ΠΠ Π΄Π»Ρ SQL Server (Π½Π° 100 ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ).
- πΎ ΠΠΈΡΠΊΠΈ:
tempdbΠΈ ΡΠ°ΠΉΠ»Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π° SSD (Π»ΡΡΡΠ΅ NVMe). - π Π‘Π΅ΡΡ: ΠΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ 1Π‘ ΠΈ Π‘Π£ΠΠ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π³ΠΈΠ³Π°Π±ΠΈΡΠ½Π°Ρ ΡΠ²ΡΠ·Ρ Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠΎΠΉ < 1 ΠΌΡ.
ΠΠ»Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² 1Π‘:Fresh ΠΈΠ»ΠΈ ΠΎΠ±Π»Π°ΠΊΠ΅):
- ΠΡΠΎΠ²Π΅ΡΡΡΠ΅, Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ Π»ΠΈ ΡΠ΅ΡΡΡΡΡ ΠΏΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π»ΠΈΠΌΠΈΡ CPU ΠΈΠ»ΠΈ IOPS).
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ Π΄ΠΈΡΠΊΠΈ Π΄Π»Ρ
tempdbΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π±Π°Π·Ρ.
ΠΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π² ΠΏΠΈΠΊΠΎΠ²ΡΠ΅ ΡΠ°ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΠΌΠ΅ΡΡΡΠ°), ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ Π² Π½Π΅Ρ Π²Π°ΡΠΊΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ². Π Π°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΡΠΎΠ½ΠΎΠ²ΡΡ Π·Π°Π΄Π°Ρ Π½Π° Π½ΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
5. Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ
Π Π°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠ°ΡΡΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ 1Π‘.
5.1. ΠΡΠΈΠ±ΠΊΠ° "Π’Π°ΠΉΠΌΠ°ΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ"
Π‘ΠΈΠΌΠΏΡΠΎΠΌΡ: ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π’Π°ΠΉΠΌΠ°ΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΡΡΠ΅ΠΊ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΈΠ»ΠΈ ΠΎΡΠΊΡΡΡΡ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ.
ΠΡΠΈΡΠΈΠ½Ρ:
- ΠΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»Π³ΠΎ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π½Π° ΡΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅.
- Π ΠΊΠΎΠ΄Π΅ Π΅ΡΡΡ Π΄Π»ΠΈΠ½Π½Π°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΡΠ°Π±Π»ΠΈΡΡ.
- Π‘Π»ΠΈΡΠΊΠΎΠΌ Π½ΠΈΠ·ΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
Lock TimeoutΠ² SQL Server.
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
- ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 4.1).
- Π£Π²Π΅Π»ΠΈΡΡΡΠ΅
Lock TimeoutΠ² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ SQL Server Π΄ΠΎ 30000 ΠΌΡ. - ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΊΠΎΠ΄ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 4.2).
5.2. ΠΡΠΈΠ±ΠΊΠ° "ΠΠΎΡΠΎΠΊ Π·Π°ΠΊΡΡΡ" (ThreadClosed)
Π‘ΠΈΠΌΠΏΡΠΎΠΌΡ: ΠΠ½Π΅Π·Π°ΠΏΠ½ΠΎΠ΅ Π·Π°ΠΊΡΡΡΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΠΠΎΡΠΎΠΊ Π·Π°ΠΊΡΡΡ ΠΈΠ»ΠΈ Thread has been closed.
ΠΡΠΈΡΠΈΠ½Ρ:
- ΠΠ±ΡΡΠ² ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ 1Π‘.
- ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅.
- ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠΎΠΌ ΠΈΠ»ΠΈ ΡΠ°Π΅ΡΠ²ΠΎΠ»ΠΎΠΌ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
- ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠ΅ΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ.
- ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ ΡΠ΅ΡΠ΅Π²ΡΡ Π°Π΄Π°ΠΏΡΠ΅ΡΠΎΠ².
- ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²
1cv8.exe,ragent.exe,rmngr.exeΠ² Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠ΅. - ΠΠΊΠ»ΡΡΠΈΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΆΡΡΠ½Π°Π» ΠΈ Π½Π°ΠΉΠ΄ΠΈΡΠ΅ ΡΡΠ΅ΠΊΡΡΠ΅ΠΉΡ ΠΎΡΠΈΠ±ΠΊΠΈ.
5.3. ΠΠ°Π²ΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ
Π‘ΠΈΠΌΠΏΡΠΎΠΌΡ: 1Π‘ "ΠΏΠΎΠ΄Π²ΠΈΡΠ°Π΅Ρ" Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ½ΡΡ, Π½ΠΎ Π² ΠΆΡΡΠ½Π°Π»Π°Ρ Π½Π΅Ρ ΡΠ²Π½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π²ΠΈΠ΄ΡΡ "ΠΏΠ΅ΡΠΎΡΠ½ΡΠ΅ ΡΠ°ΡΡ" ΠΈΠ»ΠΈ ΠΏΡΡΡΠΎΠ΅ ΠΎΠΊΠ½ΠΎ.
ΠΡΠΈΡΠΈΠ½Ρ:
- Π‘ΠΊΡΡΡΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ SQL Server.
- ΠΠΎΠ»Π³ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ.
- ΠΠ΅Ρ Π²Π°ΡΠΊΠ° ΡΠ΅ΡΡΡΡΠΎΠ² (CPU ΠΈΠ»ΠΈ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΅ I/O).
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
- ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ SQL Server Profiler ΠΈ Π½Π°ΠΉΠ΄ΠΈΡΠ΅ Π΄ΠΎΠ»Π³ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ (Π΄ΠΎΠ»ΡΡΠ΅ 10 ΡΠ΅ΠΊΡΠ½Π΄).
- ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° Π΄ΠΈΡΠΊ (ΡΡΠ΅ΡΡΠΈΠΊΠΈ
Avg. Disk sec/ReadΠΈAvg. Disk sec/WriteΠ² PerfMon). - ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ .
5.4. ΠΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈ ΡΠ΅Π³Π»Π°ΠΌΠ΅Π½ΡΠ½ΡΡ Π·Π°Π΄Π°Π½ΠΈΡΡ
Π‘ΠΈΠΌΠΏΡΠΎΠΌΡ: Π€ΠΎΠ½ΠΎΠ²ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈΠ»ΠΈ ΡΠ°ΡΡΠ΅Ρ Π·Π°ΡΠΏΠ»Π°ΡΡ) Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΠΏΠΎΡΠΎΠΊΠ° ΠΈΠ»ΠΈ Π²ΠΈΡΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ.
ΠΡΠΈΡΠΈΠ½Ρ:
- ΠΠΎΠ½ΡΠ»ΠΈΠΊΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π³Π»Π°ΠΌΠ΅Π½ΡΠ½ΡΠΌ Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌΠΈ ΡΠ΅Π°Π½ΡΠ°ΠΌΠΈ.
- ΠΠ΅Ρ Π²Π°ΡΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΆΠ΅Π»ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
- ΠΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π·Π°Π΄Π°Π½ΠΈΡ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
- ΠΠ΅ΡΠ΅Π½Π΅ΡΠΈΡΠ΅ ΡΠ΅Π³Π»Π°ΠΌΠ΅Π½ΡΠ½ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ Π½Π° Π½ΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
- Π Π°Π·Π±Π΅ΠΉΡΠ΅ ΡΡΠΆΠ΅Π»ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΡΠ°ΡΡΠΈ.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ
Π Π°Π·ΡΠ΅ΡΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ Π·Π°Π΄Π°Π½ΠΈΡ (Π΅ΡΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ).
5.5. ΠΠ΅Π΄Π»ΠΎΠΊΠΈ (Π²Π·Π°ΠΈΠΌΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ)
Π‘ΠΈΠΌΠΏΡΠΎΠΌΡ: Π ΠΆΡΡΠ½Π°Π»Π°Ρ
SQL Server ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π·Π°ΠΏΠΈΡΠΈ ΠΎ Π΄Π΅Π΄Π»ΠΎΠΊΠ°Ρ
(deadlock), Π° Π² 1Π‘ β ΠΎΡΠΈΠ±ΠΊΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ.
ΠΡΠΈΡΠΈΠ½Ρ:
- ΠΠ²Π° ΠΏΠΎΡΠΎΠΊΠ° Π±Π»ΠΎΠΊΠΈΡΡΡΡ ΡΠ΅ΡΡΡΡΡ Π² ΡΠ°Π·Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΠΎΡΠΎΠΊ 1 Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π, Π·Π°ΡΠ΅ΠΌ Π; ΠΠΎΡΠΎΠΊ 2 Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π, Π·Π°ΡΠ΅ΠΌ Π).
- Π‘Π»ΠΈΡΠΊΠΎΠΌ Π°Π³ΡΠ΅ΡΡΠΈΠ²Π½ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ 1Π‘.
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
- ΠΠΊΠ»ΡΡΠΈΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ Π΄Π΅Π΄Π»ΠΎΠΊΠΎΠ² Π² SQL Server:
-- ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π΅Π΄Π»ΠΎΠΊΠΎΠ²DBCC TRACEON (1204, 1222, -1);
- ΠΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ»Π°Π½Ρ Π΄Π΅Π΄Π»ΠΎΠΊΠΎΠ² (ΠΎΠ½ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ°Π±Π»ΠΈΡΠ°Ρ ).
- ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² Π² ΠΊΠΎΠ΄Π΅ (Π²ΡΠ΅Π³Π΄Π° Π±Π»ΠΎΠΊΠΈΡΡΠΉΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ΅).
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠ»Π°Π½ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π΄Π²Π° ΠΏΠΎΡΠΎΠΊΠ° (ΠΏΡΠΎΡΠ΅ΡΡΠ°), ΡΡΠ°ΡΡΠ²ΡΡΡΠΈΡ Π² Π΄Π΅Π΄Π»ΠΎΠΊΠ΅, ΠΈ ΡΠ΅ΡΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ Π±Π»ΠΎΠΊΠΈΡΡΡΡ. Π‘ΡΡΠ΅Π»ΠΊΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
- ΠΡΠΎΡΠ΅ΡΡ 1 ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ΅ A ΠΈ ΠΆΠ΄Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ΅ B.
- ΠΡΠΎΡΠ΅ΡΡ 2 ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ΅ B ΠΈ ΠΆΠ΄Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ΅ A.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ β ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π° ΠΏΡΠΎΡΠ΅ΡΡΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΠ°Π±Π»ΠΈΡΡ Π² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ (ΡΠ½Π°ΡΠ°Π»Π° A, ΠΏΠΎΡΠΎΠΌ