የFirebird 2.5 የውሂብ ጎታዎችን በመስመር ላይ ወደ ODS12 ቅርጸት መለወጥ (Firebird 3.0)

እያንዳንዱ የፋየርበርድ ስሪት የራሱ የሆነ የውሂብ ጎታ ዲስክ መዋቅር ቅርጸት አለው - O (n) D (isk) S (structure). እስከ ስሪት 2.5 አካታች ድረስ፣ የፋየርበርድ ሞተር ከቀድሞዎቹ ስሪቶች ከኦዲኤስ ጋር መስራት ይችላል፣ ማለትም፣ ከአሮጌ ስሪቶች የተገኙ የውሂብ ጎታዎች በአዲሱ ስሪት ተከፍተው በተኳኋኝነት ሁነታ ይሰሩ ነበር፣ ነገር ግን ፋየርበርድ 3.0 ሞተር በራሱ የODS ስሪት ከመረጃ ቋቶች ጋር ብቻ ይሰራል። 12.0.

ወደ 3.0 ለመቀየር ከ2.5 ያለው ዳታቤዝ ወደ አዲሱ ቅርጸት በመጠባበቂያ/ወደነበረበት መመለስ አለበት። እርግጥ ነው, የውሂብ ጎታው ቀደም ሲል ለመለወጥ ተዘጋጅቷል ብለን እንገምታለን - ማለትም. ሜታዳታ እና መጠይቆች ከFirebird 3.0 ጋር ተኳሃኝነት ተረጋግጧል።

መደበኛውን አካሄድ ከተከተሉ, ይህ ማለት በ 2.5 ስሪት ላይ ምትኬ መስራት ያስፈልግዎታል, ከዚያ 3.0 ን ይጫኑ እና መልሶ ማግኛ ያድርጉ. በቂ ጊዜ ካሎት ይህ አሰራር ተቀባይነት ያለው ነው ነገር ግን ትላልቅ የውሂብ ጎታዎችን ሲሰደዱ ወይም በተመሳሳይ ጊዜ በርካታ ደርዘን የውሂብ ጎታዎችን ሲሰደዱ, ጊዜው ሲያልቅ, ከ 30-40% ፈጣን የሆነ የዥረት ልወጣን መጠቀም ይችላሉ. ይህንን በትክክል እንዴት ማድረግ እንደሚቻል (በዊንዶውስ እና ሊኑክስ ስር) ፣ በቆራጩ ስር ያንብቡ።

አጠቃላይ ሀሳቡ ነገሮችን ለማፋጠን የቧንቧ መስመር እንጠቀማለን፡-

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

Gbak from 2.5 ባክአፕ በመስመራዊ ፎርማት ያመነጫል እና ወደ stdout ይልካል፣ ይህም ወዲያውኑ ከ 3.0 በ stdin ይወስድና አዲስ ዳታቤዝ ይፈጥራል።

የኔትወርክ ተደራሽነት (በአካባቢው አስተናጋጅም ቢሆን) ሂደቱን በእጅጉ ስለሚቀንስ የአካባቢ (ፋይል) የመዳረሻ ዘዴን በመጠቀም እንዲህ ዓይነቱን የቧንቧ መስመር ማደራጀት አስፈላጊ ነው.

ከዚህ በታች የዊንዶውስ እና ሊኑክስ ዝርዝሮችን እንመለከታለን.

የ Windows

በዊንዶውስ ውስጥ, ቀላሉ መንገድ የፋየርበርድ ሙሉ በሙሉ ራሱን የቻለ ግንባታ ማድረግ ነው. ለዚህ እንወስዳለን Firebird 2.5 የተከተተ ማህደር, fbemded.dllን ወደ fbclient.dll እንደገና ይሰይሙ፣ “መደበኛ” 2.5 መገልገያ gbak.exe እና (አማራጭ) isql.exeን ከማህደሩ ያክሉ።

Firebird 3.0 ይጠቀማል ነጠላ ስብሰባ እና ምንም ማሻሻያ አያስፈልገውም.

በጣም አነስተኛው አማራጭ (በዒላማው ስርዓት ላይ የVS2008/VS2010 አሂድ ቤተ-መጽሐፍት መጫንን የማይፈልግ) የሚከተሉትን ፋይሎች ይይዛል።

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

