Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Β«1Π‘ Π·Π°Ρ Π²Π°ΡΠ΅Π½ΠΎ Π‘Π£ΠΠΒ» β ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΌΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅. ΠΠ½Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ·-Π·Π° Π°ΠΊΡΠΈΠ²Π½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ Π‘Π£ΠΠ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Microsoft SQL Server, PostgreSQL ΠΈΠ»ΠΈ IBM DB2). ΠΠΎ ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Β«Π·Π°Ρ Π²Π°ΡΠ΅Π½ΠΎΒ», Π² ΠΊΠ°ΠΊΠΈΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ°Ρ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΡΡΡ ΡΡΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΈ ΠΊΠ°ΠΊ Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ?
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΡΠΌΡΡ:
- πΉ Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Β«Π·Π°Ρ Π²Π°Ρ Π‘Π£ΠΠΒ»** ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ (ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ).
- π Π ΠΊΠ°ΠΊΠΈΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ°Ρ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°** β ΡΠ΅ΠΊΡΠ½Π΄Ρ, ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π΅ΡΡ?
- π οΈ ΠΠ°ΠΊ Π½Π°ΠΉΡΠΈ ΠΈ ΡΠ±ΠΈΡΡ Β«Π²ΠΈΡΡΡΠΈΠ΅Β» ΡΠ΅ΡΡΠΈΠΈ** Π±Π΅Π· ΡΠΈΡΠΊΠ° Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ .
- βοΈ ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ 1Π‘ ΠΈ Π‘Π£ΠΠ**, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ.
ΠΡΠΈΠ±ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ: ΠΎΡ ΠΊΡΠ°ΡΠΊΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Β«ΠΏΠΎΠ΄Π²ΠΈΡΠ°Π½ΠΈΠΉΒ» Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΡΠΊΡΡΡΡ Π±Π°Π·Ρ. Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΠ½Π° ΡΠ²ΡΠ·Π°Π½Π° Ρ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ, Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ°Π±ΠΎΡΡ 1Π‘ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°ΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ. ΠΠ°Π»Π΅Π΅ β ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ ΡΠ°Π·Π±ΠΎΡ.
1. Π§ΡΠΎ Π·Π½Π°ΡΠΈΡ Β«1Π‘ Π·Π°Ρ Π²Π°ΡΠ΅Π½ΠΎ Π‘Π£ΠΠΒ» β ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Β«ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ Π·Π°Ρ Π²Π°ΡΠ΅Π½Π° ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅ΡΡΠΈΠ΅ΠΉΒ» ΠΈΠ»ΠΈ Β«Π‘Π£ΠΠ Π·Π°Ρ Π²Π°ΡΠ΅Π½Π°Β» ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ΅ΡΡΠΈΠΉ 1Π‘ (ΠΈΠ»ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ) ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π‘Π£ΠΠ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ:
- π ΠΠ»ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ°ΡΡΠΎΠ²Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ Π·Π°Π²Π΅ΡΡΠΈΠ»Π°ΡΡ.
- π» Β«ΠΠΎΠ΄Π²ΠΈΡΡΠΈΠΉΒ» ΡΠ΅Π°Π½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ β ΠΊΠΎΠ³Π΄Π° 1Π‘ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ Π·Π°ΠΊΡΡΠ»Π°ΡΡ, Π½ΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π² Π‘Π£ΠΠ ΠΎΡΡΠ°Π»Π°ΡΡ.
- π ΠΠΎΠ½ΡΠ»ΠΈΠΊΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ β ΠΊΠΎΠ³Π΄Π° Π΄Π²Π΅ ΡΠ΅ΡΡΠΈΠΈ ΠΏΡΡΠ°ΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠ΅.
- π ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ.
ΠΠ°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ 1Π‘ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΡΠ°ΠΌΡ ΡΠ΅Π±Ρ β Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π‘Π£ΠΠ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Microsoft SQL Server ΡΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ:
- π
Shared (S)Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ (Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ). - π
Exclusive (X)Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ (Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ). - π
Update (U)Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ (ΠΏΠ΅ΡΠ΅Π΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ).
ΠΡΠ»ΠΈ ΡΠ΅ΡΡΠΈΡ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Exclusive-Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄ΠΎΠ»Π³ΠΎ, Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π½Π΅ ΡΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ β ΠΈ ΡΠ²ΠΈΠ΄ΠΈΡ ΠΎΡΠΈΠ±ΠΊΡ Β«Π·Π°Ρ
Π²Π°ΡΠ΅Π½ΠΎ Π‘Π£ΠΠΒ».
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ (1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅ 8.3 Π±Π΅Π· Π‘Π£ΠΠ) ΠΏΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π±Π°Π·Ρ (1Cv8.1CD). Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π·chdbfl.exe.
2. Π ΡΡΠΌ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΡΡΡ Β«Π·Π°Ρ Π²Π°Ρ Π‘Π£ΠΠΒ» β ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² Π‘Π£ΠΠ ΠΈΠ·ΠΌΠ΅ΡΡΡΡΡΡ Π½Π΅ Π² ΠΏΡΠΈΠ²ΡΡΠ½ΡΡ ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ ΠΈΠ»ΠΈ ΠΌΠ΅Π³Π°Π±Π°ΠΉΡΠ°Ρ , Π° Π² ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ΅ΡΡΠΈΠΊΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΠΈΠΏΠ° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ:
| ΠΠ΅ΡΡΠΈΠΊΠ° | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ SQL Server | ΠΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ PostgreSQL |
|---|---|---|---|
| ΠΡΠ΅ΠΌΡ ΡΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ | ΠΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎ ΡΠ΅ΡΡΠΈΡ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ (Π² ΠΌΡ/ΡΠ΅ΠΊ). | sys.dm_tran_locks (ΠΏΠΎΠ»Π΅ request_time) |
pg_locks + pg_stat_activity |
| Π’ΠΈΠΏ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ | Shared (S), Exclusive (X), Update (U) ΠΈ Π΄Ρ. | LOCK_MODE Π² sys.dm_tran_locks |
mode Π² pg_locks |
| ΠΠ±ΡΠ΅ΠΊΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ | ΠΠ°ΠΊΠ°Ρ ΡΠ°Π±Π»ΠΈΡΠ°, ΡΡΡΠΎΠΊΠ° ΠΈΠ»ΠΈ ΡΡΡΠ°Π½ΠΈΡΠ° Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π°. | resource_associated_entity_id |
relation (OID ΡΠ°Π±Π»ΠΈΡΡ) |
| ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ | Π‘ΠΊΠΎΠ»ΡΠΊΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠ΄Π½Π° ΡΠ΅ΡΡΠΈΡ. | ΠΠ°ΠΏΡΠΎΡ ΠΊ sys.dm_tran_session_transactions |
COUNT(*) ΠΏΠΎ pg_locks Π΄Π»Ρ PID |
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Microsoft SQL Server ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π·Π°ΠΏΡΠΎΡ:
SELECT
t.session_id,
s.login_name,
t.transaction_id,
l.resource_type,
l.request_mode,
l.request_status,
DATEDIFF(ms, t.transaction_begin_time, GETDATE()) AS duration_ms
FROM
sys.dm_tran_locks l
JOIN
sys.dm_tran_active_transactions t ON l.lock_owner_address = t.transaction_id
JOIN
sys.dm_exec_sessions s ON t.session_id = s.session_id
WHERE
l.request_status = 'GRANTED';
ΠΡΠΎΡ Π·Π°ΠΏΡΠΎΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ Π²ΡΠ΅ Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΠΈΡ ΡΠΈΠΏ, Π²ΡΠ΅ΠΌΡ ΡΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ (Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ ) ΠΈ ΠΊΠ°ΠΊΠ°Ρ ΡΠ΅ΡΡΠΈΡ ΠΈΡ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ.
ΠΡΠ»ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π·Π°ΠΏΡΠΎΡΠ° Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Ρ duration_ms > 300000 (5 ΠΌΠΈΠ½ΡΡ), Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ Β«ΠΏΠΎΠ΄Π²ΠΈΡΡΠ΅ΠΉΒ» ΠΈ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠΈΡΡ.
3. ΠΠ°ΠΊ Π½Π°ΠΉΡΠΈ ΠΈ ΡΠ±ΠΈΡΡ Β«Π²ΠΈΡΡΡΡΡΒ» ΡΠ΅ΡΡΠΈΡ Π² Π‘Π£ΠΠ
ΠΡΠ»ΠΈ Π±Π°Π·Π° Β«Π·Π°Ρ Π²Π°ΡΠ΅Π½Π°Β», ΠΏΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΈ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΡ ΡΠ΅ΡΡΠΈΡ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Π‘Π£ΠΠ.
πΉ ΠΠ»Ρ Microsoft SQL Server
- ΠΡΠΊΡΠΎΠΉΡΠ΅ SQL Server Management Studio (SSMS).
- ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π·Π°ΠΏΡΠΎΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ:
SELECTsession_id,
login_name,
host_name,
program_name,
last_request_start_time,
last_request_end_time
FROM
sys.dm_exec_sessions
WHERE
is_user_process = 1;
- ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΠ΅ΡΡΠΈΡ Ρ Π΄ΠΎΠ»Π³ΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (
last_request_start_time). - ΠΠ°Π²Π΅ΡΡΠΈΡΠ΅ Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
KILL {session_id};
πΉ ΠΠ»Ρ PostgreSQL
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ ΠΊ Π±Π°Π·Π΅ ΡΠ΅ΡΠ΅Π·
psqlΠΈΠ»ΠΈ pgAdmin. - ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ:
SELECTpid,
usename,
query,
now() - query_start AS duration
FROM
pg_stat_activity
WHERE
state = 'active';
- ΠΠ°Π²Π΅ΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ:
SELECT pg_terminate_backend({pid});
ΠΡΠΎΠ²Π΅ΡΡΡΠ΅, ΡΡΠΎ ΡΠ΅ΡΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Β«Π²ΠΈΡΡΡΠ°ΡΒ» (Π²ΡΠ΅ΠΌΡ > 5 ΠΌΠΈΠ½ΡΡ)
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ ΠΊΡΠΈΡΠΈΡΠ½Π°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅)
Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ Π»ΠΎΠ³ Π°ΠΊΡΠΈΠ²Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π°
ΠΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΌ ΡΠ°Π·ΡΡΠ²Π΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ-->
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΡΠΊΠ°ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΈ ΠΏΠΎΡΠ΅ΡΠ΅ Π½Π΅ΡΠΎΡ ΡΠ°Π½ΡΠ½Π½ΡΡ Π΄Π°Π½Π½ΡΡ . ΠΡΠ΅Π³Π΄Π° ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΡΠ°ΠΉΡΠ΅ΡΡ ΡΠ²ΡΠ·Π°ΡΡΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, ΡΡΡ ΡΠ΅ΡΡΠΈΡ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π±Π°Π·Ρ.
4. Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΎΡΠΈΠ±ΠΊΠΈ Β«1Π‘ Π·Π°Ρ Π²Π°ΡΠ΅Π½ΠΎ Π‘Π£ΠΠΒ»
ΠΡΠΈΠ±ΠΊΠ° ΡΠ΅Π΄ΠΊΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠ°ΠΌΠ° ΠΏΠΎ ΡΠ΅Π±Π΅ β ΠΎΠ±ΡΡΠ½ΠΎ Π΅ΠΉ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈΠ»ΠΈ ΡΠ±ΠΎΠΈ. ΠΠΎΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ:
- π₯οΈ ΠΠ²Π°ΡΠΈΠΉΠ½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ 1Π‘ β ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°ΠΊΡΡΠ» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ΅ΡΠ΅Π· Β«ΠΠΈΡΠΏΠ΅ΡΡΠ΅Ρ Π·Π°Π΄Π°ΡΒ» ΠΈΠ»ΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ΅Π» ΡΠ±ΠΎΠΉ ΡΠ»Π΅ΠΊΡΡΠΎΠΏΠΈΡΠ°Π½ΠΈΡ.
- β³ ΠΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ β ΠΌΠ°ΡΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΠ²ΠΎΠ΄ΠΊΠ°, ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½ΡΠΌΠΈ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ.
- π ΠΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΠΏΡΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ β Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠ΅Ρ Π‘Π£ΠΠ ΠΈΠ»ΠΈ Π·Π΅ΡΠΊΠ°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
- π Π ΡΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ β Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π²ΡΡΡΠ½ΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π» ΡΠ°Π±Π»ΠΈΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ.
- π ΠΠ΅ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ β ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠ΅ SQL-Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»Π³ΠΎ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ.
ΠΡΠΈΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ: Π 80% ΡΠ»ΡΡΠ°Π΅Π² ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ²ΡΠ·Π°Π½Π° Ρ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Π°Π½ΡΠΎΠ² 1Π‘. ΠΡΠ»ΠΈ Π² Π²Π°ΡΠ΅ΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΡΠΎ Β«Π²ΡΠ»Π΅ΡΠ°Π΅ΡΒ» 1Π‘, Π½Π°ΡΡΡΠΎΠΉΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ Β«Π²ΠΈΡΡΡΠΈΡ
Β» ΡΠ΅ΡΡΠΈΠΉ ΡΠ΅ΡΠ΅Π· SQL Agent (Π΄Π»Ρ SQL Server) ΠΈΠ»ΠΈ cron (Π΄Π»Ρ PostgreSQL).
Π§ΡΠΎΠ±Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅:
- π
ΠΡΡΠ½Π°Π»Ρ 1Π‘ (
1Cv8.log,1Cv8Err.log) Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ. - π ΠΠΎΠ³ΠΈ Π‘Π£ΠΠ β Π² Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠΈ ΠΎ ΡΠ°ΠΉΠΌ-Π°ΡΡΠ°Ρ ΠΈΠ»ΠΈ Π΄Π΅Π΄Π»ΠΎΠΊΠ°Ρ .
- π ΠΠΎΠ½ΠΈΡΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ β Π΅ΡΠ»ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ Π² ΠΏΠΈΠΊΠΎΠ²ΡΠ΅ ΡΠ°ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π΄Π΅Π΄Π»ΠΎΠΊ (Π²Π·Π°ΠΈΠΌΠ½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°)?
ΠΠ΅Π΄Π»ΠΎΠΊ β ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π²Π·Π°ΠΈΠΌΠ½ΠΎ Π±Π»ΠΎΠΊΠΈΡΡΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
- Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ 1 Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π»Π° ΡΠ°Π±Π»ΠΈΡΡ A ΠΈ ΠΆΠ΄ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ΅ B.
- Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ 2 Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π»Π° ΡΠ°Π±Π»ΠΈΡΡ B ΠΈ ΠΆΠ΄ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ΅ A.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΎΠ±Π΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Β«Π·Π°Π²ΠΈΡΠ°ΡΡΒ» Π½Π°Π²ΡΠ΅Π³Π΄Π°, ΠΏΠΎΠΊΠ° ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½Π° Π‘Π£ΠΠ.
5. ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ 1Π‘ ΠΈ Π‘Π£ΠΠ Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ»Π°ΠΊΡΠΈΠΊΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ
Π§ΡΠΎΠ±Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΡΠΊ ΠΎΡΠΈΠ±ΠΊΠΈ Β«1Π‘ Π·Π°Ρ Π²Π°ΡΠ΅Π½ΠΎ Π‘Π£ΠΠΒ», Π½Π°ΡΡΡΠΎΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
π§ ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅
- π Π’Π°ΠΉΠΌ-Π°ΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ β Π²
1Cv8.iniΠ΄ΠΎΠ±Π°Π²ΡΡΠ΅:[DB]DBLockWaitTime=30000 ; 30 ΡΠ΅ΠΊΡΠ½Π΄ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 20000)
- π ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ β Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ:
AutoDisconnect=1 - π‘ ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ β Π½Π°ΡΡΡΠΎΠΉΡΠ΅ ΡΠΎΠ½ΠΎΠ²ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π·
Π Π΅Π³Π»Π°ΠΌΠ΅Π½ΡΠ½ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ.
βοΈ ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Microsoft SQL Server
- π Π£ΡΠΎΠ²Π΅Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
READ COMMITTED SNAPSHOTΠ΄Π»Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ:ALTER DATABASE [YourDB] SET READ_COMMITTED_SNAPSHOT ON; - β±οΈ Π’Π°ΠΉΠΌ-Π°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ β Π½Π°ΡΡΡΠΎΠΉΡΠ΅ ΡΠ΅ΡΠ΅Π·:
EXEC sp_configure 'remote query timeout', 300;RECONFIGURE;
- π ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ β Π½Π°ΡΡΡΠΎΠΉΡΠ΅ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· SQL Server Agent.
π ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ PostgreSQL
- β³ Π’Π°ΠΉΠΌ-Π°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ β Π²
postgresql.conf:lock_timeout = '30s' ; ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ - π ΠΠ²ΡΠΎΠΎΡΠΈΡΡΠΊΠ° β Π²ΠΊΠ»ΡΡΠΈΡΠ΅
autovacuumΠ΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ Β«ΡΠ°Π·Π΄ΡΠ²Π°Π½ΠΈΡΒ» ΡΠ°Π±Π»ΠΈΡ.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ²Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ (READ COMMITTED SNAPSHOT) ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° Π»ΠΎΠ³ΠΈΠΊΡ ΡΠ°Π±ΠΎΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΎΡΡΡΡΠΎΠ² Π² 1Π‘. ΠΠ΅ΡΠ΅Π΄ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΡΠΉΡΠ΅ Π½Π° ΠΊΠΎΠΏΠΈΠΈ Π±Π°Π·Ρ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° AutoDisconnect=1 Π² 1Cv8.ini Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°Π·ΡΡΠ²Π°Π΅Ρ Β«ΠΏΠΎΠ΄Π²ΠΈΡΡΠΈΠ΅Β» ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π½ΠΎ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π‘Π£ΠΠ. ΠΠ»Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄: Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ 1Π‘ + Π‘Π£ΠΠ + ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³.
6. ΠΠ°ΠΊ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ°Π±ΠΎΡΡ 1Π‘ ΠΏΠΎΡΠ»Π΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ
ΠΡΠ»ΠΈ Π±Π°Π·Π° ΡΠΆΠ΅ Β«Π·Π°Ρ Π²Π°ΡΠ΅Π½Π°Β», ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΡΡΠΎΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ:
- ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ β ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠΌ Π²Ρ ΠΎΠ΄ΠΎΠΌ Π² 1Π‘.
- ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ΅ΡΡΠΈΠΈ Π² Π‘Π£ΠΠ (ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 3).
- ΠΠ°Π²Π΅ΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΠ΅ ΡΠ΅ΡΡΠΈΠΈ ΡΠ΅ΡΠ΅Π·
KILL(SQL Server) ΠΈΠ»ΠΈpg_terminate_backend(PostgreSQL). - ΠΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ»ΡΠΆΠ±Ρ 1Π‘:
net stop "1C:Enterprise 8.3 Server Agent"net start "1C:Enterprise 8.3 Server Agent"
- ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ Π±Π°Π·Ρ:
CHECKDB [YourDB] WITH NO_INFOMSGS;
ΠΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΎΡΠΈΠ±ΠΊΠ° ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ:
- π ΠΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π±Π°Π·Ρ ΠΈΠ· ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ (Π΅ΡΠ»ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠΈΠ²Π΅Π»Π° ΠΊ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΠΌ).
- π ΠΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ Π‘Π£ΠΠ β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π³Π»ΡΠ±ΠΎΠΊΠ°Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ°.
Π ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ (1Π‘ Π±Π΅Π· Π‘Π£ΠΠ) ΠΏΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ΅ Β«ΠΠ°Π·Π° Π·Π°Ρ Π²Π°ΡΠ΅Π½Π° ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΠΎΒ»:
- ΠΠ°ΠΊΡΠΎΠΉΡΠ΅ Π²ΡΠ΅ ΡΠ΅ΡΡΠΈΠΈ 1Π‘ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈ ΡΠ°Π±ΠΎΡΠΈΡ ΡΡΠ°Π½ΡΠΈΡΡ .
- ΠΡΠΎΠ²Π΅ΡΡΡΠ΅, Π½Π΅ Π·Π°ΠΏΡΡΠ΅Π½ Π»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ
ragent.exeΠΈΠ»ΠΈrmngr.exeΠ² ΠΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ΅ Π·Π°Π΄Π°Ρ. - ΠΡΠ»ΠΈ Π±Π°Π·Π° ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½Π°, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅:
chdbfl.exe -f "C:\Path\To\Your\Base\1Cv8.1CD"
7. Π§Π°ΡΡΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ (FAQ)
β ΠΠΎΡΠ΅ΠΌΡ ΠΎΡΠΈΠ±ΠΊΠ° Β«1Π‘ Π·Π°Ρ Π²Π°ΡΠ΅Π½ΠΎ Π‘Π£ΠΠΒ» ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ?
ΠΡΠΈΠ±ΠΊΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Ρ ΡΠ΅Ρ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΡΡΠΈ Π·Π°ΠΏΡΠΎΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΡΡ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ (ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Exclusive-Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ), Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡ ΠΆΠ΅ ΡΡΡΠΎΠΊΡ β Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎΠ»ΡΡΠΈΡ ΠΎΡΠΈΠ±ΠΊΡ. Π Π΅ΡΠ΅Π½ΠΈΠ΅: ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ.
β ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ±ΠΈΠ²Π°Π½ΠΈΠ΅ Β«Π²ΠΈΡΡΡΠΈΡ Β» ΡΠ΅ΡΡΠΈΠΉ?
ΠΠ°. Π SQL Server ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· SQL Agent Job, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π· Π² 5β10 ΠΌΠΈΠ½ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΊΡΠΈΠΏΡ:
DECLARE @kill varchar(8000) = '';
SELECT @kill = @kill + 'KILL ' + CAST(session_id AS varchar(5)) + ';'
FROM sys.dm_exec_sessions
WHERE status = 'sleeping' AND last_request_end_time < DATEADD(minute, -15, GETDATE());
EXEC(@kill);
ΠΠ»Ρ PostgreSQL Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΡΠΊΡΠΈΠΏΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ΅ΡΠ΅Π· cron.
β ΠΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΊΠ°ΠΊΠ°Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π±Π°Π·Ρ?
Π SQL Server ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π·Π°ΠΏΡΠΎΡ:
SELECT
t1.resource_type,
t1.resource_database_id,
t1.request_mode,
t1.request_session_id,
t2.blocking_session_id
FROM
sys.dm_tran_locks t1
JOIN
sys.dm_os_waiting_tasks t2 ON t1.lock_owner_address = t2.resource_address;
Π 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;
β Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΡΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½ΡΠΌΠΈ (Π ΠΠ, Π²ΡΠ³ΡΡΠ·ΠΊΠ°/Π·Π°Π³ΡΡΠ·ΠΊΠ°)?
ΠΡΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½ΡΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΈΠ·-Π·Π°:
- π ΠΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ β ΡΠ°Π·Π±Π΅ΠΉΡΠ΅ ΠΎΠ±ΠΌΠ΅Π½ Π½Π° ΠΌΠ΅Π½ΡΡΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ.
- π ΠΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² Π²Π΅ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² β Π½Π°ΡΡΡΠΎΠΉΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΎΠ±ΠΌΠ΅Π½Π° Π²
ΠΠ»Π°Π½ ΠΎΠ±ΠΌΠ΅Π½Π°. - π‘ ΠΠ΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ β ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ΅ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ·Π»Π°ΠΌΠΈ Π ΠΠ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΠ½ΠΎΠ²ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈ Π½Π°ΡΡΡΠΎΠΉΡΠ΅ ΡΠ°ΠΉΠΌ-Π°ΡΡΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΡΠ·Π»Π° ΠΎΠ±ΠΌΠ΅Π½Π°.
β ΠΠΎΠΆΠ΅Ρ Π»ΠΈ Π°Π½ΡΠΈΠ²ΠΈΡΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ Β«1Π‘ Π·Π°Ρ Π²Π°ΡΠ΅Π½ΠΎ Π‘Π£ΠΠΒ»?
ΠΠ°, Π΅ΡΠ»ΠΈ Π°Π½ΡΠΈΠ²ΠΈΡΡΡ ΡΠΊΠ°Π½ΠΈΡΡΠ΅Ρ ΡΠ°ΠΉΠ»Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
(1Cv8.1CD, .mdf/.ldf) Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ 1Π‘. ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°ΠΌ ΡΡΠ΅Π½ΠΈΡ/Π·Π°ΠΏΠΈΡΠΈ ΠΈ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌ. Π Π΅ΡΠ΅Π½ΠΈΠ΅:
- β ΠΡΠΊΠ»ΡΡΠΈΡΠ΅ ΠΏΠ°ΠΏΠΊΠΈ Ρ Π±Π°Π·Π°ΠΌΠΈ 1Π‘ ΠΈΠ· ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠΎΠΌ.
- β ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Π²ΡΠ΅ΠΌΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.