Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠœΠΈΡ€ InterBase. АрхитСктура, администрированиС ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π² InterBase/FireBird/YaffilΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 98

Автор А Ковязин

Π’ сСрвСрах Bolrand InterBase вСрсии Π½ΠΈΠΆΠ΅ 7.0, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ SuperServer, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ обслуТиваниС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΠΎ схСмС ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ сСрвСра. Однако ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ процСссора ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ (диспСтчСризация) происходит Π½Π΅ ΠΏΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Π° Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ "Π΄ΠΎΠ±Ρ€ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ". Вакая схСма ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ многозадачности Π² Windows 3.1 ΠΈ называСтся Π½Π΅Π²Ρ‹Ρ‚Π΅ΡΠ½ΡΡŽΡ‰Π΅ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Ρ‡Π½ΠΎΡΡ‚ΡŒΡŽ.

Π‘ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ связано числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π²Π½ΠΎΠ΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π΅ ΠΊΠ²Π°Π½Ρ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ, ΠΏΠΎΠΊΠ° Π½Π΅ достигнСт нуля. Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΊΠ²Π°Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ считаСтся исчСрпанным ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. Ясно, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ€Π°Π²Π½Ρ‹ΠΉ доступ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΊ процСссору ΠΏΡ€ΠΈ 1эком ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° проявляСтся Π² Ρ€Π΅Π·ΠΊΠΎΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… запросов ΠΏΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…, "тяТСлых" запросов.

Π’ сСрвСрС Yaffil данная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ослаблСна Π·Π° счСт ввСдСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ участках ΠΊΠΎΠ΄Π° сСрвСра. Для Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² сСрвСра ΠΈ ΠΎ Ρ†Π΅Π»ΡŒΠ½ΠΎ для ΠΏΠΎΡ‚ΠΎΠΊΠ° сборки мусора Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ ΠΊΠ²Π°Π½Ρ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ THREAD_QUANTUM ΠΈ SWEEP_THREAD_QUANTUM. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ FORCE_RESHEDULE Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ распрСдСлСниС процСссорного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ происходит Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ.

Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… соСдинСний (XNET)

Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ соСдинСниС Π² InterBase выполняСтся с использованиСм Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² раздСляСмой памяти ΠΈ обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ (TCP ΠΈ Named Pipes). Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ это называСтся Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΈΠ»ΠΈ IP Server (IPS) ΠΏΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Borland. ВмСстС с Ρ‚Π΅ΠΌ локальноС соСдинСниС Π² InterBase ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ двумя ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌΠΈ нСдостатками, часто Π΄Π΅Π»Π°ΡŽΡ‰ΠΈΠΌΠΈ Π΅Π³ΠΎ использованиС Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, локальноС соСдинСниС Π½Π΅ допускаСт ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ (ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ) Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… соСдинСний. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ клиСнтскоС соСдинСниС Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, для установлСния соСдинСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΊΠΎΠ½Π½ΠΎΠ΅ сообщСниС, посылаСмоС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ скрытому ΠΎΠΊΠ½Ρƒ сСрвСра. Если сСрвСр InterBase Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ слуТба NT ΠΈ клиСнтскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ слуТба, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ desktops, ΠΏΡ€ΠΈ этом посылка ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… сообщСний ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ - WEB-сСрвСр Microsoft Internet Information Server (US), Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ прилоТСния, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… InterBase. Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ Π² Ρ‚Π°ΠΊΠΈΡ… случаях рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» TCP для установлСния соСдинСний ΠΈΠ· сСрвисов NT, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сказываСтся Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

XNET Ρ‚Π°ΠΊΠΆΠ΅ являСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ локального соСдинСния с использованиСм Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² раздСляСмой памяти, поэтому Π΅Π³ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Π° "старому" Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ (IPS). ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ рСализация допускаСт ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ использованиС Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ… Π±Π΅Π· Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ³ΠΎ блокирования. Для установлСния соСдинСния большС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠΊΠ½Π° ΠΈ ΠΎΠΊΠΎΠ½Π½Ρ‹Π΅ сообщСния, поэтому соСдинСния Π½Π°Π΄Π΅ΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈΠ· слуТб Windows NT.

ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎ XNET Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ спСциалистами Ρ„ΠΈΡ€ΠΌΡ‹ Borland ΠΈ планировался ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅Π½Π° Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΌΡƒ старому Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ. Начало Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π² исходном ΠΊΠΎΠ΄Π΅ 1995 Π³ΠΎΠ΄ΠΎΠΌ.

Π’ сСрвСрС Yaffil ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ внСсСны измСнСния, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π½Π° ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ надСТности Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² случаС Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ³ΠΎ "падСния" ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· сторон. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ соСдинСния с сСрвСром ΠΈΠ· слуТб NT Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π±Ρ‹Π»Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Yaffil.

Π‘Ρ‚Ρ€ΠΎΠΊΠ° соСдинСния ΠΏΠΎ XNET Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ строкС локального соСдинСния. ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» XNET Π½Π΅ совмСстим ΠΏΠΎ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ вСрсиями InterBase/Firebird, поэтому Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ (GDS32.DLL), ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ вСрсии сСрвСра. Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии XNET нСдоступСн Π² Yaffil Classic Server.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ оТидания для Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ (Lock timeout)

ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° обновлСния записи Π² InterBase Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° повСдСния Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ WAIT (isc_tpb_wait / bc_tpb_no_wait). - бСсконСчноС ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° ΠΈΠ»ΠΈ нСмСдлСнная Π²Ρ‹Π΄Π°Ρ‡Π° ошибки. Π Π΅ΠΆΠΈΠΌ с ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ΠΌ часто ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅Ρ‚ нСобходимости ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π² случаС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°, Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅ΠΆΠΈΠΌ являСтся ΠΎΡ‡Π΅Π½ΡŒ опасным ΠΈΠ·-Π·Π° возмоТности бСсконСчной Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ прилоТСния.

