Veguheztina Streaming databasên Firebird 2.5 bo formata ODS12 (Firebird 3.0)

Her guhertoya Firebird guhertoya xwe ya strukturê dîskê ya databasê heye, O(n)D(isk)S(sazkirin). Heya guhertoya 2.5-ê tevde, motora Firebird dikaribû bi ODS-ên guhertoyên berê re bixebite, ango databasên ji guhertoyên kevn ji hêla guhertoya nû ve hatin vekirin û di moda hevahengiyê de xebitîn, lê motora Firebird 3.0 tenê di guhertoya xweya ODS de bi databasan re dixebite. 12.0.

Ji bo veguheztina berbi 3.0-ê, divê databasa ji 2.5-ê bi navgîniya hilanînê/vegerandinê veguhezîne forma nû. Bê guman, em texmîn dikin ku databas berê ji bo veguheztinê hatî amadekirin - ango. metadata û pirs ji bo lihevhatina bi Firebird 3.0 re hatine kontrol kirin.

Ger hûn nêzîkatiya standard bişopînin, ev tê vê wateyê ku hûn hewce ne ku li ser guhertoya 2.5-ê hilanînê çêbikin, dûv re 3.0 saz bikin û vegerandin. Ger dem têra xwe hebe pêvajoyek wusa tête pejirandin, lê dema ku databasên mezin têne koçber kirin, an dema ku di heman demê de bi dehan databasan koç dikin, dema ku dem diqede, hûn dikarin veguheztina streaming bikar bînin, ku 30-40% zûtir e. Meriv çawa vê yekê bi rastî (di bin Windows û di bin Linux de) bike, di bin qutkirinê de bixwînin.

Fikra giştî ev e ku em ê boriyek bikar bînin da ku tiştan bilezînin:

gbak -b … база25 stdout | gbak -c … stdin база30

Gbak ji 2.5 vegerek bi formatek xêzik çêdike û wê ji stdout re dişîne, ku tavilê gbak ji 3.0 bi stdin ve hildibijêre û databasek nû diafirîne.

Pêdivî ye ku meriv boriyek wusa bi rêbazek gihîştina herêmî (pelê) organîze bike, ji ber ku gihandina torê (tevî bi navgîniya localhost) dê pêvajoyê bi girîngî hêdî bike.

Em li jêr hûrguliyên Windows û Linux diçin.

Windows

Di doza Windows-ê de, awayê herî hêsan ev e ku meriv avahiyek bi tevahî serbixwe ya Firebird-ê çêbike. Ji bo vê em digirin embed-archive Firebird 2.5, navê fbemded.dll biguherîne fbclient.dll, gbak.exe û (bi bijartî) karûbarên isql.exe ji arşîva 2.5 ya "rêkûpêk" lê zêde bike.

Firebird 3.0 bikar tîne meclîsa yekane û ti guhertinek hewce nake.

Guhertoya herî hindiktirîn (ku hewcedariya sazkirina pirtûkxaneyên dema xebatê yên VS2008/VS2010 li ser pergala armanc nake) pelên jêrîn dihewîne:

25/gbak.exe
25/fbclient.dll
25/firebird.conf
25/firebird.log
25/firebird.msg
25/ib_util.dll
25/icudt30.dll
25/icuin30.dll
25/icuuc30.dll
25/Microsoft.VC80.CRT.manifest
25/msvcp80.dll
25/msvcr80.dll

30/fbclient.dll
30/firebird.conf
30/firebird.msg
30/gbak.exe
30/ib_util.dll
30/icudt52.dll
30/icudt52l.dat
30/icuin52.dll
30/icuuc52.dll
30/msvcp100.dll
30/msvcr100.dll
30/intl/fbintl.conf
30/intl/fbintl.dll
30/plugins/engine12.dll

Rêvebirek pispor dikare bibîne ku 2.5 pelên intl/fbintl.dll û intl/fbintl.conf nagire. Ev rast e, ji ber ku gbak xêzek pêwendiyê bikar nayîne û daneyan di navbera tîpan de naguhezîne, lê li aliyê "wergirtin"ê Firebird 3.0, ev pelan dema çêkirina indexan hewce ne.

Di firebird.conf de Firebird 3.0 tê pêşniyar kirin ku lê zêde bike:

MaxUnflushedWrites = -1
MaxUnflushedWriteTime = -1

Di heman demê de, tê xwestin ku ji bo 2.5 û 3.0 nirxên cûda yên IpcName werin danîn.