ልምድ ያለው አስተዳዳሪ 2.5 intl/fbintl.dll እና intl/fbintl.conf ፋይሎችን እንደማያጠቃልል ሊያስተውል ይችላል። ይህ እውነት ነው፣ ጋክ የግንኙነት ቻርሴትን ስለማይጠቀም እና በቻርሴት መካከል ያለውን መረጃ ስለማይቀይር ነገር ግን በFirebird 3.0 "ተቀባይ" በኩል እነዚህ ፋይሎች ኢንዴክሶችን ሲፈጥሩ ያስፈልጋሉ።

በFirebird 3.0 firebird.conf ውስጥ ለመጨመር ይመከራል፡-

MaxUnflushedWrites = -1
MaxUnflushedWriteTime = -1

እንዲሁም ለ 2.5 እና 3.0 የተለያዩ IpcName ዋጋዎችን ማዘጋጀት ጥሩ ነው.

የሌሎች firebird.conf መለኪያዎች እሴቶችን በምንመርጥበት ጊዜ, ከቀላል ግምት እንቀጥላለን-በመረጃ ማስተላለፍ ደረጃ, gbak 2.5 በአንድ ሂደት ውስጥ እየሄደ ነው, እና 3.0 በሌላ ውስጥ ይሰራል, ከዚያም 2.5 ስራውን ያጠናቅቃል እና 3.0 ይጀምራል. የግንባታ ኢንዴክሶች.

በ 3.0 ውስጥ የኢንዴክስ ግንባታ ደረጃን ለማፋጠን የ TempCacheLimit መለኪያውን መጠን ወደ ~ 40% RAM (ይህ ራሱን የቻለ አገልጋይ ከሆነ) ለመጨመር ይመከራል.

ለምሳሌ, አገልጋዩ 16 ጂቢ ራም ካለው, ከዚያ ማቀናበር ይችላሉ

TempCacheLimit=6G

በእርግጥ ይህ ዋጋ ለ 64-ቢት ፋየርበርድ 3 ብቻ ሊዋቀር ይችላል ፣ ምክንያቱም ማንኛውም 32-ቢት ሂደት ከ 2 ጊጋባይት በላይ ማህደረ ትውስታ መመደብ አይችልም።

ለ 2.5, ይህ ግቤት መለወጥ አያስፈልገውም - ለማንኛውም ከ 2 ጊጋባይት በላይ መሆን አይችልም, እና በመጠባበቂያ ጊዜ እንኳን ፍጥነቱን አይጎዳውም.

ቀዶ ጥገናውን ከማካሄድዎ በፊት በመረጃ ቋቱ ራስጌ ውስጥ ያለው የገጽ መሸጎጫ ወደ 0 (ትዕዛዝ) መዘጋጀቱን ማረጋገጥ ያስፈልግዎታል gstat -h databasename፣ የገጽ ማቋረጫ መስመርን ይመልከቱ)።

መሸጎጫው በመረጃ ቋቱ ራስጌ ውስጥ በግልፅ ከተዋቀረ ከFirebird.conf (እና databases.conf በ 3.0) ላይ ያለውን ዋጋ ይሽራል እና ተገቢ ባልሆኑ ትላልቅ እሴቶች ላይ ወደ አላስፈላጊ የማስታወስ ፍጆታ እና ሊያስከትል ይችላል በስዋፕ ውስጥ ማከማቻ.

በመቀጠል ፋይሎቹን ወደ ዒላማው ስርዓት ይቅዱ.

ለውጡ የሚከናወነው የFirebird 2.5 “ስርዓት” አገልግሎትን ካቆመ በኋላ ነው ፣ በትእዛዝ መስመር ውስጥ ለአካባቢ አስተዳዳሪ ከፍ ያሉ መብቶች (ለምሳሌ)

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

ይህ ምሳሌ በትዕምርተ ጥቅስ ውስጥ "ወደ ፊት slash" ይጠቀማል (ትክክለኛ "ዩኒክስ-ስታይል") እና "ኮፍያ" ("^" ቁምፊ) ከመስመር ምግብ ቁምፊ ያመልጣል, ይህም ረጅም ትዕዛዞችን ሲተይቡ ምቹ ነው. የ -st (atus) አማራጭ በFirebird 2.5.8 ውስጥ ታየ እና ስለ ባክ ሂደቱ ጊዜ (ዝርዝሮች በሰነድ ውስጥ) መረጃን እንዲመዘግቡ ያስችልዎታል።

