ΠΡΡΠ½Π°Π»Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Microsoft SQL Server ΠΈ PostgreSQL Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΠ°Π·ΡΠ°ΡΡΠ°ΡΡΡΡ Π΄ΠΎ Π³ΠΈΠ³Π°Π½ΡΡΠΊΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ², Π·Π°Π½ΠΈΠΌΠ°Ρ ΡΠΎΡΠ½ΠΈ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°. ΠΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ , Π½ΠΎ ΠΈ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ Π±Π°Π·Ρ β ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² ΡΠ΅ΠΆΠΈΠΌΠ°Ρ Ρ Π²ΡΡΠΎΠΊΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ. ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ 1Π‘ ΡΠ°ΡΡΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΡΠΈΠΏΠ° "ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ΅ΡΡΠ° Π½Π° Π΄ΠΈΡΠΊΠ΅ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ" ΠΈΠ»ΠΈ "Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΡΠΉ ΠΆΡΡΠ½Π°Π» ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½", ΠΊΠΎΡΠΎΡΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΡΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ: ΠΎΠ±ΠΌΠ΅Π½Ρ Π΄Π°Π½Π½ΡΠΌΠΈ, ΡΠ΅Π³Π»Π°ΠΌΠ΅Π½ΡΠ½ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ±ΡΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π²Ρ Π½Π°ΠΉΠ΄ΡΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΡΠΈΡΡΠΊΠΈ Π»ΠΎΠ³ΠΎΠ² SQL Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ
Π‘Π£ΠΠ, Π²ΠΊΠ»ΡΡΠ°Ρ MS SQL Server (2012β2022), PostgreSQL (9.6β15) ΠΈ 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅ 8.3. ΠΡ ΡΠ°Π·Π±Π΅ΡΡΠΌ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠ΅ΡΠ΅Π· SQL Management Studio ΠΈΠ»ΠΈ pgAdmin, Π½ΠΎ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ T-SQL, PowerShell ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1Π‘. ΠΡΠΎΠ±ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΄Π΅Π»ΠΈΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ β ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΠΎΡΠ΅ΡΠΈ Π΄Π°Π½Π½ΡΡ
ΠΈ Π½Π΅ Π½Π°ΡΡΡΠΈΡΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ Π±Π°Π·Ρ ΠΏΡΠΈ ΠΎΡΠΈΡΡΠΊΠ΅.
ΠΡΠ»ΠΈ Π²Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΡΠ΅ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² 1Π‘ ΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΠΎΠ±Π»Π°ΡΠ½ΡΠΌΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 1Π‘:Fresh), ΡΠ°ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ Π°Π΄Π°ΠΏΡΠ°ΡΠΈΠΈ. ΠΠ»Ρ ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°Π΅Π² ΠΌΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠΌ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈΠΌ ΠΎ ΡΠΈΠΏΠΈΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΊΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΠΏΠΎΡΠ΅ΡΠ΅ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ 1Π‘ ΠΈ Π‘Π£ΠΠ ΠΏΠΎΡΠ»Π΅ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΎΡΠΈΡΡΠΊΠΈ Π»ΠΎΠ³ΠΎΠ².
ΠΠΎΡΠ΅ΠΌΡ Π»ΠΎΠ³ SQL Π² 1Π‘ ΡΠ°Π·ΡΠ°ΡΡΠ°Π΅ΡΡΡ ΠΈ ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΈΡΡΠΈΡΡ
ΠΡΡΠ½Π°Π» ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ (transaction log) Π² Π‘Π£ΠΠ ΡΠΈΠΊΡΠΈΡΡΠ΅Ρ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
: ΠΎΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π² 1Π‘ Π΄ΠΎ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠ΅Π³Π»Π°ΠΌΠ΅Π½ΡΠ½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
(.mdf/.ndf Π² MS SQL ΠΈΠ»ΠΈ data-Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π² PostgreSQL), Π»ΠΎΠ³ Π½Π΅ ΡΠΆΠΈΠΌΠ°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΡΠΈ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ Π²ΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ ΡΠ°Π·ΡΠ°ΡΡΠ°Π½ΠΈΡ:
πΉ ΠΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ: ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΠΎΠ»Π½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² Π² 1Π‘ ΠΈΠ»ΠΈ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½ΡΠΌΠΈ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½ΡΠΌΠΈ (XML). Π’Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π±Π»ΠΎΠΊΠΈΡΡΡΡ ΠΎΡΠΈΡΡΠΊΡ Π»ΠΎΠ³Π° Π΄ΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ.
πΉ Π Π΅ΠΆΠΈΠΌ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ FULL/LOGGED: Π MS SQL ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π±Π°Π· 1Π‘ ΡΠ°ΡΡΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ FULL, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΠΎΠ³Π°. Π PostgreSQL Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ Π΄Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ wal_level = replica.
πΉ ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΠΉ: ΠΠ΅Π· ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π±ΡΠΊΠ°ΠΏΠΎΠ² Π‘Π£ΠΠ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ "ΠΎΠ±ΡΠ΅Π·Π°ΡΡ" Π»ΠΎΠ³, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ±ΠΎΡ.
ΠΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ, ΡΡΠΎ Π»ΠΎΠ³ ΠΏΠΎΡΠ° ΡΠΈΡΡΠΈΡΡ:
- π ΠΠΈΡΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌ Π΄ΠΈΡΠΊΠ΅, Π³Π΄Π΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ ΡΠ°ΠΉΠ»Ρ Π»ΠΎΠ³Π°).
- β οΈ Π ΠΆΡΡΠ½Π°Π»Π΅ Windows ΠΈΠ»ΠΈ
eventlog1Π‘ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠΈΠΏΠ°"The transaction log for database 'YourBase' is full due to 'LOG_BACKUP'". - π’ ΠΠ°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² Π±Π°Π·Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π² 5β10 ΡΠ°Π· Π΄ΠΎΠ»ΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ).
- π Π Π΅Π³Π»Π°ΠΌΠ΅Π½ΡΠ½ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ 1Π‘ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
Π Π΅Π³Π»Π°ΠΌΠ΅Π½ΡΠ½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅.ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΠ½Π΄Π΅ΠΊΡΠΎΠ²ΠΠΎΠΈΡΠΊΠ°) Π½Π°ΡΠΈΠ½Π°ΡΡ "Π·Π°Π²ΠΈΡΠ°ΡΡ".
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠ»ΠΈ Π²Π°ΡΠ° Π±Π°Π·Π° 1Π‘ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅SIMPLE(MS SQL) ΠΈΠ»ΠΈwal_level = minimal(PostgreSQL), Π»ΠΎΠ³ ΠΎΡΠΈΡΠ°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΡΠ΅ΠΊΠΏΠΎΠΈΠ½ΡΠ°Ρ . Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΡΠ½Π°Ρ ΠΎΡΠΈΡΡΠΊΠ° Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, Π½ΠΎ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ.
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊ ΠΎΡΠΈΡΡΠΊΠ΅: ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ
ΠΠ΅ΡΠ΅Π΄ Π»ΡΠ±ΡΠΌΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΡΠΌΠΈ Ρ Π»ΠΎΠ³ΠΎΠΌ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . Π 1Π‘ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ΅ΡΠ΅Π·:
- π§ ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΎΡ:
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β ΠΡΠ³ΡΡΠ·ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ Π±Π°Π·Ρ(ΡΠ°ΠΉΠ».dt). - ποΈ
SQL Management Studio(Π΄Π»Ρ MS SQL): ΠΏΡΠ°Π²ΡΠΉ ΠΊΠ»ΠΈΠΊ ΠΏΠΎ Π±Π°Π·Π΅ βTasks β Back Up. - π ΠΠ»Ρ PostgreSQL: ΠΊΠΎΠΌΠ°Π½Π΄Π°
pg_dump -U username -d dbname -F c -f backup.dump.
Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π»ΠΎΠ³Π°:
- π Π MS SQL Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π·Π°ΠΏΡΠΎΡ:
DBCC SQLPERF(LOGSPACE);USE YourBaseName;
SELECT name, log_reuse_wait_desc FROM sys.databases WHERE name = 'YourBaseName';
ΠΡΠ»ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅
log_reuse_wait_descΠ½Π΅ ΠΏΡΡΡΠΎ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,LOG_BACKUPΠΈΠ»ΠΈACTIVE_TRANSACTION), Π»ΠΎΠ³ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. - π Π PostgreSQL ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ WAL-Π»ΠΎΠ³ΠΎΠ²:
SELECT pg_size_pretty(pg_table_size('pg_xlog/'::text) + pg_table_size('pg_wal/'::text));
ΠΠ°ΠΊΡΡΡΡ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΠ· Π±Π°Π·Ρ 1Π‘|Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ |ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π½Π° Π΄ΠΈΡΠΊΠ΅ (ΠΌΠΈΠ½ΠΈΠΌΡΠΌ 20% ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π»ΠΎΠ³Π°)|ΠΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅Π³Π»Π°ΠΌΠ΅Π½ΡΠ½ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ Π² 1Π‘|Π£Π±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π½Π΅Ρ Π°ΠΊΡΠΈΠ²Π½ΡΡ Π΄Π»ΠΈΠ½Π½ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ-->
ΠΡΠ»ΠΈ Π±Π°Π·Π° 1Π‘ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ 1Π‘:Π‘Π΅ΡΠ²Π΅ΡΠΎΠΌ ΠΏΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠΉ), ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠΈΡΡΠΊΠΎΠΉ Π»ΠΎΠ³Π° ΠΎΡΠΊΠ»ΡΡΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΠΎΠ½ΡΠΎΠ»Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
ras cluster --disable
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 1Π‘:Fresh ΠΈΠ»ΠΈ 1Π‘:ΠISPRU) ΠΏΡΡΠΌΠ°Ρ ΠΎΡΠΈΡΡΠΊΠ° Π»ΠΎΠ³ΠΎΠ² SQL ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π° ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠΌ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ Π² ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Ρ Π·Π°ΠΏΡΠΎΡΠΎΠΌ ΠΎΠ± ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°.
ΠΡΠΈΡΡΠΊΠ° Π»ΠΎΠ³Π° Π² Microsoft SQL Server Π΄Π»Ρ 1Π‘
ΠΠ»Ρ MS SQL ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΎΡΠΈΡΡΠΊΠΈ Π»ΠΎΠ³Π°, Π·Π°Π²ΠΈΡΡΡΠΈΡ ΠΎΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π±Π°Π·Ρ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΡ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ.
ΠΠ΅ΡΠΎΠ΄ 1: Π‘ΠΆΠ°ΡΠΈΠ΅ Π»ΠΎΠ³Π° ΡΠ΅ΡΠ΅Π· SQL Management Studio (GUI)
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄Π»Ρ Π±Π°Π· Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ FULL ΠΈΠ»ΠΈ BULK_LOGGED:
- ΠΡΠΊΡΠΎΠΉΡΠ΅ SQL Management Studio, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ.
- ΠΡΠ°Π²ΡΠΉ ΠΊΠ»ΠΈΠΊ ΠΏΠΎ Π±Π°Π·Π΅ 1Π‘ β
Tasks β Shrink β Files. - Π ΡΠΏΠΈΡΠΊΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π²ΡΠ±Π΅ΡΠΈΡΠ΅
Log(ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅.ldf). - Π£ΠΊΠ°ΠΆΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ
Shrink actionβRelease unused space(ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ). - ΠΠ°ΠΆΠΌΠΈΡΠ΅
OKΠΈ Π΄ΠΎΠΆΠ΄ΠΈΡΠ΅ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΡΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° Shrink Π½Π΅Π°ΠΊΡΠΈΠ²Π½Π°, Π·Π½Π°ΡΠΈΡ Π»ΠΎΠ³ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠ³Π°:
BACKUP LOG [YourBaseName] TO DISK = 'C:\Backups\YourBaseName_log.trn';
DBCC SHRINKFILE (N'YourBaseName_log', 100); -- Π£ΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π»ΠΎΠ³ Π΄ΠΎ 100 ΠΠ
ΠΠ΅ΡΠΎΠ΄ 2: ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΡΠΈΡΡΠΊΠ° ΡΠ΅ΡΠ΅Π· T-SQL
ΠΠ»Ρ Π±Π°Π· Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ SIMPLE ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΊΡΠΈΠΏΡ:
USE [master];
ALTER DATABASE [YourBaseName] SET RECOVERY SIMPLE;
DBCC SHRINKFILE (N'YourBaseName_log', 1);
ALTER DATABASE [YourBaseName] SET RECOVERY FULL; -- ΠΠ΅ΡΠ½ΡΡΡ ΡΠ΅ΠΆΠΈΠΌ FULL, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ΅Π½
ΠΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠΆΠ°ΡΠΈΡ Π»ΠΎΠ³ ΡΠ½ΠΎΠ²Π° Π±ΡΡΡΡΠΎ ΡΠ°Π·ΡΠ°ΡΡΠ°Π΅ΡΡΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅:
- π ΠΠ°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠΊΡΡΡΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π² 1Π‘ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅Π·Π°Π²Π΅ΡΡΡΠ½Π½ΡΠ΅ ΠΎΠ±ΠΌΠ΅Π½Ρ Π΄Π°Π½Π½ΡΠΌΠΈ).
- π₯ Π§Π°ΡΡΠΎΡΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ β Π»ΠΎΠ³ ΠΎΡΠΈΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ Π±ΡΠΊΠ°ΠΏΠ°.
- π οΈ ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π°Π²ΡΠΎΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° Π»ΠΎΠ³Π° (Π² ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ
Π±Π°Π·Ρ β
Files).
BACKUP LOG [YourBaseName] TO DISK = 'C:\Backups\YourBaseName_log.trn' WITH COMPRESSION;
ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡ Π΅Π³ΠΎ Π±Π΅ΡΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠΉ ΡΠΎΡΡ.-->
ΠΠ΅ΡΠΎΠ΄ 3: ΠΡΠΈΡΡΠΊΠ° ΡΠ΅ΡΠ΅Π· PowerShell (Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π±Π°Π·)
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΄Π΅ΡΡΡΠΊΠΈ Π±Π°Π· 1Π‘ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΊΡΠΈΠΏΡ PowerShell Π΄Π»Ρ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠΉ ΠΎΡΠΈΡΡΠΊΠΈ:
$servers = @("SQLServer1", "SQLServer2")
$databases = @("Base1", "Base2", "Base3")
foreach ($server in $servers) {
foreach ($db in $databases) {
Invoke-Sqlcmd -ServerInstance $server -Query "
USE [$db];
ALTER DATABASE [$db] SET RECOVERY SIMPLE;
DBCC SHRINKFILE (N'${db}_log', 1);
ALTER DATABASE [$db] SET RECOVERY FULL;"
}
}
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ SIMPLE-ΡΠ΅ΠΆΠΈΠΌΠ° Π²Ρ ΡΠ΅ΡΡΠ΅ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π±Π°Π·Ρ (point-in-time recovery). ΠΡΠΎΡ ΡΠ΅ΠΆΠΈΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ²ΡΡ
ΠΈΠ»ΠΈ Π½Π΅ΠΊΡΠΈΡΠΈΡΠ½ΡΡ
Π±Π°Π· 1Π‘.
ΠΡΠΈΡΡΠΊΠ° Π»ΠΎΠ³Π° Π² PostgreSQL Π΄Π»Ρ 1Π‘
Π PostgreSQL ΠΆΡΡΠ½Π°Π» ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ WAL (Write-Ahead Log). ΠΠ³ΠΎ ΠΎΡΠΈΡΡΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ PostgreSQL ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΡΡ Π·Π°ΠΏΠΈΡΡ Π»ΠΎΠ³ΠΎΠ² Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π°ΡΡ ΠΈΠ²Π°ΡΠΈΠ΅ΠΉ.
ΠΠ΅ΡΠΎΠ΄ 1: Π ΡΡΠ½ΠΎΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π½ΡΠΆΠ½ΡΡ WAL-ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ WAL-ΡΠ°ΠΉΠ»Ρ Ρ
ΡΠ°Π½ΡΡΡΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ pg_wal (ΠΈΠ»ΠΈ pg_xlog Π² ΡΡΠ°ΡΡΡ
Π²Π΅ΡΡΠΈΡΡ
). Π§ΡΠΎΠ±Ρ ΠΈΡ
ΠΎΡΠΈΡΡΠΈΡΡ:
- ΠΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ»ΡΠΆΠ±Ρ PostgreSQL:
sudo systemctl stop postgresql - Π£Π΄Π°Π»ΠΈΡΠ΅ ΡΡΠ°ΡΡΠ΅ WAL-ΡΠ°ΠΉΠ»Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ°ΡΡΠ΅ 7 Π΄Π½Π΅ΠΉ):
find /var/lib/postgresql/14/main/pg_wal/ -name "000*" -mtime +7 -delete - ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ PostgreSQL:
sudo systemctl start postgresql
β οΈ ΠΠ°ΠΆΠ½ΠΎ: ΠΠ΅ ΡΠ΄Π°Π»ΡΠΉΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΠΉΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ PostgreSQL (ΠΈΡ
ΠΈΠΌΠ΅Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ LSN β Log Sequence Number). Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ LSN, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅:
SELECT pg_current_wal_lsn();
ΠΠ΅ΡΠΎΠ΄ 2: ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π°ΡΡ ΠΈΠ²Π°ΡΠΈΠΈ ΠΈ ΠΎΡΠΈΡΡΠΊΠΈ
ΠΠ»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°ΡΡΠ°Π½ΠΈΡ WAL Π½Π°ΡΡΡΠΎΠΉΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² postgresql.conf:
wal_level = replica # ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π΄Π»Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ
archive_mode = on # ΠΠΊΠ»ΡΡΠΈΡΡ Π°ΡΡ
ΠΈΠ²Π°ΡΠΈΡ
archive_command = 'test ! -f /wal_archive/%f && cp %p /wal_archive/%f' # ΠΠΎΠΌΠ°Π½Π΄Π° Π°ΡΡ
ΠΈΠ²Π°ΡΠΈΠΈ
archive_timeout = 300 # ΠΡΡ
ΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ WAL ΠΊΠ°ΠΆΠ΄ΡΠ΅ 5 ΠΌΠΈΠ½ΡΡ
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ PostgreSQL Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ ΡΡΠ°ΡΡΠ΅ WAL-ΡΠ°ΠΉΠ»Ρ Π² Π°ΡΡ
ΠΈΠ² (/wal_archive), ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ ΠΌΠ΅ΡΡΠΎ. Π§ΡΠΎΠ±Ρ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ Π°ΡΡ
ΠΈΠ²Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΊΡΠΈΠΏΡ:
find /wal_archive/ -name "000*" -mtime +30 -delete # Π£Π΄Π°Π»ΡΠ΅Ρ Π°ΡΡ
ΠΈΠ²Ρ ΡΡΠ°ΡΡΠ΅ 30 Π΄Π½Π΅ΠΉ
ΠΠ΅ΡΠΎΠ΄ 3: ΠΡΠΈΡΡΠΊΠ° ΡΠ΅ΡΠ΅Π· pg_archivecleanup
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π°ΡΡΡΠΎΠ΅Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡ pg_archivecleanup Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ WAL-ΡΠ°ΠΉΠ»ΠΎΠ²:
pg_archivecleanup -d /wal_archive/ 00000001000000000000000A
Π³Π΄Π΅ 00000001000000000000000A β ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ LSN, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡΠ°ΡΡΡΡ (ΡΠ·Π½Π°ΠΉΡΠ΅ Π΅Π³ΠΎ ΡΠ΅ΡΠ΅Π· pg_lsdir).
Π§ΡΠΎ Π±ΡΠ΄Π΅Ρ, Π΅ΡΠ»ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΡΠ΅ WAL-ΡΠ°ΠΉΠ»Ρ?
ΠΡΠ»ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΡΠ΅ WAL-ΡΠ°ΠΉΠ»Ρ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ΅ΠΊΡΡΠΈΠ΅, PostgreSQL Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΡΡΠΈΡΡΡΡ ΠΈ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΡΠΈΠΏΠ° "could not open file "pg_wal/00000001000000000000000A": No such file or directory". Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π±Π°Π·Ρ ΠΈΠ· ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ pg_resetwal (ΡΠΈΡΠΊΠΎΠ²Π°Π½Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΠΎΡΠ΅ΡΠ΅ Π΄Π°Π½Π½ΡΡ
!).
ΠΡΠΈΡΡΠΊΠ° Π»ΠΎΠ³ΠΎΠ² ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ 1Π‘
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅ 8.3 ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π»ΠΎΠ³Π°ΠΌΠΈ SQL, Π½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π±Π΅Π· ΠΏΡΡΠΌΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π‘Π£ΠΠ.
ΠΠ΅ΡΠΎΠ΄ 1: Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π°Π·Ρ
Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΎΡΠ΅ 1Π‘ Π²ΡΠ±Π΅ΡΠΈΡΠ΅:
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
Π Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠΌΠ΅ΡΡΡΠ΅:
- π§
ΠΡΠΎΠ²Π΅ΡΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΡΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ. - π§
ΠΡΠΎΠ²Π΅ΡΡΡΡ ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ. - π§
Π Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ. - π§
Π‘ΠΆΠ°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ(ΡΡΠΎ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° Π»ΠΎΠ³ SQL).
ΠΠΎΡΠ»Π΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ 1Π‘ ΠΌΠΎΠΆΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π±Π°Π·Ρ, ΡΡΠΎ ΡΠ½ΠΈΠ·ΠΈΡ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΡ Π·Π°ΠΏΠΈΡΠΈ Π² Π»ΠΎΠ³.
ΠΠ΅ΡΠΎΠ΄ 2: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ "Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΠ"
Π ΡΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΠ.epf (Π΄ΠΎΡΡΡΠΏΠ½Π° Π² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π΅ 1Π‘) Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π‘ΠΆΠ°ΡΡΠ€Π°ΠΉΠ»ΡΠΠ°Π·ΡΠΠ°Π½Π½ΡΡ
(), ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΡ Π‘Π£ΠΠ Π΄Π»Ρ ΡΠΆΠ°ΡΠΈΡ Π»ΠΎΠ³Π°. Π§ΡΠΎΠ±Ρ Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ:
- ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΎΡΠ΅.
- ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π±Π°Π·Ρ ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅
Π‘ΠΆΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ. - ΠΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈ Π΄ΠΎΠΆΠ΄ΠΈΡΠ΅ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ.
β οΈ ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅: ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ:
- ΠΠ°Π·Π° Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅
SIMPLE(MS SQL). - ΠΠ΅Ρ Π°ΠΊΡΠΈΠ²Π½ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ.
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ 1Π‘ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ°Π²Π° Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
DBCC SHRINKFILE.
ΠΠ΅ΡΠΎΠ΄ 3: ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ
ΠΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ 1Π‘ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΡΡ Π³Π°Π»ΡΠ΅ΡΠΈΠΈ 3.0.70 Π΄ΠΎ 3.0.80) ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ΅ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±Π»ΠΈΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π»ΠΎΠ³Π°. Π§ΡΠΎΠ±Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ:
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ Π±Π°Π·Ρ.
- ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π·
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΎΡ β Π€Π°ΠΉΠ» β ΠΡΠΊΡΡΡΡ. - ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ β Π‘ΡΠ°Π²Π½ΠΈΡΡ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ ΠΈΠ· ΡΠ°ΠΉΠ»Π°. - ΠΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
ΠΡΠΈΡΡΠΊΠ° Π»ΠΎΠ³ΠΎΠ² ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ 1Π‘ ΠΌΠ΅Π½Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π°, ΡΠ΅ΠΌ ΠΏΡΡΠΌΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΊ Π‘Π£ΠΠ, Π½ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅Π΅ Π΄Π»Ρ Π½Π΅ΠΎΠΏΡΡΠ½ΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΅Ρ, Π΅ΡΠ»ΠΈ Π½Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ SQL Management Studio ΠΈΠ»ΠΈ pgAdmin.
Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ
ΠΠ΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½Π°Ρ ΠΎΡΠΈΡΡΠΊΠ° Π»ΠΎΠ³Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΠΎΡΠ΅ΡΠ΅ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π±Π°Π·Ρ ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΡΠ°Π±ΠΎΡΡ 1Π‘. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΡ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ.
| ΠΡΠΈΠ±ΠΊΠ° | ΠΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ | ΠΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ |
|---|---|---|
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³Π° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ FULL Π±Π΅Π· Π±ΡΠΊΠ°ΠΏΠ° |
ΠΠΎΡΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π±Π°Π·Ρ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ | ΠΡΠ΅Π³Π΄Π° Π΄Π΅Π»Π°ΠΉΡΠ΅ BACKUP LOG ΠΏΠ΅ΡΠ΅Π΄ ΡΠΆΠ°ΡΠΈΠ΅ΠΌ |
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ DBCC SHRINKFILE Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ Π±Π°Π·Π΅ |
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΌΠ΅Π΄Π»Π΅Π½Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° 1Π‘ | ΠΡΠ³ΠΎΠ½ΡΠΉΡΠ΅ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠΉΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π² ΠΎΠΊΠ½Π΅ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ |
| Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ WAL-ΡΠ°ΠΉΠ»ΠΎΠ² Π² PostgreSQL | PostgreSQL Π½Π΅ Π·Π°ΠΏΡΡΡΠΈΡΡΡ, ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· Π±ΡΠΊΠ°ΠΏΠ° | ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ pg_archivecleanup ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π²Π»ΡΠΉΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ WAL-ΡΠ°ΠΉΠ»Ρ |
| Π‘ΠΆΠ°ΡΠΈΠ΅ Π»ΠΎΠ³Π° Π΄ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ | ΠΠΎΠ³ ΡΠ½ΠΎΠ²Π° Π±ΡΡΡΡΠΎ ΡΠ°Π·ΡΠ°ΡΡΡΡΡΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ ΠΎΡΠΈΠ±ΠΊΠΈ Π·Π°ΠΏΠΈΡΠΈ | ΠΡΡΠ°Π²Π»ΡΠΉΡΠ΅ Π·Π°ΠΏΠ°Ρ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ 10β20% ΠΎΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° |
ΠΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ log_reuse_wait_desc |
ΠΠΎΠ³ Π½Π΅ ΠΎΡΠΈΡΡΠΈΡΡΡ, Π΄ΠΈΡΠΊ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡΡ | ΠΡΠ΅Π³Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, SELECT * FROM sys.dm_tran_active_transactions) |
ΠΡΡ ΠΎΠ΄Π½Π° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° β ΠΎΡΠΈΠ±ΠΊΠ° ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ 1Π‘ ΠΈ SQL ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΈΡΡΠΊΠΈ Π»ΠΎΠ³Π°. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, Π΅ΡΠ»ΠΈ:
- π Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΡΠΈΡΡΠΊΠΈ Π±ΡΠ» ΠΏΡΠ΅ΡΠ²Π°Π½ ΡΠ΅Π°Π½Ρ 1Π‘ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» ΡΠ°Π±ΠΎΡΠ°ΡΡ).
- π ΠΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ Π»ΠΎΠ³Π°.
- π Π€Π°ΠΉΠ» Π»ΠΎΠ³Π° Π±ΡΠ» ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠ½ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½.
Π§ΡΠΎΠ±Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΡΠ·Ρ:
- ΠΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ»ΡΠΆΠ±Ρ
1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅ 8.3. - Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΎΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. - ΠΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²
1Cv8.1CD(ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°).
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΠΎΡΠΈΡΡΠΊΠΈ Π»ΠΎΠ³ΠΎΠ²
Π ΡΡΠ½Π°Ρ ΠΎΡΠΈΡΡΠΊΠ° Π»ΠΎΠ³ΠΎΠ² β Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠ»Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ 1Π‘ Π½Π°ΡΡΡΠΎΠΉΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
ΠΠ»Ρ Microsoft SQL Server
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΠ»Π°Π½Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ (Maintenance Plans) Π² SQL Management Studio:
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΏΠ»Π°Π½:
Management β Maintenance Plans. - ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π·Π°Π΄Π°ΡΡ
Back Up Database (Transaction Log). - ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Π² 2:00).
- ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π·Π°Π΄Π°ΡΡ
Shrink DatabaseΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌRelease unused space.
ΠΡΠΈΠΌΠ΅Ρ ΡΠΊΡΠΈΠΏΡΠ° Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π±ΡΠΊΠ°ΠΏΠ° ΠΈ ΡΠΆΠ°ΡΠΈΡ Π»ΠΎΠ³Π°:
-- Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ
USE msdb;
GO
CREATE PROCEDURE dbo.ShrinkLogProcedure
AS
BEGIN
DECLARE @DatabaseName NVARCHAR(255)
DECLARE @SQL NVARCHAR(MAX)
DECLARE db_cursor CURSOR FOR
SELECT name FROM sys.databases WHERE recovery_model_desc = 'FULL'
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @DatabaseName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = 'USE [' + @DatabaseName + ']; BACKUP LOG [' + @DatabaseName + '] TO DISK = ''C:\Backups\' + @DatabaseName + '_log.trn'' WITH COMPRESSION; DBCC SHRINKFILE (N''' + @DatabaseName + '_log'', 1);'
EXEC sp_executesql @SQL
FETCH NEXT FROM db_cursor INTO @DatabaseName
END
CLOSE db_cursor
DEALLOCATE db_cursor
END;
GO
-- ΠΠ°ΡΡΡΠΎΠΈΡΡ Π·Π°Π΄Π°ΡΡ Π² SQL Server Agent
EXEC msdb.dbo.sp_add_job @job_name = 'Nightly Log Shrink';
EXEC msdb.dbo.sp_add_jobstep @job_name = 'Nightly Log Shrink', @step_name = 'Shrink Logs', @subsystem = 'TSQL', @command = 'EXEC msdb.dbo.ShrinkLogProcedure';
EXEC msdb.dbo.sp_add_schedule @job_name = 'Nightly Log Shrink', @name = 'Nightly', @freq_type = 4, @freq_interval = 1, @active_start_time = 20000; -- ΠΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Π² 2:00
EXEC msdb.dbo.sp_add_jobserver @job_name = 'Nightly Log Shrink';
ΠΠ»Ρ PostgreSQL
ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ cron-Π·Π°Π΄Π°ΡΡ Π΄Π»Ρ Π°ΡΡ
ΠΈΠ²Π°ΡΠΈΠΈ ΠΈ ΠΎΡΠΈΡΡΠΊΠΈ WAL:
0 2 /usr/bin/find /wal_archive/ -name "000" -mtime +7 -delete # Π£Π΄Π°Π»ΡΠ΅Ρ Π°ΡΡ
ΠΈΠ²Ρ ΡΡΠ°ΡΡΠ΅ 7 Π΄Π½Π΅ΠΉ
0 3 * /usr/bin/psql -U postgres -c "SELECT pg_switch_wal();" # ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΌΠ΅Π½ΠΈΡΡ WAL-ΡΠ°ΠΉΠ»
ΠΠ»Ρ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΡΠ΅ΠΌΡΡ
Π±Π°Π· 1Π‘ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ pg_basebackup ΠΈ pg_waldump Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π»ΠΎΠ³ΠΎΠ².
ΠΠ»Ρ 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π°Π·Ρ ΡΠ΅ΡΠ΅Π· ΡΠ΅Π³Π»Π°ΠΌΠ΅Π½ΡΠ½ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ:
- Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΎΡΠ΅ ΠΎΡΠΊΡΠΎΠΉΡΠ΅
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β Π Π΅Π³Π»Π°ΠΌΠ΅Π½ΡΠ½ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ. - Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ Ρ ΡΠΈΠΏΠΎΠΌ
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉΠΠ°Π·Ρ. - ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π· Π² Π½Π΅Π΄Π΅Π»Ρ Π² Π½Π΅ΡΠ°Π±ΠΎΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ).
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΠΎΡΠΈΡΡΠΊΠΈ Π»ΠΎΠ³ΠΎΠ² ΡΠΎΠΊΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΠΊ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄ΠΈΡΠΊΠ°. ΠΠ°ΡΠΈΠ½Π°ΠΉΡΠ΅ Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ²Π°ΡΠΈΠ²Π½ΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠΈΡΡΠΊΠ° ΡΠ°Π· Π² Π½Π΅Π΄Π΅Π»Ρ) ΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΡΠΉΡΠ΅ ΡΠ°ΡΡΠΎΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ Π·Π° ΡΠΎΡΡΠΎΠΌ Π»ΠΎΠ³ΠΎΠ².
FAQ: Π§Π°ΡΡΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎ ΠΎΡΠΈΡΡΠΊΠ΅ Π»ΠΎΠ³ΠΎΠ² SQL Π² 1Π‘
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΎΡΠΈΡΡΠΈΡΡ Π»ΠΎΠ³ SQL, Π½Π΅ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² 1Π‘?
ΠΠ°, Π½ΠΎ Ρ ΠΎΠ³ΠΎΠ²ΠΎΡΠΊΠ°ΠΌΠΈ:
- πΉ Π MS SQL ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ
BACKUP LOGΠΈDBCC SHRINKFILEΠ½Π° ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ Π±Π°Π·Π΅, Π½ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΡ Π΅Ρ ΡΠ°Π±ΠΎΡΡ. - πΉ Π PostgreSQL ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΡ WAL-ΡΠ°ΠΉΠ»ΠΎΠ² (Π½Π΅ ΡΠ΅ΠΊΡΡΠΈΡ !) ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΠΈ.
- πΉ Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΠΎΡΠΈΡΡΠΊΡ Π² Π½Π΅ΡΠ°Π±ΠΎΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ³ΠΎΠ½Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ.
ΠΠ°ΠΊ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠ΅ΠΆΠΈΠΌ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΌΠΎΠ΅ΠΉ Π±Π°Π·Π΅ 1Π‘?
ΠΠ»Ρ MS SQL Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π·Π°ΠΏΡΠΎΡ:
SELECT name, recovery_model_desc FROM sys.databases;
ΠΠ»Ρ PostgreSQL ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ wal_level Π² ΡΠ°ΠΉΠ»Π΅ postgresql.conf ΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΡΠΎΡ:
SHOW wal_level;
ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ FULL (MS SQL) ΠΈΠ»ΠΈ replica/logical (PostgreSQL), Π»ΠΎΠ³ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΈΡΡΠΊΠΈ Π»ΠΎΠ³ ΡΠ½ΠΎΠ²Π° Π±ΡΡΡΡΠΎ ΡΠ°Π·ΡΠ°ΡΡΠ°Π΅ΡΡΡ?
ΠΡΠΈΡΠΈΠ½Ρ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ:
- π ΠΠ»ΠΈΠ½Π½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ: ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π² 1Π‘ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅Π·Π°Π²Π΅ΡΡΡΠ½Π½ΡΠ΅ ΠΎΠ±ΠΌΠ΅Π½Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈΠ»ΠΈ ΡΠΎΠ½ΠΎΠ²ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ). ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π·Π°ΠΏΡΠΎΡ:
SELECT * FROM sys.dm_tran_active_transactions (MS SQL)SELECT pid, usename, query FROM pg_stat_activity WHERE state = 'active' (PostgreSQL)
- π₯ ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ Π±ΡΠΊΠ°ΠΏΠΎΠ² Π»ΠΎΠ³Π°: ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠ³Π° (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» "ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ").
- π οΈ ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π°Π²ΡΠΎΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ: Π MS SQL ΠΎΠ³ΡΠ°Π½ΠΈΡΡΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Π»ΠΎΠ³Π° Π² ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ
Π±Π°Π·Ρ ΠΈΠ»ΠΈ Π½Π°ΡΡΡΠΎΠΉΡΠ΅
autogrowΠ½Π° ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΡΠΈΡΠΎΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎ 100 ΠΠ). - π§ ΠΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ 1Π‘: ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ°ΡΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ²) ΠΌΠΎΠ³ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΈΡ ΠΈΠ»ΠΈ ΡΠ°Π·Π±ΠΈΠ²Π°ΠΉΡΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΡ.
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³Π° SQL Π΄Π»Ρ Π±Π°Π·Ρ 1Π‘?
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ Π΄Π°, Π½ΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ:
- πΉ Π MS SQL ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ Π±Π°Π·Ρ Π² ΡΠ΅ΠΆΠΈΠΌ
SIMPLE, Π½ΠΎ Π²Ρ ΠΏΠΎΡΠ΅ΡΡΠ΅ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. - πΉ Π PostgreSQL ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ
wal_level = minimalΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π½ΠΎ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π΅Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ. - πΉ Π ΠΈΡΠΊΠΈ: ΠΡΠΈ ΡΠ±ΠΎΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°) Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±Π°Π·Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π±ΡΠΊΠ°ΠΏΠ°, ΠΏΠΎΡΠ΅ΡΡΠ² Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ Π½Π΅Π³ΠΎ.
π‘ ΠΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅: ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠ³Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΆΠ΄ΡΠ΅ 15 ΠΌΠΈΠ½ΡΡ) ΠΈ Π΅Π³ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΎΡΠΈΡΡΠΊΡ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ°Π·ΡΠ°ΡΡΠ°Π½ΠΈΡ Π»ΠΎΠ³Π°.
ΠΠ°ΠΊ ΠΎΡΠΈΡΡΠΈΡΡ Π»ΠΎΠ³ SQL Π² ΠΎΠ±Π»Π°ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ 1Π‘ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 1Π‘:Fresh)?
Π ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡΡ (1Π‘:Fresh, 1Π‘:ΠISPRU, 1Π‘:ΠΠΈΠ½ΠΊ) ΠΏΡΡΠΌΠ°Ρ ΠΎΡΠΈΡΡΠΊΠ° Π»ΠΎΠ³ΠΎΠ² SQL ΠΎΠ±ΡΡΠ½ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π° Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠ°ΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
- π§ ΠΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ Π² ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° Ρ Π·Π°ΠΏΡΠΎΡΠΎΠΌ ΠΎΠ± ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. Π£ΠΊΠ°ΠΆΠΈΡΠ΅:
- ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ.
- Π’Π΅ΠΊΡΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Π»ΠΎΠ³Π° (ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ ΡΠ΅ΡΠ΅Π·
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈΠ² 1Π‘). - Π§Π°ΡΡΠΎΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, "Π΄ΠΈΡΠΊ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½").
- π ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΡΠ°Π±ΠΎΡΡ 1Π‘:
- Π Π°Π·Π±Π΅ΠΉΡΠ΅ ΠΊΡΡΠΏΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΠΌΠ΅Π½Ρ Π΄Π°Π½Π½ΡΠΌΠΈ) Π½Π° ΠΏΠ°ΠΊΠ΅ΡΡ.