ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΡƒΡ‡Π½ΠΎΠ³ΠΎ Ρ‚Ρ‹ΠΊΠ°, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ субд с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ² ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

ЗдравствуйтС.

РСшил подСлится своСй Π½Π°Ρ…ΠΎΠ΄ΠΊΠΎΠΉ β€” ΠΏΠ»ΠΎΠ΄ΠΎΠΌ Ρ€Π°Π·Π΄ΡƒΠΌΠΈΠΉ, ΠΏΡ€ΠΎΠ± ΠΈ ошибок.
По Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ счёту: это никакая Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΊΠ°, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ β€” всё это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π΄Π°Π²Π½ΠΎ извСстно, Ρ‚Π΅ΠΌ ΠΊΡ‚ΠΎ занимаСтся ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ стат-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΊΠ°ΠΊΠΈΡ… Π»ΠΈΠ±ΠΎ систСм, Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π‘Π£Π‘Π”.
И: Π΄Π° Π·Π½Π°ΡŽΡ‚, ΠΏΠΈΡˆΡƒΡ‚ занятныС ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎ своим рСсСрчам, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ (UPD.: Π² коммСнтариях ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π½Π° ΠΎΡ‡Π΅Π½ΡŒ интСрСсный ΠΏΡ€ΠΎΠ΅ΠΊΡ‚: ottertune )
Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны: навскидку Π½Π΅ ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ упоминания, распространСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅, срСди ΠΈΡ‚-спСциалистов, ДБА.

Π˜Ρ‚Π°ΠΊ, ΠΊ сути.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Ρ‡Ρ‚ΠΎ Π²ΠΎΡ‚ Ρƒ нас Π·Π°Π΄Π°Ρ‡Π°: Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π΅ΠΊΡƒΡŽ ΡΠ΅Ρ€Π²ΠΈΡΠ½ΡƒΡŽ систСму, Π½Π° обслуТиваниС ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

ΠŸΡ€ΠΎ эту Ρ€Π°Π±ΠΎΡ‚Ρƒ β€” извСстно: какая ΠΎΠ½Π°, Π² Ρ‡Ρ‘ΠΌ измСряСтся качСство этой Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΌΠ΅Ρ€ΠΎΠ² этого качСства.

Π’Π°ΠΊΠΆΠ΅ допустим Ρ‡Ρ‚ΠΎ, Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ извСстно-понятно: ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ выполняСтся Ρ€Π°Π±ΠΎΡ‚Π° Π² (ΠΈΠ»ΠΈ с) этой сСрвисной систСмой.

"Π‘ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅" β€” это Π·Π½Π°Ρ‡ΠΈΡ‚ Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ (ΠΈΠ»ΠΈ Π³Π΄Π΅ Ρ‚ΠΎ Π²Π·ΡΡ‚ΡŒ) Π½Π΅ΠΊΠΈΠΉ Ρ‚ΡƒΠ»Π·, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ, сСрвис ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΠ½Ρ‚Π΅Π·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΡŒ Π½Π° систСму Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ достаточно Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΡƒΡŽ ΠΊ Ρ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΏΡ€ΠΎΠ΄Π΅, Π² достаточно Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Ρ‹Ρ… ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² ΠΏΡ€ΠΎΠ΄Π΅ условиях.

Ну ΠΈ допустим Ρ‡Ρ‚ΠΎ извСстСн Π½Π°Π±ΠΎΡ€ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² этой сСрвисной систСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ эту систСму, Π² смыслС продуктивности Π΅Ρ‘ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

И, Π² Ρ‡Ρ‘ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” Π½Π΅Ρ‚ достаточно ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ понимания этой сСрвисной систСмы, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт экспСртно Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ настройку этой систСмы, ΠΏΠΎΠ΄ Π±ΡƒΠ΄ΡƒΡ‰ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, Π½Π° Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы.

Ну. Π’Π°ΠΊ, ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда ΠΈ Π±Ρ‹Π²Π°Π΅Ρ‚.

Π§Ρ‚ΠΎ Ρ‚ΡƒΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

Ну ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ: Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² Π΄ΠΎΠΊΡƒ ΠΏΠΎ этой систСмС. ΠŸΠΎΠ½ΡΡ‚ΡŒ β€” ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚Π°ΠΌ допустимыС Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Π½Π° значСния Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². И, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½ΠΎΠ³ΠΎ спуска, ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Ρ‚ΡŒ значСния для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² систСмы, Π² тСстах.

Π’.Π΅. Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ систСмС ΠΊΠ°ΠΊΡƒΡŽ Ρ‚ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ, Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΅Ρ‘ настроСчных ΠΏΠ°Ρ€-Ρ€ΠΎΠ².

ΠŸΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ Π½Π° Π½Π΅Ρ‘ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, Π²ΠΎΡ‚ этой самой Ρ‚ΡƒΠ»Π·ΠΎΠΉ-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ, Π»ΠΎΠ°Π΄-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ.
И ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ β€” ΠΎΡ‚ΠΊΠ»ΠΈΠΊ, Π½Ρƒ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΡƒ качСства Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ΡΠ»ΡŒΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ Ρ‡Ρ‚ΠΎ β€” это ΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎ.

Ну Ρ‚.Π΅.: Ссли настроСчных ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² β€” ΠΌΠ½ΠΎΠ³ΠΎ, Ссли ΠΏΡ€ΠΎΠ±Π΅Π³Π°Π΅ΠΌΡ‹Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ β€” большиС, Ссли ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΉ тСст β€” выполняСтся ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚ΠΎ: Π΄Π°, это всё ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ Π½Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Ну ΠΈ Ρ‚ΡƒΡ‚ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ.

МоТно ΡƒΠ·Π½Π°Ρ‚ΡŒ, Π² Π½Π°Π±ΠΎΡ€Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ настроСчных ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² сСрвисной систСмы β€” Π²Π΅ΠΊΡ‚ΠΎΡ€, ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ‚Π°ΠΊΠΎΠΌΡƒ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρƒ, ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ€Π°Π²Π½Ρ‹Ρ… (Π² Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ этим Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅ затрагиваСтся) соотвСтствуСт Π²ΠΏΠΎΠ»Π½Π΅ сСбС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ β€” показатСля качСства Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы, ΠΏΠΎΠ΄ тСстовой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ.

Π’.Π΅.

Π’ΠΎΡ‚ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ систСмы, ΠΊΠ°ΠΊ ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΡƒΡ‡Π½ΠΎΠ³ΠΎ Ρ‚Ρ‹ΠΊΠ°, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ субд с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ² ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Π³Π΄Π΅ ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΡƒΡ‡Π½ΠΎΠ³ΠΎ Ρ‚Ρ‹ΠΊΠ°, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ субд с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ² ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°; Π“Π΄Π΅ ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΡƒΡ‡Π½ΠΎΠ³ΠΎ Ρ‚Ρ‹ΠΊΠ°, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ субд с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ² ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° β€” ΠΊΠΎΠ»-Π²ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ систСмы, сколько ΠΈΡ…, этих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

А Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΡƒΡ‡Π½ΠΎΠ³ΠΎ Ρ‚Ρ‹ΠΊΠ°, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ субд с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ² ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ ΠΊΠ°ΠΊ
ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΡƒΡ‡Π½ΠΎΠ³ΠΎ Ρ‚Ρ‹ΠΊΠ°, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ субд с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ² ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Ρ‚ΠΎ, Ρƒ нас получаСтся функция: ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΡƒΡ‡Π½ΠΎΠ³ΠΎ Ρ‚Ρ‹ΠΊΠ°, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ субд с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ² ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

Ну ΠΈ, Ρ‚ΠΎΠ³Π΄Π°: всё Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ сводится ΠΊ, Π² ΠΌΠΎΡ‘ΠΌ случаС: ΠΏΠΎΡ‡Ρ‚ΠΈ Π·Π°Π±Ρ‹Ρ‚Ρ‹ΠΌ со студСнчСской скамьи, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ поиска экстрСмума Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π₯ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ Ρ‚ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎ-ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ вопрос: Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

  1. Π’ смыслС β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ самому помСньшС Ρ€ΡƒΠΊΠ°ΠΌΠΈ ΠΊΠΎΠ΄ΠΈΡ‚ΡŒ.
  2. И Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ, Ρ‚.Π΅. Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΎ экстрСмум (Ссли ΠΎΠ½ Π΅ΡΡ‚ΡŒ), Π½Ρƒ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ β€” быстрСС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½ΠΎΠ³ΠΎ спуска.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°ΠΌΠ΅ΠΊΠ°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² сторону ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΎ срСд, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Π°ΠΊΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ β€” ΡƒΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹, ΠΈ Π΅ΡΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΌ Ρ‚ΠΎ Π²ΠΈΠ΄Π΅, Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΌ ΠΊ использованию Π² ΠΊΠΎΠ΄Π΅.
Ну, ΠΌΠ½Π΅ извСстны python ΠΈ cran-r

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ собствСнно Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρƒ Π½ΠΈΡ… трСбования, особСнности Π² Ρ€Π°Π±ΠΎΡ‚Π΅.

И Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄Π°ΡŽΡ‚, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты-Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Π»ΠΈΠ±ΠΎ Π²ΠΏΡ€ΡΠΌΡƒΡŽ, ΠΎΡ‚ самого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Π›ΠΈΠ±ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π° ΠΈΡ‚ΠΎΠ³Π°Ρ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Π’ΡƒΡ‚ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ зависит ΠΎΡ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… условий.

НапримСр Ссли, ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ, Π½ΡƒΠΆΠ½ΠΎ быстрСС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π½Ρƒ, Π½ΡƒΠΆΠ½ΠΎ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² сторону Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ спуска, Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΎ ΠΈΠ· Π½ΠΈΡ….

Или, Ссли Π½Π΅ Ρ‚Π°ΠΊ Π²Π°ΠΆΠ½ΠΎ врСмя, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ стохастичСской ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ гСнСтичСским Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ.

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, ΠΏΠΎ ΠΏΠΎΠ΄Π±ΠΎΡ€Ρƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ систСмы, с использованиСм гСнСтичСского Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ, Ρ‚Π°ΠΊ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ: Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅:

  1. ΠŸΡƒΡΡ‚ΡŒ Π΅ΡΡ‚ΡŒ, Π² качСствС сСрвисной систСмы: oracle xe 18c
  2. ΠŸΡƒΡΡ‚ΡŒ ΠΎΠ½Π° β€” обслуТиваСт Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈ Ρ†Π΅Π»ΡŒ: ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ субд, ΠΏΠΎ транзакциям/сСк.
  3. Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ β€” Π±Ρ‹Π²Π°ΡŽΡ‚ сильно Ρ€Π°Π·Π½Ρ‹Π΅, ΠΏΠΎ своСму Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Ρƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ контСксту Ρ€Π°Π±ΠΎΡ‚Ρ‹.
    Условимся Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ это Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ большоС ΠΊΠΎΠ»-Π²ΠΎ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….
    Π’ Ρ‚ΠΎΠΌ смыслС Ρ‡Ρ‚ΠΎ Π½Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΡƒΠ½Π΄ΠΎ-Π΄Π°Π½Π½Ρ‹Ρ… большС Ρ‡Π΅ΠΌ Ρ€Π΅Π΄ΠΎ ΠΈ Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ большиС ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Ρ‹ строк, Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†.

Π­Ρ‚ΠΎ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ ΠΎΠ΄Π½Ρƒ строку Π² Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ большой Ρ‚Π°Π±Π»ΠΈΡ†Π΅, с нСбольшим ΠΊΠΎΠ»-Π²ΠΎΠΌ индСксов Π½Π°Π΄ этой Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ.

Π’ Ρ‚Π°ΠΊΠΎΠΌ раскладС: ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ субд ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚, с ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠΎΠΉ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ качСством ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±Π°Π·ΠΎΠΉ Ρ€Π΅Π΄ΠΎ-Π΄Π°Π½Π½Ρ‹Ρ….

ΠžΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ° β€” Ссли Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎ настройках субд.

ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΌΠ΅ΠΆΠ΄Ρƒ скл-сСссиями, ΠΈΠ·-Π·Π°, Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ/ΠΈΠ»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ.

ΠšΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ³Π½Π΅Ρ‚Π°ΡŽΡ‰Π΅ ΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π° tps-ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ΅ ΠΈ это Π±ΡƒΠ΄Π΅Ρ‚ экзогСнный, ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ субд, Ρ„Π°ΠΊΡ‚ΠΎΡ€: Π½Ρƒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ Π·Π°Π΄ΠΈΠ·Π°ΠΉΠ½ΠΈΠ»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΡƒΡŽ модСль ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Π½Π΅ΠΉ Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, для чистоты экспСримСнта, ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΠΌ этот Ρ„Π°ΠΊΡ‚ΠΎΡ€, Π½ΠΈΠΆΠ΅ ΡƒΡ‚ΠΎΡ‡Π½ΡŽ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ.

  1. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, для опрСдСлённости, Ρ‡Ρ‚ΠΎ 100% ΠΏΠΎΠ΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π² субд sql-ΠΊΠΎΠΌΠ°Π½Π΄: это dml-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.
    ΠŸΡƒΡΡ‚ΡŒ характСристики ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с субд: ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅, Π² тСстах.
    А ΠΈΠΌΠ΅Π½Π½ΠΎ: ΠΊΠΎΠ»-Π²ΠΎ скл-сСссий, Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚ΠΎ ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ скл-сСссии.
  2. Π‘ΡƒΠ±Π΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² FORCE LOGGING, ARCHIVELOG ΠΌΠΎΠ΄Π°Ρ…. ЀлСшбак-датабСйс Ρ€Π΅ΠΆΠΈΠΌ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½, Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ субд.
  3. Π Π΅Π΄ΠΎ-Π»ΠΎΠ³ΠΈ: располоТСны Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ "дискС";
    Вся ΠΎΡΡ‚Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ физичСской ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π±Π΄: Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ фс, Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ "дискС":

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅, ΠΏΡ€ΠΎ устройство Ρ„ΠΈΠ·. ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Π±Π΄