Dema ku nirxên pîvanên din ên firebird.conf hilbijêrin, em ji nêrînek hêsan derdixin: di qonaxa veguheztina daneyan de, gbak di pêvajoyek de 2.5, û di pêvajoyek din de 3.0 dimeşîne, dûv re 2.5 derdikeve, û 3.0 dest bi avakirinê dike. indexes.

Ji bo bilezkirina qonaxa avakirina îndeksê di 3.0-ê de, tê pêşniyar kirin ku mezinahiya parametreya TempCacheLimit heya ~ 40% RAM zêde bikin (heke ew serverek veqetandî be, bê guman).

Mînakî, heke server 16 GB RAM heye, wê hingê hûn dikarin deynin

TempCacheLimit=6G

Bê guman, ev nirx tenê ji bo Firebird 64-ê 3-bit dikare were danîn, ji ber ku her pêvajoyek 32-bit nikare ji 2 gigabyte bîra bêtir veqetîne.

Di 2.5-ê de, ev parametre ne hewce ye ku were guheztin - bi her awayî ew nikare ji 2 gigabyte zêdetir be, û ew di dema hilanînê de bandorê li lezê nake.

Berî ku hûn operasyonê bikin, hûn hewce ne ku kontrol bikin ka cacheya rûpelê ya di sernavê databasê de wekî 0 (ferman gstat -h databasename, li xeta tamponên Rûpelê binêre).

Ger cache bi eşkere di sernavê databasê de were danîn, wê hingê ew nirxan ji firebird.conf (û databases.conf di 3.0-ê de) derbas dike, û di rewşên nirxên ne têra xwe mezin de, ew dikare bibe sedema xerckirina bîranînê û guheztina zêde.

Piştre, pelan li pergala armancê kopî bikin.

Veguhertin piştî rawestandina karûbarê Firebird 2.5 ya "pergalê", li ser xeta fermanê bi mafên bilindkirî yên ji rêveberê herêmî re tête kirin (mînak):

set ISC_USER=владелец
"25/gbak" -z -b -g -v -st t -y 25.log база25 stdout|^
"30/gbak" -z -c -v -st t -y 30.log stdin база30

Ev nimûne di quote de "berkêşkek pêş" bikar tîne (derbasdar "unix-style"), û "hat" (karaktera "^") ji karaktera xêza nû direve, ku di dema nivîsandina fermanên dirêj de bikêr e. Vebijarka -st(atus) di Firebird 2.5.8 de xuya bû û destûrê dide te ku hûn daneyên di derbarê dema ku pêvajoya gbak dimeşîne têkevin (ji bo hûrguliyan, li belgeyê binêre).

Linux

Li Linux Firebird 3 bi pirtûkxaneya tommath ve girêdayî ye. Li ser CentOS (RHEL) ev pirtûkxane di depoya epel, li Ubuntu (Debian) di depoya pergalê de ye.

Ji bo CentOS, divê hûn pêşî depoya epel ve girêbidin û tenê wê hingê bikin

yum install libtommath

Ubuntu ne hewce ye ku depoyên pêvek bihewîne, lê Ubuntu 16 û Ubuntu 18 guhertoyên cihêreng ên pakêtan saz dikin - bi rêzdarî libtommath0 û libtommath1.

Firebird 3.0 li tommath.so.0 digere û ji bo Ubuntu 18 jî pêdivî ye ku girêdanek (symlink) ji tommath.so.0 ji tommath.so.1 re çêbike. Ji bo vê yekê, hûn pêşî hewce ne ku tommath.so.1 bibînin.

Di Ubuntu de riya lêgerîn - /usr/lib/x86_64-linux-gnu/, lê dabeşên din ên bingehîn ên Debian dibe ku cûda bin.

Pirsgirêka duyemîn bi vê yekê ve girêdayî ye ku heya Firebird 3.0.1 û di nav de, rêyek hêsan tune ku du guhertoyên serverê yên cihêreng saz bikin. Em vebijarka "ji çavkaniyê bi pêşgira pêwîst berhev bikin" ji ber tevliheviya wê ya têkildar nahesibînin.

Ji bo Firebird 3.0.2 û bilindtir hatî pêkanîn bi --enable-binreloc ava bikin û vebijarkek sazkerê veqetandî (rêya -rê).

Bihesibînin ku pirtûkxaneya tommath û, ger hewce be, girêdanek ji bo tommath.so.0 li pergalê hatî zêdekirin, hûn dikarin dabeşkirina Firebird 3.0.4 ya heyî (di dema nivîsandinê de) saz bikin, wek nimûne, /opt /fb3:

./install.sh -path /opt/fb3

Piştî wê, hûn dikarin karûbarê pergala Firebird rawestînin û dest bi veguheztina streaming bikin.

Dema ku Firebird rawestîne, ji bîr mekin ku pêvajoyên Firebid 2.5 di moda klasîk de bi gelemperî ji hêla xinetd ve têne destpêkirin - ji ber vê yekê hûn hewce ne ku karûbarê firebird ji bo xinetd neçalak bikin an jî xinetd bi tevahî rawestînin.

Li firebird.conf ji bo 3.0-ê li Linux-ê, hûn ne hewce ne ku hûn pîvanên MaxUnflushed saz bikin (ew tenê li ser Windows-ê dixebitin) û mîhengên Firebird 2.5 biguherînin.

Di Linux-ê de, gihîştina herêmî (pelê) Firebird 2.5 bi guhertoya bicîbûyî ya di bin Windows-ê de ne wekhev e - servera 2.5 dê di pêvajoya gbak de (bêyî beşa torê) bixebite, lê mafên gihîştinê dê li hember bingeha bikarhêner bêne kontrol kirin, ku tê vê wateyê ku ne tenê têketin, lê şîfre jî dê hewce bike:

export ISC_USER=username ISC_PASSWORD=password
/opt/firebird/bin/gbak -b … база25 stdout
|/opt/fb3/bin/gbak -c … stdin база30

Piştî veguhertinek biserketî, divê hûn pêşî Firebird 3.0-a "zêde" rakin, dûv re Firebird 2.5-a "sereke" rakin, û dûv re sazkirinek paqij a Firebird 2.5-ê bikin - û ew ji sazkerê asayî tar.gz çêtirîn e, û ne bi riya depo, ji ber. dibe ku guhertoya di depoyan de li paş bimîne.

Di heman demê de, piştî nûvekirina databasa li ser Linux û ji nû ve sazkirinê, hûn hewce ne ku kontrol bikin ka databasa nû xwediyê bikarhênerê firebird e.

Ger ne wisa be, wê demê pêdivî bi rastkirinê heye.

chown firebird.firebird database

Encam

Digel teserûfa dem û cîhê dîskê, veguheztina streaming xwedan avantajek din a girîng e - guheztina databasê bêyî jêbirina Firebird 2.5-a heyî tê kirin, ku di bûyera guheztina neserkeftî de vegerê pir hêsan dike (bi piranî ji ber kêmbûna cîh an ji nû ve destpêkirina neçaverêkirî di dema koçberiyê de doz).

Teserûfkirina demê ji ber vê yekê ye ku veguheztina "klasîk" "dema paşvekişandinê" û "dema vegerandinê" ye. Vejandin ji du beşan pêk tê: xwendina daneyan ji pelek hilanînê û avakirina pêdekek.

Bi veguheztina weşanê re, dema giştî wekî "dema paşvekişandinê plus ji sedî pênc û deh" û "dema avakirina îndeksê" tê wergirtin.

Encamên taybetî bi strukturên databasê ve girêdayî ye, lê bi navînî, dema vegerandinê bi qasî du caran ji dema hilanînê ye. Ji ber vê yekê, heke em dema paşvekişandinê wekî yekîneyek bigirin, wê hingê "veguheztina klasîk" sê yekeyên demê ye, weşan du yekeyên demê ye. Zêdekirina TempCacheLimit ji bo kêmkirina demê zêdetir dibe alîkar.

Bi gelemperî, di pratîkê de veguheztina streaming dihêle hûn 30-40% ji dema hilanînê û sererastkirina alternatîf hilînin.

Pirs?

Ji kerema xwe hemî pirsan di şîroveyan de binivîsin, an jî wan ji nivîskarê metodolojiyê û hev-nivîskarê vê gotarê re bişînin - Vasily Sidorov, Endezyarê Pergala Pêşerojê iBase, li bs at ibase ru.

Tenê bikarhênerên qeydkirî dikarin beşdarî anketê bibin. Têketinji kerema xwe.

Hûn çi guhertoya Firebird bikar tînin?

  • Firebird 3.x

  • Firebird 2.5

  • Firebird 2.1

  • Firebird 2.0, 1.5 an 1.0

16 bikarhêneran deng dan. 1 bikarhêner dev jê berda.

Source: www.habr.com

Add a comment