ሊኑክስ

በሊኑክስ ላይ፣ Firebird 3 በ tommath ቤተ-መጽሐፍት ላይ የተመሰረተ ነው። በ CentOS (RHEL) ይህ ቤተ-መጽሐፍት የሚገኘው በ epel ማከማቻ፣ በኡቡንቱ (ዴቢያን) በስርዓት ማከማቻ ውስጥ ነው።

ለ CentOS መጀመሪያ የ epel ማከማቻውን ማገናኘት ያስፈልግዎታል እና ከዚያ ብቻ ያድርጉት

yum install libtommath

ኡቡንቱ ተጨማሪ ማከማቻዎችን ማገናኘት አያስፈልገውም ነገር ግን ኡቡንቱ 16 እና ኡቡንቱ 18 የተለያዩ የፓኬጆችን ስሪቶች - libtommath0 እና libtommath1 ይጭናሉ።

Firebird 3.0 tommath.so.0 ይፈልጋል እና ለኡቡንቱ 18 በተጨማሪም ከ tommath.so.0 ወደ tommath.so.1 ሲምሊንክ መፍጠር ያስፈልጋል። ይህንን ለማድረግ በመጀመሪያ tommath.so.1 ማግኘት ያስፈልግዎታል.

በኡቡንቱ ውስጥ የሚፈልጉት መንገድ - /usr/lib/x86_64-linux-gnu/ነገር ግን በሌሎች ዴቢያን ላይ በተመሰረቱ ስርጭቶች የተለየ ሊሆን ይችላል።

ሁለተኛው ችግር የሚመነጨው እስከ ፋየርበርድ 3.0.1 ድረስ አካታች፣ ሁለት የተለያዩ የአገልጋዩን ስሪቶች ለመጫን ቀላል መንገድ ባለመኖሩ ነው። በተመጣጣኝ የጉልበት ጥንካሬ ምክንያት "ከአስፈላጊው ቅድመ-ቅጥያ ምንጮች የተሰበሰበ" አማራጭን አንመለከትም.

ለFirebird 3.0.2 እና ከዚያ በላይ የተተገበረ በ -enable-binreloc መገንባት እና የተለየ የመጫኛ አማራጭ (-መንገድ መንገድ).

የ tommath ቤተ-መጽሐፍት እና አስፈላጊ ከሆነ, tommath.so.0 ሲምሊንክ ወደ ስርዓቱ ተጨምሯል, የአሁኑን (ይህን ጽሑፍ በሚጽፉበት ጊዜ) ፋየርበርድ 3.0.4 ስርጭትን ለምሳሌ, / መጫን ይችላሉ. መርጦ/fb3፡

./install.sh -path /opt/fb3

ከዚህ በኋላ የFirebird ስርዓት አገልግሎትን ማቆም እና ልወጣን መጀመር ይችላሉ።

ፋየርበርድን በሚያቆሙበት ጊዜ ፋየርቢድ 2.5 ክላሲክ ሁነታ የሚጀምሩት በ xinetd መሆኑን ግምት ውስጥ ማስገባት አለብዎት - ስለሆነም የፋየርበርድን አገልግሎት ለ xinetd ማሰናከል ወይም xinetdን ሙሉ በሙሉ ማቆም አለብዎት።

በFirebird.conf ለ 3.0 በሊኑክስ፣ MaxUnflushed መለኪያዎችን ማቀናበር አያስፈልግዎትም (እነሱ በዊንዶውስ ላይ ብቻ ይሰራሉ) እና የFirebird 2.5 ቅንብሮችን ይቀይሩ።

በሊኑክስ ላይ የFirebird 2.5 አካባቢያዊ (ፋይል) መዳረሻ በዊንዶውስ ስር ካለው የተከተተው ስሪት ጋር እኩል አይደለም - አገልጋይ 2.5 በ gbak ሂደት ውስጥ ይሰራል (ያለ አውታረ መረብ ክፍል) ፣ ግን የመዳረሻ መብቶች በተጠቃሚው መሠረት ላይ ምልክት ይደረግባቸዋል ፣ ይህ ማለት እርስዎ መግቢያ ብቻ ሳይሆን የይለፍ ቃልም ያስፈልገዋል:

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