SQL> select status||' '||name from v$controlfile;
 /db/u14/oradata/XE/control01.ctl
SQL> select GROUP#||' '||MEMBER from v$logfile;
1 /db/u02/oradata/XE/redo01_01.log
2 /db/u02/oradata/XE/redo02_01.log
SQL> select FILE_ID||' '||TABLESPACE_NAME||' '||round(BYTES/1024/1024,2)||' '||FILE_NAME as col from dba_data_files;
4 UNDOTBS1 2208 /db/u14/oradata/XE/undotbs1_01.dbf
2 SLOB 128 /db/u14/oradata/XE/slob01.dbf
7 USERS 5 /db/u14/oradata/XE/users01.dbf
1 SYSTEM 860 /db/u14/oradata/XE/system01.dbf
3 SYSAUX 550 /db/u14/oradata/XE/sysaux01.dbf
5 MONITOR 128 /db/u14/oradata/XE/monitor.dbf
SQL> !cat /proc/mounts | egrep "/db/u[0-2]"
/dev/vda1 /db/u14 ext4 rw,noatime,nodiratime,data=ordered 0 0
/dev/mapper/vgsys-ora_redo /db/u02 xfs rw,noatime,nodiratime,attr2,nobarrier,inode64,logbsize=256k,noquota 0 0

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ эти условия Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ субд транзакциями Ρ…ΠΎΡ‚Π΅Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SLOB-ΡƒΡ‚ΠΈΡ‚Ρƒ
Π£ Π½Π΅Ρ‘ Π΅ΡΡ‚ΡŒ такая Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ, ΠΏΡ€ΠΎΡ†ΠΈΡ‚ΠΈΡ€ΡƒΡŽ Π°Π²Ρ‚ΠΎΡ€Π°:

At the heart of SLOB is the β€œSLOB method.” The SLOB Method aims to test platforms
without application contention. One cannot drive maximum hardware performance
using application code that is, for example, bound by application locking or even
sharing Oracle Database blocks. That’s rightβ€”there is overhead when sharing data
in data blocks! But SLOBβ€”in its default deploymentβ€”is immune to such contention.

Π­Ρ‚Π° дСкларация: соотвСтствуСт, Ρ‚Π°ΠΊ ΠΈ Π΅ΡΡ‚ΡŒ.
Π£Π΄ΠΎΠ±Π½ΠΎ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° скл-сСссий, это ΠΊΠ»ΡŽΡ‡ -t запуска ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ runit.sh ΠΈΠ· состава SLOB-Π°
РСгулируСтся ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ Π΄ΠΌΠ»-ΠΊΠΎΠΌΠ°Π½Π΄, Π² Ρ‚ΠΎΠΌ ΠΊΠΎΠ»-Π²Π΅ скл-Π΅ΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ отправляСт Π² субд, каТдая скл-сСссия, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ UPDATE_PCT
ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ: SLOB сам, ΠΏΠ΅Ρ€Π΅Π΄ ΠΈ послС сСссии Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ β€” Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ статспак, ΠΈΠ»ΠΈ awr-ΡΠ½Π°ΠΏΡˆΠΎΡ‚Ρ‹ (Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Π½ΠΎ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ).

Однако Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ Ρ‡Ρ‚ΠΎ SLOB Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ скл-сСссий с ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠ΅Π½Π΅Π΅ 30 сСкунд.
ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, сначала Π½Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π» свой, Ρ€Π°Π±ΠΎΡ‡Π΅-ΠΊΡ€Π΅ΡΡ‚ΡŒΡΠ½ΡΠΊΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠ½ Ρ‚Π°ΠΊ ΠΈ остался Π² Ρ€Π°Π±ΠΎΡ‚Π΅.

Π£Ρ‚ΠΎΡ‡Π½ΡŽ ΠΏΠΎ Π½Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΡƒ β€” Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚, для ясности.
По сущСству Π½Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ выглядит Ρ‚Π°ΠΊ:

Код Π²ΠΎΡ€ΠΊΠ΅Ρ€Π°

function dotx()
{
local v_period="$2"
[ -z "v_period" ] && v_period="0"
source "/home/oracle/testingredotracΠ΅/config.conf"

$ORACLE_HOME/bin/sqlplus -S system/${v_system_pwd} << __EOF__
whenever sqlerror exit failure
set verify off
set echo off
set feedback off

define wnum="$1"
define period="$v_period"
set appinfo worker_&&wnum

declare
 v_upto number;
 v_key  number;
 v_tots number;
 v_cts  number;
begin
 select max(col1) into v_upto from system.testtab_&&wnum;
 SELECT (( SYSDATE - DATE '1970-01-01' ) * 86400 ) into v_cts FROM DUAL;
 v_tots := &&period + v_cts;
 while v_cts <= v_tots
 loop
  v_key:=abs(mod(dbms_random.random,v_upto));
  if v_key=0 then
   v_key:=1;
  end if;
  update system.testtab_&&wnum t
  set t.object_name=translate(dbms_random.string('a', 120), 'abcXYZ', '158249')
  where t.col1=v_key
  ;
  commit;
  SELECT (( SYSDATE - DATE '1970-01-01' ) * 86400 ) into v_cts FROM DUAL;
 end loop;
end;
/

exit
__EOF__
}
export -f dotx

Π—Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Запуск Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ²

echo "starting test, duration: ${TEST_DURATION}" >> "$v_logfile"
for((i=1;i<="$SQLSESS_COUNT";i++))
do
 echo "sql-session: ${i}" >> "$v_logfile"
 dotx "$i" "${TEST_DURATION}" &
done
echo "waiting..." >> "$v_logfile"
wait

А Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ для Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ² готовятся Ρ‚Π°ΠΊ:

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†

function createtable() {
source "/home/oracle/testingredotracΠ΅/config.conf"
$ORACLE_HOME/bin/sqlplus -S system/${v_system_pwd} << __EOF__
whenever sqlerror continue
set verify off
set echo off
set feedback off

define wnum="$1"
define ts_name="slob"

begin
 execute immediate 'drop table system.testtab_&&wnum';
exception when others then null;
end;
/

create table system.testtab_&&wnum tablespace &&ts_name as
select rownum as col1, t.*
from sys.dba_objects t
where rownum<1000
;
create index testtab_&&wnum._idx on system.testtab_&&wnum (col1);
--alter table system.testtab_&&wnum nologging;
--alter index system.testtab_&&wnum._idx nologging;
exit
__EOF__
}
export -f createtable