Π’ сСрвСрС Yaffil Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ врСмя оТидания Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Для этого слуТит ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ LOCK_TIMEOUT, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ врСмя Π² сСкундах. ΠŸΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ 1 Π΄ΠΎ 32 767 опрСдСляСт врСмя оТидания WAIT Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число опрСдСляСт бСсконСчноС врСмя оТидания. НулСвоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ эффСктивно ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ WAIT Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² NOWAIT. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ -1 (минус ΠΎΠ΄ΠΈΠ½), Ρ‡Ρ‚ΠΎ обСспСчиваСт ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ вСрсиями. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ влияния Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ NOWAIT.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… вСрсиях планируСтся ввСсти константу Π±Π»ΠΎΠΊΠ° Π’Π Π’ (transaction parameter block), ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ оТидания ΠΏΡ€ΠΈ запускС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎ.

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ SQL

Π’ сСрвСрС Yaffil Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ нСсколько Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… языковых конструкций SQL ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Interbase/Firebird:

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ IIF

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ IIF позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Π² запросах. Бинтаксис:

IIF '(' search_condition ', ' value_if_true ', ' value_if_false')'

Выполняя ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ IIF, сСрвСр вычисляСт Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ search_condition. Если search_condition, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ IIF являСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ value_if_true, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС value_if_false.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

select iif(re.rdb$collation_id = 0, 'ДА', 'НЕВ') from

rdb$collations re

where re.rdb$collation_name = 'WIN1251'

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² запрос, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ - "ДА".

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ IIF ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΈ вычислСнии Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

а = b + iif(c is null, 0, с);

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ INSERT INTO ... FROM ... UNION ...

Π‘Π΅Ρ€Π²Π΅Ρ€ Yaffil, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ InterBase/Firebird, позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ объСдинСния UNION для формирования Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° вставку. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

insert into t_a (id) select b.id from b union select с.id from с

ВыраТСния Π² EXCEPTION

Π‘Π΅Ρ€Π²Π΅Ρ€ Yaffil Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ синтаксис инструкции exception. Π”ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° использования:

* exception 'ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅'; Π­Ρ‚ΠΎΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ соотвСтствуСт синтаксисe interbase/Firebird - сСрвСр выбрасываСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ.

* exception 'ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅' 'Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅'; Π’ этом случаС сСрвСр Ρ‚Π°ΠΊΠΆΠ΅ выбрасываСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ Π΅Π³ΠΎ тСкст замСняСтся Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСния выраТСния.

* exception; Π‘Π΅Ρ€Π²Π΅Ρ€ выбрасываСт послСднСС сформированноС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Если Π΄ΠΎ выполнСния этой инструкции ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ, Ρ‚ΠΎ инструкция игнорируСтся. Π­Ρ‚ΠΎΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ выбрасывания ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ошибок WHEN.

БистСмныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ROWS_AFFECTED, GDSCODE, SQLCODE, TRANSACTIONJD, CONNECTIONJD

* ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ROWS_AFFECTED содСрТит количСство записСй, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния послСднСго Π·Π° ipoca.

* ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ GDSCODE содСрТит значСния инструкции gdscode Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ WHEN, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Π½Π΅ контСкста WHEN.

* ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ SQLCODE содСрТит значСния инструкции sqlcode Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ WHEN, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Π½Π΅ контСкста WHEN.

* ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ TRANSACTION_ID содСрТит Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

* ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ CONNECTION_ID содСрТит Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ столбца

Π‘Π΅Ρ€Π²Π΅Ρ€ Yaffil Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ синтаксис инструкции group by. ДопускаСтся ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€Π° столбцов для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΊΠ°ΠΊ Π² инструкции oreder by.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

select count(a), b from t group by 2

ЗначСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Π‘Π΅Ρ€Π²Π΅Ρ€ Yaffil Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ синтаксис инструкции declare variable. МоТно Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово variable ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

declare k = 0;

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… BIGINT

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… BIGINT являСтся Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… NUMERIC (18.0) ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎΠ΅ ΠΈ понятноС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ для 64-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Π΅ страницы ΠΈ порядки сортировки

Π’ Yaffil Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Π΅ страницы ΠΈ порядки сортировки:

* CS_WIN1257 - страны ΠŸΡ€ΠΈΠ±Π°Π»Ρ‚ΠΈΠΊΠΈ, кодовая страница Windows - 1257

ΠŸΠΎΡ€ΡΠ΄ΠΊΠΈ сортировки:

* WIN1257_EE - Эстония

* WIN1257_LV-Π»ΠΈΡ‚Π²Π°

* WIN1257_LT- Латвия

* CS_KOI8R - Россия KOI8. кодовая страница Windows - 20866

ΠŸΠΎΡ€ΡΠ΄ΠΊΠΈ сортировки:

* KOI8R

* KOI8R_RU

* CS_KOI8U - Π£ΠΊΡ€Π°ΠΈΠ½Π° KOI8-U, кодовая страница Windows - 21866

ΠŸΠΎΡ€ΡΠ΄ΠΊΠΈ сортировки:

* KOI8U

* KOI8LLUA

Π’Π°ΠΊΠΆΠ΅ для ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ страницы WIN 1251 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ порядки сортировки:

* WIN1251_UA

* WIN1251_RU

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ встроСнным функциям ΠΈ UDF

Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π° Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ использованиС встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ UDF.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

select sum(vent) from sales group by extract(year from sale date)

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ FIRST/SKIP