ከተሳካ ለውጥ በኋላ በመጀመሪያ “ተጨማሪ” Firebird 3.0 ን ከዚያ “ዋና” Firebird 2.5 ን ማስወገድ እና ከዚያ በኋላ ንጹህ የFirebird 2.5 ጭነት ማከናወን አለብዎት - ከሁሉም የተሻለው ከመደበኛ tar.gz ጫኚ እንጂ በማጠራቀሚያዎች አይደለም። ምክንያቱም በማከማቻዎቹ ውስጥ ያለው ስሪት ሊዘገይ ይችላል።

እንዲሁም በሊኑክስ ላይ የውሂብ ጎታውን ወደነበረበት ከመለሱ እና እንደገና ከጫኑ በኋላ አዲሱ የውሂብ ጎታ የፋየር ወፍ ተጠቃሚ መሆኑን ማረጋገጥ ያስፈልግዎታል።

ይህ ካልሆነ ግን መስተካከል አለበት።

chown firebird.firebird database

ውጤቱ

ጊዜን እና የዲስክ ቦታን ከመቆጠብ በተጨማሪ የዥረት መለዋወጥ ሌላ ጠቃሚ ጠቀሜታ አለው - የመረጃ ቋቱ ልወጣ የሚከናወነው ፋየርበርድ 2.5 ን ሳያስወግድ ነው ፣ ይህም ልወጣ ካልተሳካ ወደ ኋላ መመለስ በጣም ቀላል ያደርገዋል (ብዙውን ጊዜ በቦታ እጥረት ወይም በስደት ሂደት ውስጥ ያልተጠበቀ ዳግም ማስነሳት).

ጊዜ ቆጣቢው የ"ክላሲክ" ልወጣ "የመጠባበቂያ ጊዜ" እና "ጊዜን ወደነበረበት መመለስ" በሚለው እውነታ ምክንያት ነው. መልሶ ማግኛ ሁለት ክፍሎችን ያቀፈ ነው-ከመጠባበቂያ ፋይሉ ላይ መረጃን ማንበብ እና ኢንዴክስ መገንባት.

ቀጣይነት ባለው ለውጥ፣ አጠቃላይ ሰዓቱ እንደ “የምትኬ ጊዜ እና ከአምስት እስከ አስር በመቶ” እና “ኢንዴክስ የግንባታ ጊዜ” ሆኖ ተገኝቷል።

የተወሰኑ ውጤቶች በመረጃ ቋቱ መዋቅር ላይ ይወሰናሉ, ነገር ግን በአማካይ የማገገሚያው ጊዜ ከመጠባበቂያ ጊዜ እጥፍ ጋር እኩል ነው. ስለዚህ, የመጠባበቂያ ጊዜን እንደ አንድ ክፍል ከወሰድን, ከዚያም "ክላሲካል ልወጣ" ሶስት የጊዜ አሃዶች ነው, እና ቀጣይነት ያለው መቀየር ሁለት ጊዜ ነው. TempCacheLimit መጨመር ጊዜን ለመቀነስ የበለጠ ይረዳል።

በአጠቃላይ ፣ በመስመር ላይ መለወጥ በተግባር ለአማራጭ ምትኬ እና ወደነበረበት መመለስ ከ30-40% ጊዜ እንዲቆጥቡ ያስችልዎታል።

ጥያቄዎች?

እባክዎን ሁሉንም ጥያቄዎች በአስተያየቶቹ ውስጥ ይፃፉ ወይም ወደ ዘዴው ደራሲ እና የዚህ ጽሑፍ ተባባሪ ደራሲ ይላኩ - ቫሲሊ ሲዶሮቭ ፣ የስርዓት መሐንዲስ በ iBase ፣ በ bs at ibase ru።

በዳሰሳ ጥናቱ ውስጥ የተመዘገቡ ተጠቃሚዎች ብቻ መሳተፍ ይችላሉ። ስግን እንእባክህን።

የትኛውን የFirebird ስሪት ነው እየተጠቀሙ ያሉት?

  • Firebird 3.x

  • የእሳት ወፍ 2.5

  • የእሳት ወፍ 2.1

  • Firebird 2.0, 1.5 ወይም 1.0

16 ተጠቃሚዎች ድምጽ ሰጥተዋል። 1 ተጠቃሚዎች ድምፀ ተአቅቦ አድርገዋል።

ምንጭ: hab.com

አስተያየት ያክሉ