seq 1 1 "$SQLSESS_COUNT" | xargs -n 1 -P 4 -I {} -t bash -c "createtable "{}"" | tee -a "$v_logfile"
echo "createtable done" >> "$v_logfile"

Π’.Π΅. ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²ΠΎΡ€ΠΊΠ΅Ρ€ (практичСски: ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ скл-сСссия Π² субд) создаётся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π²ΠΎΡ€ΠΊΠ΅Ρ€.

Π­Ρ‚ΠΈΠΌ достигаСтся отсутствиС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, ΠΌΠ΅ΠΆΠ΄Ρƒ скл-сСссиями Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ².
ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π²ΠΎΡ€ΠΊΠ΅Ρ€: Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎΠΆΠ΅, со своСй Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ всС ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅.
Π’ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ всС β€” Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠΎΠ»-Π²Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ β€” достаточно Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΡ‘Π», ΠΈ Π½Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π»ΠΎΠ³-свичинг.
Ну ΠΈ соотвСтствСнно Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ, с этим связанныС, Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ ΠΈ эффСкты.
Π’ ΠΌΠΎΡ‘ΠΌ случаС β€” ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ² Π½Π°ΠΊΠΎΡ„ΠΈΠ³ΡƒΡ€ΠΈΠ²Π°Π» Π² 8 ΠΌΠΈΠ½ΡƒΡ‚.

ΠšΡƒΡΠΎΠΊ статспак-ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π°, с описаниСм Ρ€Π°Π±ΠΎΡ‚Ρ‹ субд ΠΏΠΎΠ΄ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ

Database    DB Id    Instance     Inst Num  Startup Time   Release     RAC
~~~~~~~~ ----------- ------------ -------- --------------- ----------- ---
          2929910313 XE                  1 07-Sep-20 23:12 18.0.0.0.0  NO

Host Name             Platform                CPUs Cores Sockets   Memory (G)
~~~~ ---------------- ---------------------- ----- ----- ------- ------------
     billing.izhevsk1 Linux x86 64-bit           2     2       1         15.6

Snapshot       Snap Id     Snap Time      Sessions Curs/Sess Comment
~~~~~~~~    ---------- ------------------ -------- --------- ------------------
Begin Snap:       1630 07-Sep-20 23:12:27       55        .7
  End Snap:       1631 07-Sep-20 23:20:29       62        .6
   Elapsed:       8.03 (mins) Av Act Sess:       8.4
   DB time:      67.31 (mins)      DB CPU:      15.01 (mins)

Cache Sizes            Begin        End
~~~~~~~~~~~       ---------- ----------
    Buffer Cache:     1,392M              Std Block Size:         8K
     Shared Pool:       288M                  Log Buffer:   103,424K

Load Profile              Per Second    Per Transaction    Per Exec    Per Call
~~~~~~~~~~~~      ------------------  ----------------- ----------- -----------
      DB time(s):                8.4                0.0        0.00        0.20
       DB CPU(s):                1.9                0.0        0.00        0.04
       Redo size:        7,685,765.6              978.4
   Logical reads:           60,447.0                7.7
   Block changes:           47,167.3                6.0
  Physical reads:                8.3                0.0
 Physical writes:              253.4                0.0
      User calls:               42.6                0.0
          Parses:               23.2                0.0
     Hard parses:                1.2                0.0
W/A MB processed:                1.0                0.0
          Logons:                0.5                0.0
        Executes:           15,756.5                2.0
       Rollbacks:                0.0                0.0
    Transactions:            7,855.1

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ постановкС Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹.
Π‘ΡƒΠ΄Π΅ΠΌ, ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ€Π°Π²Π½Ρ‹Ρ…, Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ значСния Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ субд:

  1. Π Π°Π·ΠΌΠ΅Ρ€ ΠΆΡƒΡ€Π½Π°Π»ΡŒΠ½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ Π±Π΄. Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: [32, 1024] ΠœΠ±Π°ΠΉΡ‚;
  2. Кол-Π²ΠΎ ΠΆΡƒΡ€Π½Π°Π»ΡŒΠ½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ Π±Π΄. Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: [2,32];
  3. log_archive_max_processes Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: [1,8];
  4. commit_logging допускаСтся Π΄Π²Π° значСния: batch|immediate;
  5. commit_wait допускаСтся Π΄Π²Π° значСния: wait|nowait;
  6. log_buffer Π΄ΠΈΠ°ΠΏΠ°Π·Π°ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: [2,128] ΠœΠ±Π°ΠΉΡ‚.
  7. log_checkpoint_timeout Π΄ΠΈΠ°ΠΏΠ°Π·Π°ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: [60,1200] сСкунд
  8. db_writer_processes Π΄ΠΈΠ°ΠΏΠ°Π·Π°ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: [1,4]
  9. undo_retention Π΄ΠΈΠ°ΠΏΠ°Π·Π°ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: [30;300] сСкунд
  10. transactions_per_rollback_segment Π΄ΠΈΠ°ΠΏΠ°Π·Π°ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: [1,8]
  11. disk_asynch_io допускаСтся Π΄Π²Π° значСния: true|false;
  12. filesystemio_options Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ значСния: none|setall|directIO|asynch;
  13. db_block_checking Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ значСния: OFF|LOW|MEDIUM|FULL;
  14. db_block_checksum Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ значСния: OFF|TYPICAL|FULL;

Π§Π΅Π»ΠΎΠ²Π΅ΠΊ, с ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ сопровоТдСния oracle-Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, бСзусловно, ΡƒΠΆΠ΅ сСйчас ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ β€” Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΊΠ°ΠΊΠΈΠ΅ значСния Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ, ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ ΠΈΡ… допустимых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ субд, ΠΏΠΎΠ΄ Ρ‚Ρƒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, которая ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π°, ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, здСсь, Π²Ρ‹ΡˆΠ΅.

Но.

Бмысл Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, сам ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстро это Π½Π°ΠΌ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚.

Нам ΠΆΠ΅: остаётся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² Π΄ΠΎΠΊΡƒ, ΠΏΠΎ настраиваСмой систСмС, Ρ€ΠΎΠ²Π½ΠΎ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ, насколько Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ: ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Ρ… ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ.
А Ρ‚Π°ΠΊ ΠΆΠ΅: Π½Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с настраиваСмой систСмой Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π’.ΠΎ., Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎ ΠΊΠΎΠ΄Π΅.
Π’Ρ‹ΡˆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΎ cran-r, Ρ‚.Π΅.: всС манипуляции, с настраиваСмой систСмой β€” ΠΎΡ€ΠΊΠ΅ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ R-скрипта.

БобствСнно Π·Π°Π΄Π°Π½ΠΈΠ΅, Π°Π½Π°Π»ΠΈΠ·, ΠΏΠΎΠ΄Π±ΠΎΡ€ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² состояния систСмы: это ΠΏΠ°ΠΊΠ΅Ρ‚ GA (докумСнтация)
ΠŸΠ°ΠΊΠ΅Ρ‚, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС, Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, Π² смыслС Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ задания Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² (хромосом, Ссли Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°) Π² Π²ΠΈΠ΄Π΅ пос-Ρ‚Π΅ΠΉ чисСл с Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ.

А ΠΌΠΎΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€, ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ настроСчных ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²: это 14-Ρ‚ΡŒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ β€” Ρ†Π΅Π»Ρ‹Π΅ числа ΠΈ строковыС значСния.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Π»Π΅Π³ΠΊΠΎ обходится, Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ строковым Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°ΠΌ β€” ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… чисСл.

Π’.ΠΎ., Π² ΠΈΡ‚ΠΎΠ³Π΅, основной кусок R-скрипта выглядит Ρ‚Π°ΠΊ:

Π’Ρ‹Π·ΠΎΠ² GA::ga

cat( "", file=v_logfile, sep="n", append=F)

pSize = 10
elitism_value=1
pmutation_coef=0.8
pcrossover_coef=0.1
iterations=50

gam=GA::ga(type="real-valued", fitness=evaluate,
lower=c(32,2, 1,1,1,2,60,1,30,1,0,0, 0,0), upper=c(1024,32, 8,10,10,128,800,4,300,8,10,40, 40,30),
popSize=pSize,
pcrossover = pcrossover_coef,
pmutation = pmutation_coef,
maxiter=iterations,
run=4,
keepBest=T)
cat( "GA-session is done" , file=v_logfile, sep="n", append=T)
gam@solution

Π’ΡƒΡ‚, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ lower ΠΈ upper Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ga задаётся, ΠΏΠΎ сути, ΠΎΠ±Π»Π°ΡΡ‚ΡŒ поискового пространства, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ выполнятся поиск Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° (ΠΈΠ»ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ²) для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ фитнСсс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ga-ΠΏΠΎΠ΄ΠΏΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выполняСт поиск максимизируя фитнСсс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Ну, Ρ‚.ΠΎ., получаСтся Ρ‡Ρ‚ΠΎ, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС, Π½Π°Π΄ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ фитнСсс-функция, понимая Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² субд, ΠΏΠΎΠ»ΡƒΡ‡Π°Π»Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΡƒ, ΠΎΡ‚ субд.

Π’.Π΅.: сколько, ΠΏΡ€ΠΈ Π΄Π°Π½Π½ΠΎΠΉ настройкС субд ΠΈ Π΄Π°Π½Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π½Π° субд: субд ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² сСкунду.

Π’.Π΅., разворачивая, Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ фитнСсс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»Π°ΡΡŒ такая ΠΌΠ½ΠΎΠ³ΠΎΡ…ΠΎΠ΄ΠΎΠ²ΠΊΠ°:

  1. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° чисСл β€” ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΅Π³ΠΎ Π² значСния для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² субд.
  2. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° создания Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»-Π²Π° Ρ€Π΅Π΄ΠΎ-Π³Ρ€ΡƒΠΏΠΏ, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°: ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΉ.
    Π£ΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠΈΠ΅ Π² субд ΠΆΡƒΡ€Π½Π°Π»ΡŒΠ½Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹, Π² ΠΊΠ°ΠΊΠΎΠΌ Ρ‚ΠΎ ΠΊΠΎΠ»-Π²Π΅ ΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, для чистоты экспСримСнта β€” Π΄.Π±. ΡƒΠ΄Π°Π»Π΅Π½Ρ‹.
  3. ΠŸΡ€ΠΈ успСхС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π°: Π·Π°Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² (ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅: ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сбой)
  4. ΠŸΡ€ΠΈ успСхС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π°: остановка субд, запуск субд для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ вновь Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² β€” вступили Π² силу. (ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅: ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сбой)
  5. ΠŸΡ€ΠΈ успСхС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π°: Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΉ тСст. ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΡƒ ΠΎΡ‚ субд.
  6. Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ субд ΠΊ исходному ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ, Ρ‚.Π΅. ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΆΡƒΡ€Π½Π°Π»ΡŒΠ½Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹, Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π² Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ субд.

Код фитнСсс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

evaluate=function(p_par) {
v_module="evaluate"
v_metric=0
opn=NULL
opn$rg_size=round(p_par[1],digit=0)
opn$rg_count=round(p_par[2],digit=0)
opn$log_archive_max_processes=round(p_par[3],digit=0)
opn$commit_logging="BATCH"
if ( round(p_par[4],digit=0) > 5 ) {
 opn$commit_logging="IMMEDIATE"
}
opn$commit_logging=paste("'", opn$commit_logging, "'",sep="")

opn$commit_wait="WAIT"
if ( round(p_par[5],digit=0) > 5 ) {
 opn$commit_wait="NOWAIT"
}
opn$commit_wait=paste("'", opn$commit_wait, "'",sep="")

opn$log_buffer=paste(round(p_par[6],digit=0),"m",sep="")
opn$log_checkpoint_timeout=round(p_par[7],digit=0)
opn$db_writer_processes=round(p_par[8],digit=0)
opn$undo_retention=round(p_par[9],digit=0)
opn$transactions_per_rollback_segment=round(p_par[10],digit=0)
opn$disk_asynch_io="true"
if ( round(p_par[11],digit=0) > 5 ) {
 opn$disk_asynch_io="false"
} 

opn$filesystemio_options="none"
if ( round(p_par[12],digit=0) > 10 && round(p_par[12],digit=0) <= 20 ) {
 opn$filesystemio_options="setall"
}
if ( round(p_par[12],digit=0) > 20 && round(p_par[12],digit=0) <= 30 ) {
 opn$filesystemio_options="directIO"
}
if ( round(p_par[12],digit=0) > 30 ) {
 opn$filesystemio_options="asynch"
}

opn$db_block_checking="OFF"
if ( round(p_par[13],digit=0) > 10 && round(p_par[13],digit=0) <= 20 ) {
 opn$db_block_checking="LOW"
}
if ( round(p_par[13],digit=0) > 20 && round(p_par[13],digit=0) <= 30 ) {
 opn$db_block_checking="MEDIUM"
}
if ( round(p_par[13],digit=0) > 30 ) {
 opn$db_block_checking="FULL"
}

opn$db_block_checksum="OFF"
if ( round(p_par[14],digit=0) > 10 && round(p_par[14],digit=0) <= 20 ) {
 opn$db_block_checksum="TYPICAL"
}
if ( round(p_par[14],digit=0) > 20 ) {
 opn$db_block_checksum="FULL"
}

v_vector=paste(round(p_par[1],digit=0),round(p_par[2],digit=0),round(p_par[3],digit=0),round(p_par[4],digit=0),round(p_par[5],digit=0),round(p_par[6],digit=0),round(p_par[7],digit=0),round(p_par[8],digit=0),round(p_par[9],digit=0),round(p_par[10],digit=0),round(p_par[11],digit=0),round(p_par[12],digit=0),round(p_par[13],digit=0),round(p_par[14],digit=0),sep=";")
cat( paste(v_module," try to evaluate vector: ", v_vector,sep="") , file=v_logfile, sep="n", append=T)

rc=make_additional_rgroups(opn)
if ( rc!=0 ) {
 cat( paste(v_module,"make_additional_rgroups failed",sep="") , file=v_logfile, sep="n", append=T)
 return (0)
}

v_rc=0
rc=set_db_parameter("log_archive_max_processes", opn$log_archive_max_processes)
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("commit_logging", opn$commit_logging )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("commit_wait", opn$commit_wait )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("log_buffer", opn$log_buffer )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("log_checkpoint_timeout", opn$log_checkpoint_timeout )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("db_writer_processes", opn$db_writer_processes )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("undo_retention", opn$undo_retention )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("transactions_per_rollback_segment", opn$transactions_per_rollback_segment )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("disk_asynch_io", opn$disk_asynch_io )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("filesystemio_options", opn$filesystemio_options )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("db_block_checking", opn$db_block_checking )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("db_block_checksum", opn$db_block_checksum )
if ( rc != 0 ) {  v_rc=1 }

if ( rc!=0 ) {
 cat( paste(v_module," can not startup db with that vector of settings",sep="") , file=v_logfile, sep="n", append=T)
 rc=stop_db("immediate")
 rc=create_spfile()
 rc=start_db("")
 rc=remove_additional_rgroups(opn)
 return (0)
}

rc=stop_db("immediate")
rc=start_db("")
if ( rc!=0 ) {
 cat( paste(v_module," can not startup db with that vector of settings",sep="") , file=v_logfile, sep="n", append=T)
 rc=stop_db("abort")
 rc=create_spfile()
 rc=start_db("")
 rc=remove_additional_rgroups(opn)
 return (0)
}

rc=run_test()
v_metric=getmetric()

rc=stop_db("immediate")
rc=create_spfile()
rc=start_db("")
rc=remove_additional_rgroups(opn)

cat( paste("result: ",v_metric," ",v_vector,sep="") , file=v_logfile, sep="n", append=T)
return (v_metric)
}

Π’.ΠΎ. вся Ρ€Π°Π±ΠΎΡ‚Π°: выполняСтся Π² фитнСсс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ga-ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, выполняСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ², Π½Ρƒ ΠΈΠ»ΠΈ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π΅Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ β€” хромосом.
Π’ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ, Π½Π°ΠΌ большС всСго Π²Π°ΠΆΠ½Π°: сСлСкция хромосом с Ρ‚Π°ΠΊΠΈΠΌΠΈ Π³Π΅Π½Π°ΠΌΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… фитнСсс-функция Π²Ρ‹Π΄Π°Ρ‘Ρ‚ большиС значСния.

Π­Ρ‚ΠΎ, ΠΏΠΎ сути ΠΈ Π΅ΡΡ‚ΡŒ процСсс поиска ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° хромосом Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ, Π² N-ΠΌΠ΅Ρ€Π½ΠΎΠΌ пространствС поиска.

ΠžΡ‡Π΅Π½ΡŒ внятноС, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ объяснСниС, с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ R-ΠΊΠΎΠ΄Π°, Ρ€Π°Π±ΠΎΡ‚Ρ‹ гСнСтичСского Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‡Ρƒ Π΄Π²Π° тСхничСских ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°.

Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹, ΠΈΠ· Ρ„-Ρ†ΠΈΠΈ evaluate, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ остановка-запуск, Π·Π°Π΄Π°Π½ΠΈΠ΅ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° субд, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π° основС cran-r Ρ„-Ρ†ΠΈΠΈ system2

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ: вызываСтся ΡƒΠΆΠ΅ ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΎ баш-скрипт, ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°.

НапримСр:

set_db_parameter

set_db_parameter=function(p1, p2) {
v_module="set_db_parameter"
v_cmd="/home/oracle/testingredotracΠ΅/set_db_parameter.sh"
v_args=paste(p1," ",p2,sep="")

x=system2(v_cmd, args=v_args, stdout=T, stderr=T, wait=T)
if ( length(attributes(x)) > 0 ) {
 cat(paste(v_module," failed with: ",attributes(x)$status," ",v_cmd," ",v_args,sep=""), file=v_logfile, sep="n", append=T)
 return (attributes(x)$status)
}
else {
 cat(paste(v_module," ok: ",v_cmd," ",v_args,sep=""), file=v_logfile, sep="n", append=T)
 return (0)
}
}

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ β€” строка, evaluate Ρ„-Ρ†ΠΈΠΈ, с сохранСниСм ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ значСния ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΈ Π΅ΠΉ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ настроСчного Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, Π² Π»ΠΎΠ³-Ρ„Π°ΠΉΠ»:

cat( paste("result: ",v_metric," ",v_vector,sep="") , file=v_logfile, sep="n", append=T)

Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ, Ρ‚.ΠΊ., ΠΈΠ· этого массива Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² настроСчного Π²Π΅ΠΊΡ‚ΠΎΡ€Π° большС, ΠΈΠ»ΠΈ мСньшС влияСт Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ.

Π’.Π΅.: ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ провСсти attribute-importamce Π°Π½Π°Π»ΠΈΠ·.

Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ получится.

Π’ Π²ΠΈΠ΄Π΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°, Ссли ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ тСсты ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° такая:

ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΡƒΡ‡Π½ΠΎΠ³ΠΎ Ρ‚Ρ‹ΠΊΠ°, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ субд с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ² ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

НСкоторыС Π΄Π°Π½Π½Ρ‹Π΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΡ€Π°ΠΉΠ½ΠΈΠΌ значСниям ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ:
ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΡƒΡ‡Π½ΠΎΠ³ΠΎ Ρ‚Ρ‹ΠΊΠ°, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ субд с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ² ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°
Π’ΡƒΡ‚, Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ, ΡƒΡ‚ΠΎΡ‡Π½ΡŽ: значСния настроСчного Π²Π΅ΠΊΡ‚ΠΎΡ€Π° β€” Π΄Π°Π½Ρ‹ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ΠΊΠΎΠ΄Π° фитнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… Π½Π°ΠΌΠ±Π΅Ρ€-списка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²/Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π» Π²Ρ‹ΡˆΠ΅ ΠΏΠΎ тСксту.

Ну. Много это, ΠΈΠ»ΠΈ ΠΌΠ°Π»ΠΎ, ~8тыс tps: вопрос ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ.
Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ β€” Π½Π΅ ΡΡƒΡ‚ΡŒ Π²Π°ΠΆΠ½Π° эта Ρ†ΠΈΡ„Ρ€Π°, Π²Π°ΠΆΠ½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ°, ΠΊΠ°ΠΊ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ мСняСтся.

Π”ΠΈΠ½Π°ΠΌΠΈΠΊΠ° Ρ‚ΡƒΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ.
ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΊΡ‚ΠΎΡ€, Π·Π½Π°Ρ‡ΠΈΠΌΠΎ Π²Π»ΠΈΡΡŽΡ‰ΠΈΠΉ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, ga-Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, пСрСбирая Π²Π΅ΠΊΡ‚ΠΎΡ€Π°-хромосомы: Π½Π°ΠΊΡ€Ρ‹Π».
Будя ΠΏΠΎ достаточно Π±ΠΎΠ΄Ρ€ΠΎΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΡ€ΠΈΠ²ΠΎΠΉ β€” Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΊΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, хотя ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ мСньшС, Π½ΠΎ влияСт.

Π’ΠΎΡ‚ Ρ‚ΡƒΡ‚ Π½ΡƒΠΆΠ΅Π½ attribute-importance Π°Π½Π°Π»ΠΈΠ·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ: ΠΊΠ°ΠΊΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ (Π½Ρƒ, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС β€” ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ настроСчного Π²Π΅ΠΊΡ‚ΠΎΡ€Π°) ΠΈ ΠΊΠ°ΠΊ сильно Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ.
А ΠΎΡ‚ этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ: ΠΏΠΎΠ½ΡΡ‚ΡŒ β€” ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΊΡ‚ΠΎΡ€Ρ‹ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π»ΠΈΡΡŒ измСнСниями Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ attribute-importance ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами.

МнС, для этих Ρ†Π΅Π»Π΅ΠΉ, нравится Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ randomForest ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ R-ΠΏΠ°ΠΊΠ΅Ρ‚Π° (докумСнтация)
randomForest, ΠΊΠ°ΠΊ я понимаю Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΎΡ†Π΅Π½ΠΊΠ΅ ваТности Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Π² частности, строит Π½Π΅ΠΊΡƒΡŽ модСль зависимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ°, ΠΎΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².

Π’ нашСм случаС пСрСмСнная ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° β€” это ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° получаСмая ΠΎΡ‚ субд, Π² Π½Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹Ρ… тСстах: tps;
А Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ это β€” ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ настроСчного Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

Π’Π°ΠΊ Π²ΠΎΡ‚ randomForest ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ двумя числами: %IncMSE β€” ΠΊΠ°ΠΊ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅/отсутсвиС Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ, измСняСт MSE-качСство этой ΠΌΠΎΠ΄Π΅Π»ΠΈ (Mean Squared Error);

И IncNodePurity β€” это число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ насколько качСствСнно, ΠΏΠΎ значСниям Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ датасСт с наблюдСниями, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΎΠ΄Π½ΠΎΠΉ части оказались Π΄Π°Π½Π½Ρ‹Π΅, с ΠΊΠ°ΠΊΠΈΠΌ Ρ‚ΠΎ ΠΎΠ΄Π½ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ объясняСмой ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ.
Ну Ρ‚.Π΅.: насколько это ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ (Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ внятноС, рускояз-Π΅ пояснСниС ΠΏΠΎ рандомфорСст-Ρƒ Π²ΠΈΠ΄Π΅Π» Ρ‚ΡƒΡ‚).

Π Π°Π±ΠΎΡ‡Π΅-ΠΊΡ€Π΅ΡΡ‚ΡŒΡΠ½ΡΠΊΠΈΠΉ R-ΠΊΠΎΠ΄, для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ датасСта с ΠΈΡ‚ΠΎΠ³Π°ΠΌΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹Ρ… тСстов:

x=NULL
v_data_file=paste('/tmp/data1.dat',sep="")
x=read.table(v_data_file, header = TRUE, sep = ";", dec=",", quote = ""'", stringsAsFactors=FALSE)
colnames(x)=c('metric','rgsize','rgcount','lamp','cmtl','cmtw','lgbffr','lct','dbwrp','undo_retention','tprs','disk_async_io','filesystemio_options','db_block_checking','db_block_checksum')

idxTrain=sample(nrow(x),as.integer(nrow(x)*0.7))
idxNotTrain=which(! 1:nrow(x) %in% idxTrain )
TrainDS=x[idxTrain,]
ValidateDS=x[idxNotTrain,]

library(randomForest)
#mtry=as.integer( sqrt(dim(x)[2]-1) )
rf=randomForest(metric ~ ., data=TrainDS, ntree=40, mtry=3, replace=T, nodesize=2, importance=T, do.trace=10, localImp=F)
ValidateDS$predicted=predict(rf, newdata=ValidateDS[,colnames(ValidateDS)!="metric"], type="response")
sum((ValidateDS$metric-ValidateDS$predicted)^2)
rf$importance

МоТно прямо Ρ€ΡƒΠΊΠ°ΠΌΠΈ ΠΏΠΎΠΏΠΎΠ΄Π±ΠΈΡ€Π°Ρ‚ΡŒ Π³ΠΈΠΏΠ΅Ρ€ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΠΌΠ° ΠΈ, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡΡΡŒ Π½Π° качСство ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ модСль ΠΏΠΎΡ‚ΠΎΡ‡Π½Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΡƒΡŽ прСдсказания Π½Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ датасСтС.
МоТно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для этой Ρ€Π°Π±ΠΎΡ‚Ρ‹ (кстати β€” ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, Π½Π° ΠΊΠ°ΠΊΠΎΠΌ Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅).

МоТно Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ R-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ caret, Π½Π΅ ΡΡƒΡ‚ΡŒ Π²Π°ΠΆΠ½ΠΎ.

Π’ ΠΈΡ‚ΠΎΠ³Π΅, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС, получаСтся Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, для ΠΎΡ†Π΅Π½ΠΊΠΈ стСпСни ваТности Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²:

ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΡƒΡ‡Π½ΠΎΠ³ΠΎ Ρ‚Ρ‹ΠΊΠ°, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ субд с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ² ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

Ну. Π’.ΠΎ., ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ осмыслСниям:

  1. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΌ, Π² Π΄Π°Π½Π½Ρ‹Ρ… условиях тСстирования, оказался ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ commit_wait
    ВСхничСски, ΠΎΠ½ Π·Π°Π΄Π°Ρ‘Ρ‚ Ρ€Π΅ΠΆΠΈΠΌ выполнСния io-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ записи Ρ€Π΅Π΄ΠΎ-Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ· Π»ΠΎΠ³-Π±ΡƒΡ„Π΅Ρ€Π° субд, Π² current-ΠΆΡƒΡ€Π½Π°Π»ΡŒΠ½ΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ: синхронный, ΠΈΠ»ΠΈ асинхронный.
    Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ nowait ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ получаСтся практичСски Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ, ΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ прирост значСния tps-ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ: это Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ асинк-ΠΌΠΎΠ΄Ρ‹ io Π² Ρ€Π΅Π΄ΠΎ-Π³Ρ€ΡƒΠΏΠΏΡ‹.
    ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ вопрос β€” Π½Π°Π΄ΠΎ, ΠΈΠ»ΠΈ Π½Π΅ Π½Π°Π΄ΠΎ Ρ‚Π°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π΄. Π’ΡƒΡ‚ я ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ констатациСй: это Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΉ Ρ„Π°ΠΊΡ‚ΠΎΡ€.
  2. Π›ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π»ΠΎΠ³-Π±ΡƒΡ„Ρ„Π΅Ρ€Π° субд: оказываСтся Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΌ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ.
    Π§Π΅ΠΌ мСньшС Ρ€Π°Π·ΠΌΠ΅Ρ€ Π»ΠΎΠ³-Π±ΡƒΡ„Π΅Ρ€Π°, Ρ‚Π΅ΠΌ мСньшС Π΅Π³ΠΎ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ, Ρ‚Π΅ΠΌ Ρ‡Π°Ρ‰Π΅ ΡΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Π΅Π³ΠΎ пСрСполнСния ΠΈ/ΠΈΠ»ΠΈ Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² Π½Ρ‘ΠΌ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄ ΠΏΠΎΡ€Ρ†ΠΈΡŽ Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π΅Π΄ΠΎ-Π΄Π°Π½Π½Ρ‹Ρ….
    А Π·Π½Π°Ρ‡ΠΈΡ‚: Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ связанныС с Π°Π»Π»ΠΎΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ пространства Π² Π»ΠΎΠ³-Π±ΡƒΡ„Ρ„Π΅Ρ€Π΅ ΠΈ/ΠΈΠ»ΠΈ сбросом Ρ€Π΅Π΄ΠΎ-Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π½Π΅Π³ΠΎ Π² Ρ€Π΅Π΄ΠΎ-Π³Ρ€ΡƒΠΏΠΏΡ‹.
    Π­Ρ‚ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Π»ΠΈΡΡ‚ΡŒ ΠΈ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ субд ΠΏΠΎ транзакциям.
  3. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ db_block_checksum: Π½Ρƒ, Ρ‚ΠΎΠΆΠ΅, Π² ΠΎΠ±Ρ‰Π΅ΠΌ Ρ‚ΠΎ понятно β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡŽ Π΄Π°Ρ€Ρ‚ΠΈ-Π±Π»ΠΎΠΊΠΎΠ² Π² Π±ΡƒΡ„Π΅Ρ€Π½ΠΎΠΌ кСшС субд.
    ΠšΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ чСксумм Π΄Π°Ρ‚Π°Π±Π»ΠΎΠΊΠΎΠ², Π±Π°Π·Π΅ приходится ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ β€” Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ эти чСксуммы ΠΎΡ‚ Ρ‚Π΅Π»Π° Π΄Π°Ρ‚Π°Π±Π»ΠΎΠΊΠ°, ΡΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΈΡ… с Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎ написано Π² Ρ…ΠΈΠ΄Π΅Ρ€Π΅ Π΄Π°Ρ‚Π°Π±Π»ΠΎΠΊΠ°: совпадаСт/Π½Π΅ совпадаСт.
    Вакая Ρ€Π°Π±ΠΎΡ‚Π°, ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π·Π°Ρ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Ρƒ ΠΈ соотвСтствСнно, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π·Π°Π΄Π°Ρ‘Ρ‚ β€” ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠΌΠΈ.
    ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΆΠ΅ Π²Π΅Π½Π΄ΠΎΡ€ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚, Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Ρ€Π°Π·Π½Ρ‹Π΅ Π΅Π³ΠΎ (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°) значСния ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ β€” Π΄Π°, ΠΈΠΌΠΏΠ°ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚, Π½ΠΎ, Π²ΠΎΡ‚, Ρ€Π°Π·Π½Ρ‹Π΅ значСния, Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ "Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ" ΠΈ Ρ€Π°Π·Π½Ρ‹ΠΉ ΠΈΠΌΠΏΠ°ΠΊΡ‚, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ.

Ну ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄, Π² ΠΎΠ±Ρ‰Π΅ΠΌ Ρ‚ΠΎ: оказываСтся Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ.

Он Π²ΠΏΠΎΠ»Π½Π΅ сСбС позволяСт, Π½Π° Ρ€Π°Π½Π½ΠΈΡ… этапах Π½Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠ³ΠΎ тСстирования Π½Π΅ΠΊΠΎΠ΅ΠΉ сСрвисной систСмы, для Π²Ρ‹Π±ΠΎΡ€Π° Π΅Ρ‘ (систСмы) ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π΅ особо сильно Π²Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π² особСнности настройки систСмы ΠΏΠΎΠ΄ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ.

Но Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ совсСм β€” хотя Π±Ρ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ понимания: "Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ€ΡƒΡ‡Π΅ΠΊ" ΠΈ допустимых Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² вращСния этих Ρ€ΡƒΡ‡Π΅ΠΊ систСму Π·Π½Π°Ρ‚ΡŒ Π½Π°Π΄ΠΎ.

Π”Π°Π»Π΅Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстро ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ систСмы.
И ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎ ΠΈΡ‚ΠΎΠ³Π°ΠΌ тСстирования, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΏΡ€ΠΎ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ взаимосвязи ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ качСства Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ настроСчных ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² систСмы.

Π§Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ возникновСнию Π²ΠΎΡ‚ этого самого Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ понимания систСмы, Π΅Ρ‘ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ β€” ΠΏΠΎΠ΄ Π΄Π°Π½Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ это: Ρ€Π°Π·ΠΌΠ΅Π½ Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° Π²Π½ΠΈΠΊΠ°Π½ΠΈΠ΅ Π² Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Π΅ΠΌΡƒΡŽ систСму, Π½Π° Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ ΠΏΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ тСстирования Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы.

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‡Ρƒ: Π² этом ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ β€” ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ Π²Π°ΠΆΠ½Π° ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ адСкватности тСстирования систСмы ΠΊ Ρ‚Π΅ΠΌ условиям Π΅Ρ‘ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρƒ Π½Π΅Ρ‘ Π±ΡƒΠ΄ΡƒΡ‚ Π² ΠΏΡ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ эксплуатации.

Бпасибо Π·Π° вашС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, врСмя.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