ሳይንሳዊው የፖክ ዘዴ፣ ወይም ዳታቤዝ ውቅረትን እንዴት መምረጥ እንደሚቻል ቤንችማርኮች እና የማመቻቸት ስልተ ቀመር

ሰላም.

ያገኘሁትን - የአስተሳሰብ፣ የሙከራ እና የስህተት ፍሬ ለማካፈል ወሰንኩ።
በአጠቃላይ: ይህ ማግኘት አይደለም እርግጥ ነው - ይህ ሁሉ ለረጅም ጊዜ መታወቅ ነበረበት, ተግባራዊ ስታቲስቲካዊ ውሂብ ሂደት እና ማንኛውም ስርዓቶች ማመቻቸት ላይ ለሚሳተፉ ሰዎች, የግድ በተለይ DBMS አይደለም.
እና፡ አዎ ያውቃሉ፣ በጥናታቸው ላይ አስደሳች መጣጥፎችን ይጽፋሉ፣ ምሳሌ (UPD.: በአስተያየቶቹ ውስጥ በጣም አስደሳች የሆነ ፕሮጀክት ጠቁመዋል- ottertune )
በሌላ በኩል፡-በኢንቴርኔት ስፔሻሊስቶች ዲቢኤ መካከል የዚህን አቀራረብ በስፋት መጠቀስ ወይም ማሰራጨት አላየሁም።

ስለዚህ, እስከ ነጥቡ.

አንድ ተግባር እንዳለን እናስብ አንድ ዓይነት ሥራን ለማገልገል የተወሰነ የአገልግሎት ሥርዓት ለማቋቋም።

ስለዚህ ሥራ ይታወቃል: ምን እንደሆነ, የዚህ ሥራ ጥራት እንዴት እንደሚለካ እና ይህንን ጥራት ለመለካት ምን መስፈርት ነው.

እንዲሁም ብዙ ወይም ባነሰ የሚታወቅ እና የተረዳ እንደሆነ እናስብ፡ በዚህ የአገልግሎት ስርዓት ውስጥ (ወይም ከ) ጋር በትክክል እንዴት እንደሚሰራ።

"ብዙ ወይም ያነሰ" - ይህ ማለት በምርት ውስጥ ለሚሆነው ነገር በቂ በሆነ የሙከራ ጭነት በስርዓቱ ላይ ሊዋሃድ እና ሊተገበር የሚችል የተወሰነ መሳሪያ ፣ መገልገያ ፣ አገልግሎት ማዘጋጀት (ወይም ከየትኛው ቦታ ማግኘት ይቻላል) ። በምርት ውስጥ ለመስራት በቂ በሆነ ሁኔታ ውስጥ .

ደህና, ለዚህ አገልግሎት ስርዓት የማስተካከያ መለኪያዎች ስብስብ እንደሚታወቅ እናስብ, ይህንን ስርዓት ከሥራው ምርታማነት አንጻር ለማዋቀር ሊያገለግል ይችላል.

እና ችግሩ ምንድን ነው - የዚህን አገልግሎት ስርዓት በበቂ ሁኔታ የተሟላ ግንዛቤ የለም, ይህም የዚህን ስርዓት መቼቶች በተሰጠው መድረክ ላይ ለወደፊቱ ጭነት በባለሙያ እንዲያዋቅሩ እና አስፈላጊውን የስርዓቱን ምርታማነት እንዲያገኙ ያስችልዎታል.

እንግዲህ። ይህ ሁልጊዜ ማለት ይቻላል ነው.

እዚህ ምን ማድረግ ይችላሉ?

ደህና, ወደ አእምሮ የሚመጣው የመጀመሪያው ነገር ለዚህ ስርዓት ሰነዶችን መመልከት ነው. ተቀባይነት ያላቸው ክልሎች የማስተካከያ መለኪያዎች እሴቶች ምን እንደሆኑ ይረዱ። እና ለምሳሌ ፣ የተቀናጀ የመውረጃ ዘዴን በመጠቀም በሙከራዎች ውስጥ ለስርዓት መለኪያዎች እሴቶችን ይምረጡ።

እነዚያ። ለስርዓቱ ውቅረት መለኪያዎች በተወሰነ የእሴቶች ስብስብ መልክ ለስርዓቱ አንዳንድ ዓይነት ውቅር ይስጡት።

ይህን በጣም መሳሪያ-መገልገያ፣ የጭነት ጀነሬተር በመጠቀም የሙከራ ጭነት ይተግብሩ።
እና እሴቱን ይመልከቱ - ምላሹን, ወይም የስርዓቱን ጥራት መለኪያ.

ሁለተኛው ሀሳብ ይህ በጣም ረጅም ጊዜ ነው የሚል መደምደሚያ ሊሆን ይችላል.

ደህና ፣ ያ ማለት ብዙ የማስተካከያ መለኪያዎች ካሉ ፣ የተሸፈኑ የእሴቶቻቸው ወሰን ትልቅ ከሆነ ፣ እያንዳንዱ የግለሰብ ጭነት ሙከራ ለማጠናቀቅ ብዙ ጊዜ የሚወስድ ከሆነ ፣ አዎ ፣ ይህ ሁሉ ተቀባይነት የሌለው መጠን ሊወስድ ይችላል ። ጊዜ.

ደህና, እርስዎ ሊረዱት እና ሊያስታውሱት የሚችሉት እዚህ ነው.

በአገልግሎት ስርዓት ቅንጅቶች መለኪያዎች ስብስብ ውስጥ እንደ አንዳንድ እሴቶች ቅደም ተከተል ቬክተር እንዳለ ማወቅ ይችላሉ።

እያንዳንዱ እንደዚህ ያለ ቬክተር ፣ ሌሎች ነገሮች እኩል ናቸው (በዚህ ቬክተር ያልተነካ) ፣ ከመለኪያው ሙሉ በሙሉ የተወሰነ እሴት ጋር ይዛመዳል - በሙከራ ጭነት ውስጥ የስርዓቱን አሠራር ጥራት አመላካች።

IE

የስርዓት ውቅር ቬክተርን እንደ እንጥቀስ ሳይንሳዊው የፖክ ዘዴ፣ ወይም ዳታቤዝ ውቅረትን እንዴት መምረጥ እንደሚቻል ቤንችማርኮች እና የማመቻቸት ስልተ ቀመርየት ሳይንሳዊው የፖክ ዘዴ፣ ወይም ዳታቤዝ ውቅረትን እንዴት መምረጥ እንደሚቻል ቤንችማርኮች እና የማመቻቸት ስልተ ቀመር; የት ሳይንሳዊው የፖክ ዘዴ፣ ወይም ዳታቤዝ ውቅረትን እንዴት መምረጥ እንደሚቻል ቤንችማርኮች እና የማመቻቸት ስልተ ቀመር - የስርዓት ውቅር መለኪያዎች ብዛት ፣ ከእነዚህ መለኪያዎች ውስጥ ስንት ናቸው።

እና ከዚህ ጋር የሚዛመደው የመለኪያው ዋጋ ሳይንሳዊው የፖክ ዘዴ፣ ወይም ዳታቤዝ ውቅረትን እንዴት መምረጥ እንደሚቻል ቤንችማርኮች እና የማመቻቸት ስልተ ቀመር ብለን እንጠቁመው
ሳይንሳዊው የፖክ ዘዴ፣ ወይም ዳታቤዝ ውቅረትን እንዴት መምረጥ እንደሚቻል ቤንችማርኮች እና የማመቻቸት ስልተ ቀመር, ከዚያም አንድ ተግባር እናገኛለን: ሳይንሳዊው የፖክ ዘዴ፣ ወይም ዳታቤዝ ውቅረትን እንዴት መምረጥ እንደሚቻል ቤንችማርኮች እና የማመቻቸት ስልተ ቀመር

እንግዲህ: ሁሉም ነገር ወዲያውኑ ወደ ታች ይመጣል, በእኔ ሁኔታ: የእኔን የተማሪ ቀናት ከ ማለት ይቻላል ረስተዋል, የተግባርን ጽንፍ ለመፈለግ ስልተ.

እሺ፣ ግን እዚህ ድርጅታዊ እና ተግባራዊ ጥያቄ ይነሳል፡ የትኛውን ስልተ ቀመር መጠቀም።

  1. ትርጉም ውስጥ - እርስዎ በእጅ ያነሰ ኮድ እንዲችሉ.
  2. እና እንዲሰራ, ማለትም. ጽንፈኛውን (ካለ) አገኘው፣ ጥሩ፣ ቢያንስ ከተቀናጀ ቁልቁል የበለጠ ፈጣን።

የመጀመሪያው ነጥብ እንደዚህ ያሉ ስልተ ቀመሮች ቀደም ብለው ወደተተገበሩባቸው አንዳንድ አካባቢዎች መመልከት እንዳለብን ይጠቁማል እና በአንዳንድ መልኩ በኮድ ውስጥ ለመጠቀም ዝግጁ ነን።
ደህና, አውቃለሁ python и cran-r

ሁለተኛው ነጥብ ማለት ስለ ስልተ ቀመሮቹ እራሳቸው, ምን እንደሆኑ, ምን መስፈርቶች እንዳሉ እና የስራቸውን ገፅታዎች ማንበብ ያስፈልግዎታል.

እና የሚሰጡት ነገር ጠቃሚ ሊሆን ይችላል የጎንዮሽ ጉዳቶች - ውጤቶች, ወይም በቀጥታ ከአልጎሪዝም እራሱ.

ወይም እነሱ ከአልጎሪዝም ውጤቶች ሊገኙ ይችላሉ.

ብዙ የሚወሰነው በግቤት ሁኔታዎች ላይ ነው።

ለምሳሌ፣ በሆነ ምክንያት፣ ውጤትን በፍጥነት ማግኘት ካለብዎት፣ ጥሩ፣ ወደ ቀስ በቀስ የዘር ስልተ ቀመሮችን መመልከት እና ከመካከላቸው አንዱን መምረጥ ያስፈልግዎታል።

ወይም, ጊዜው በጣም አስፈላጊ ካልሆነ, ለምሳሌ, እንደ ዘረ-መል (algorithm) ያሉ ስቶካስቲክ ማሻሻያ ዘዴዎችን መጠቀም ይችላሉ.

የዚህን አቀራረብ ስራ, የስርዓት አወቃቀሩን በመምረጥ, የጄኔቲክ ስልተ-ቀመርን በመጠቀም, በሚቀጥለው ውስጥ ለመናገር ሀሳብ አቀርባለሁ-የላብራቶሪ ስራ.

ኦሪጅናል፡

  1. እንደ አገልግሎት ሥርዓት ይኑር፡- oracle xe 18c
  2. የግብይት እንቅስቃሴን እና ግቡን እንዲያገለግል ይፍቀዱለት፡ የንኡስ ዳታቤዝ ከፍተኛውን በተቻለ መጠን በግብይቶች/ሰከንድ ለማግኘት።
  3. ግብይቶች ከመረጃ ጋር በመስራት ባህሪ እና በስራው ሁኔታ በጣም የተለያዩ ሊሆኑ ይችላሉ.
    እነዚህ ከፍተኛ መጠን ያለው የሰንጠረዥ መረጃ የማያስኬዱ ግብይቶች መሆናቸውን እንስማማ።
    ከመድገም የበለጠ የሚቀለበስ ውሂብ አያመነጩም እና ብዙ መቶኛ ረድፎችን እና ትላልቅ ጠረጴዛዎችን አያስኬዱም ማለት ነው።

እነዚህ ብዙ ወይም ባነሰ ትልቅ ሠንጠረዥ ውስጥ አንድ ረድፍ የሚቀይሩ ግብይቶች ናቸው፣ በዚህ ጠረጴዛ ላይ አነስተኛ ቁጥር ያላቸው ኢንዴክሶች።

በዚህ ሁኔታ፡ ግብይቶችን ለማስኬድ የንዑስ ዳታ ቤዝ ምርታማነት፣ ከተያዘ ቦታ ጋር፣ በሪዶክ ዳታቤዝ የማቀናበር ጥራት ይወሰናል።

የክህደት ቃል - ስለ subdb ቅንብሮች በተለይ ከተነጋገርን.

ምክንያቱም በአጠቃላይ ሁኔታ፣ ለምሳሌ በSQL ክፍለ ጊዜዎች መካከል የግብይት መቆለፊያዎች ሊኖሩ ስለሚችሉ፣ የተጠቃሚው ስራ በሰንጠረዥ ዳታ እና/ወይም በሰንጠረዡ ሞዴል ምክንያት ነው።

የትኛው እርግጥ ነው, በ TPS ሜትሪክ ላይ ተስፋ አስቆራጭ ተጽእኖ ይኖረዋል እና ይህ ከንዑስ ዳታቤዝ አንጻር ሲታይ ውጫዊ ሁኔታ ይሆናል: ጥሩ, ይህ የሰንጠረዥ ሞዴል የተነደፈበት እና በውስጡም ከውሂብ ጋር ያለው ሥራ እገዳዎች ይከሰታሉ.

ስለዚህ, ለሙከራው ንፅህና, ይህንን ምክንያት እናስወግዳለን, እና ከዚህ በታች በትክክል እንዴት እንደሆነ እገልጻለሁ.

  1. ለነገሩ 100% የ SQL ትዕዛዞች ወደ ዳታቤዝ የገቡት የዲኤምኤል ትዕዛዞች እንደሆኑ እናስብ።
    የተጠቃሚው ባህሪ ከንዑስ ዳታቤዝ ጋር በሙከራዎች ውስጥ አንድ አይነት ይሁን።
    ይኸውም: የ skl ክፍለ ጊዜዎች ብዛት, የሠንጠረዥ ውሂብ, የ skl ክፍለ ጊዜዎች ከእነሱ ጋር እንዴት እንደሚሠሩ.
  2. Subd ውስጥ ይሰራል FORCE LOGGING, ARCHIVELOG mods. የፍላሽ መልሶ ዳታቤዝ ሁነታ ጠፍቷል፣ በንዑስ ደረጃ።
  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-መገልገያ
በጣም ጥሩ ባህሪ አለው ፣ ደራሲውን እጠቅሳለሁ-

በSLOB እምብርት ላይ “SLOB ዘዴ” ነው። የSLOB ዘዴ መድረኮችን ለመፈተሽ ያለመ ነው።
ያለ ማመልከቻ ክርክር. አንድ ሰው ከፍተኛውን የሃርድዌር አፈጻጸም መንዳት አይችልም።
የመተግበሪያ ኮድ በመጠቀም፣ ለምሳሌ፣ በመተግበሪያ መቆለፍ ወይም ጭምር
Oracle Database ብሎኮችን ማጋራት። ልክ ነው-ውሂብ ሲያጋሩ ከራስ በላይ ነው።
በዳታ ብሎኮች! ነገር ግን SLOB-በነባሪው ማሰማራቱ -ከዚህ ውዝግብ ነፃ ነው።

ይህ መግለጫ፡ ይዛመዳል፣ ነው።
የ cl ክፍለ-ጊዜዎች ትይዩነት ደረጃን ለመቆጣጠር ምቹ ነው, ይህ ቁልፉ ነው -t መገልገያውን ያስጀምሩ runit.sh ከ SLOB
የዲኤምኤል ትዕዛዞች መቶኛ ቁጥጥር ይደረግበታል፣ ወደ ንዑስ ክፍል በሚላኩት የጽሑፍ መልእክቶች ብዛት፣ እያንዳንዱ የጽሑፍ ክፍለ ጊዜ፣ መለኪያ UPDATE_PCT
በተናጥል እና በጣም ምቹ; SLOB እራሱ, ከመጫኑ በፊት እና በኋላ - ስታቲስቲክስ, ወይም አውር-ቅጽበተ-ፎቶዎችን (ለመዘጋጀት የተዘጋጀውን) ያዘጋጃል.

ይሁን እንጂ እንደዚያ ሆኖ ተገኝቷል SLOB ከ30 ሰከንድ ባነሰ ጊዜ የ SQL ክፍለ ጊዜዎችን አይደግፍም።
ስለዚህ፣ መጀመሪያ የራሴን፣ የሰራተኛ-ገበሬውን የጫኚውን እትም ኮድ አድርጌያለው፣ እና ከዚያ ስራ ላይ እንደዋለ ቆየ።

ጫኚው ምን እንደሚሰራ እና እንዴት እንደሚሰራ ግልፅ ለማድረግ ላብራራ።
በመሠረቱ ጫኚው ይህን ይመስላል።

የሰራተኛ ኮድ

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"

እነዚያ። ለእያንዳንዱ ሰራተኛ (በተግባር: በዲቢ ውስጥ የተለየ የ SQL ክፍለ ጊዜ) የተለየ ጠረጴዛ ተፈጠረ, ሰራተኛው የሚሰራበት.

ይህ በሠራተኛ ክፍለ ጊዜ መካከል የግብይት መቆለፊያዎች አለመኖራቸውን ያረጋግጣል.
እያንዳንዱ ሰራተኛ: ተመሳሳይ ነገር ያደርጋል, በራሱ ጠረጴዛ, ጠረጴዛዎች ሁሉም ተመሳሳይ ናቸው.
ሁሉም ሰራተኞች ለተመሳሳይ ጊዜ ስራ ይሰራሉ.
በተጨማሪም ፣ ለረጅም ጊዜ በቂ ጊዜ ስለዚህ ፣ ለምሳሌ ፣ የምዝግብ ማስታወሻ መቀየሪያ በእርግጠኝነት ይከሰታል ፣ እና ከአንድ ጊዜ በላይ።
ደህና, በዚህ መሠረት, ተያያዥ ወጪዎች እና ውጤቶች ተነሱ.
በእኔ ሁኔታ የሰራተኞችን የስራ ጊዜ በ 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 subbroutine የአካል ብቃት ተግባሩን ከፍ የሚያደርግ ፍለጋ ያካሂዳል።

ደህና ፣ ከዚያ ፣ በዚህ ሁኔታ ፣ የአካል ብቃት ተግባሩ ፣ ቬክተሩን ለተወሰኑ የንዑስ ክፍል መመዘኛዎች እንደ የእሴቶች ስብስብ በመረዳት ፣ ከ subd አንድ ልኬት መቀበል አስፈላጊ ነው ።

ማለትም፡ ስንት፣ በተሰጠው ንዑስ ማዋቀር እና በንዑስ ዲው ላይ የተሰጠው ጭነት፡ ንኡስ ዲው በሰከንድ ግብይቶችን ያስኬዳል።

ማለትም ፣ በሚገለጥበት ጊዜ ፣ ​​የሚከተሉት ባለብዙ እርከኖች በአካል ብቃት እንቅስቃሴ ውስጥ መከናወን አለባቸው።

  1. የቁጥሮች ግቤት ቬክተርን ማካሄድ - ለንዑስ ውሂብ መለኪያዎች ወደ እሴቶች መለወጥ።
  2. የተወሰነ መጠን ያላቸው የድግግሞሽ ቡድኖችን ለመፍጠር ሙከራ። ከዚህም በላይ ሙከራው ያልተሳካ ሊሆን ይችላል.
    ቀደም ሲል በንኡስ ክፍል ውስጥ የነበሩ የመጽሔት ቡድኖች, በተወሰነ መጠን እና በተወሰነ መጠን, ለሙከራው ንፅህና - d.b. ተሰርዟል።
  3. የቀደመው ነጥብ የተሳካ ከሆነ የውቅረት መለኪያዎችን ወደ ዳታቤዝ መግለጽ (እንደገና ውድቀት ሊኖር ይችላል)
  4. የቀደመው እርምጃ የተሳካ ከሆነ፡ ንዑስ ክፍሉን ማቆም፣ አዲስ የተገለጹት የመለኪያ እሴቶቹ እንዲተገበሩ ንኡሱን መጀመር። (እንደገና: ችግር ሊኖር ይችላል)
  5. የቀደመው ደረጃ ስኬታማ ከሆነ: የጭነት ሙከራን ያከናውኑ. መለኪያዎችን ከ subd ያግኙ።
  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)
}

ያ። ሁሉም ሥራ: በአካል ብቃት እንቅስቃሴ ውስጥ ይከናወናል.

ጋ-ሱቡሩቲን ቬክተሮችን ወይም በትክክል ክሮሞሶምዎችን ያስኬዳል።
በዚህ ውስጥ, ለእኛ በጣም አስፈላጊ የሆነው የአካል ብቃት እንቅስቃሴ ትልቅ እሴቶችን የሚያመርት ጂኖች ያላቸው ክሮሞሶምች መምረጥ ነው.

ይህ በመሠረቱ በኤን-ልኬት መፈለጊያ ቦታ ውስጥ ቬክተርን በመጠቀም እጅግ በጣም ጥሩውን የክሮሞሶም ስብስብ የመፈለግ ሂደት ነው።

በጣም ግልፅ ፣ ዝርዝር ማብራሪያ ፡፡, ከ R-code ምሳሌዎች ጋር, የጄኔቲክ አልጎሪዝም ስራ.

ሁለት ቴክኒካል ነጥቦችን ለየብቻ ልጥቀስ።

ከተግባሩ ረዳት ጥሪዎች evaluate, ለምሳሌ, ማቆም-ጀምር, የንዑስ ፓራሜትር ዋጋን በማዘጋጀት, በ ላይ ተመስርተው ይከናወናሉ cran-r ተግባራት system2

በእሱ እርዳታ አንዳንድ የባሽ ስክሪፕት ወይም ትዕዛዝ ተጠርቷል.

ለምሳሌ:

አዘጋጅ_ዲቢ_መለኪያ

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)

ይህ በጣም አስፈላጊ ነው, ምክንያቱም ከዚህ የውሂብ አደራደር, የትኛው የመስተካከል ቬክተር አካላት በሜትሪክ እሴቱ ላይ የበለጠ ወይም ያነሰ ተጽእኖ እንዳለው ተጨማሪ መረጃ ማግኘት ይቻላል.

ማለትም፡ የባህሪ-አስመጪነት ትንተና ማካሄድ የሚቻል ይሆናል።

ታዲያ ምን ሊሆን ይችላል?

በግራፍ መልክ፣ ፈተናዎቹን ወደ ላይ በሚወጣ ሜትሪክ ቅደም ተከተል ካዘዙ፣ ስዕሉ እንደሚከተለው ነው።

ሳይንሳዊው የፖክ ዘዴ፣ ወይም ዳታቤዝ ውቅረትን እንዴት መምረጥ እንደሚቻል ቤንችማርኮች እና የማመቻቸት ስልተ ቀመር

ከመለኪያው ጽንፈኛ እሴቶች ጋር የሚዛመድ አንዳንድ ውሂብ፡-
ሳይንሳዊው የፖክ ዘዴ፣ ወይም ዳታቤዝ ውቅረትን እንዴት መምረጥ እንደሚቻል ቤንችማርኮች እና የማመቻቸት ስልተ ቀመር
እዚህ ፣ ከውጤቶቹ ጋር ባለው ቅጽበታዊ ገጽ እይታ ውስጥ ፣ እኔ እገልጻለሁ-የማስተካከያ ቬክተር እሴቶች የተሰጡት የአካል ብቃት እንቅስቃሴ ኮድን አንፃር ነው እንጂ ከተቀረፀው የመለኪያ እሴቶች ብዛት ዝርዝር አንፃር አይደለም። በጽሑፉ ላይ ከላይ.

እንግዲህ። ብዙ ወይም ትንሽ ነው, ~ 8 tps: የተለየ ጥያቄ.
በላብራቶሪ ሥራ ማዕቀፍ ውስጥ, ይህ አኃዝ አስፈላጊ አይደለም, አስፈላጊው ተለዋዋጭነት ነው, ይህ እሴት እንዴት እንደሚለወጥ.

እዚህ ያለው ተለዋዋጭነት ጥሩ ነው።
ቢያንስ አንድ ምክንያት በክሮሞሶም ቬክተሮች ውስጥ በመደርደር የመለኪያውን፣ የጋ-አልጎሪዝምን ዋጋ በእጅጉ እንደሚጎዳ ግልጽ ነው።
በመጠምዘዝ እሴቶቹ ትክክለኛ ኃይለኛ ተለዋዋጭነት ስንገመግም፣ ምንም እንኳን በጣም ትንሽ ቢሆንም ተጽዕኖ ያለው ቢያንስ አንድ ተጨማሪ ነገር አለ።

ይህ የሚያስፈልግዎት ቦታ ነው attribute-importance ትንታኔ ምን አይነት ባህሪያትን ለመረዳት (በዚህ ጉዳይ ላይ, የመስተካከል ቬክተር አካላት) እና በሜትሪክ እሴቱ ላይ ምን ያህል ተጽዕኖ እንደሚያሳድሩ.
እና ከዚህ መረጃ: ጉልህ በሆኑ ባህሪያት ለውጦች ምን ምክንያቶች እንደተጎዱ ይረዱ።

ሩጫ attribute-importance በተለያዩ መንገዶች ይቻላል.

ለእነዚህ ዓላማዎች, አልጎሪዝምን እወዳለሁ randomForest ተመሳሳይ ስም ያለው R ጥቅል (ሰነድ)
randomForestእኔ በአጠቃላይ ሥራውን እና በተለይም የባህሪዎችን አስፈላጊነት ለመገምገም አቀራረቡን እንደተረዳሁት ፣ በባህሪያቱ ላይ የምላሽ ተለዋዋጭ ጥገኝነት የተወሰነ ሞዴል ይገነባል።

በእኛ ሁኔታ፣ የምላሽ ተለዋዋጭ በጭነት ሙከራዎች ውስጥ ከመረጃ ቋቱ የተገኘ ሜትሪክ ነው። tps;
እና ባህሪያት የማስተካከል ቬክተር አካላት ናቸው.

ስለዚህ እዚህ randomForest የእያንዳንዱን ሞዴል ባህሪ አስፈላጊነት በሁለት ቁጥሮች ይገመግማል፡- %IncMSE - በአምሳያው ውስጥ የዚህ አይነታ መኖር/አለመኖር የዚህን ሞዴል MSE ጥራት እንዴት እንደሚለውጥ (አማካኝ ካሬድ ስህተት)።

እና IncNodePurity በዚህ ባህሪ እሴቶች ላይ በመመስረት ፣ ምልከታ ያለው የውሂብ ስብስብ እንዴት በጥሩ ሁኔታ የሚያንፀባርቅ ቁጥር ነው ፣ ስለሆነም በአንድ ክፍል ውስጥ አንድ የመለኪያ እሴት ሲብራራ እና በሌላኛው ውስጥ የመለኪያው ሌላ እሴት።
ደህና፣ ያ ማለት፡ ይህ የመለያ ባህሪው እስከምን ድረስ ነው (በጣም ግልፅ የሆነውን የሩሲያ ቋንቋ በ RandomForest ላይ አየሁ። እዚህ).

የሰራተኛ-ገበሬ አር-ኮድ የውሂብ ስብስብን ከጭነት ሙከራዎች ውጤቶች ጋር ለማስኬድ፡-

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

በቀጥታ በእጅዎ የአልጎሪዝም hyperparameters መምረጥ እና በአምሳያው ጥራት ላይ በማተኮር በማረጋገጫ የውሂብ ስብስብ ላይ ያሉትን ትንበያዎች በትክክል የሚያሟላ ሞዴል ይምረጡ።
ለዚህ ሥራ አንድ ዓይነት ተግባር መፃፍ ይችላሉ (በነገራችን ላይ ፣ እንደገና ፣ አንዳንድ የማመቻቸት ስልተ ቀመር በመጠቀም)።

የ R ጥቅል መጠቀም ይችላሉ caret, አይደለም ነጥቡ አስፈላጊ ነው.

በውጤቱም, በዚህ ሁኔታ, የባህሪያቱን አስፈላጊነት ደረጃ ለመገምገም የሚከተለው ውጤት ይገኛል.

ሳይንሳዊው የፖክ ዘዴ፣ ወይም ዳታቤዝ ውቅረትን እንዴት መምረጥ እንደሚቻል ቤንችማርኮች እና የማመቻቸት ስልተ ቀመር

እንግዲህ። ስለዚህ፣ ዓለም አቀፍ ነጸብራቅን መጀመር እንችላለን፡-

  1. በነዚህ የሙከራ ሁኔታዎች ውስጥ በጣም አስፈላጊ የሆነው መለኪያው ነበር commit_wait
    በቴክኒካዊ መልኩ ከንኡስ ዲቢ ሎግ ቋት ወደ አሁኑ የምዝግብ ማስታወሻ ቡድን የድጋሚ ዳታ የመፃፍ የ io ኦፕሬሽን አፈጻጸም ሁኔታን ይገልፃል፡ የተመሳሰለ ወይም ያልተመሳሰል።
    ዋጋ nowait ይህም ማለት ይቻላል አቀባዊ፣ ብዙ የtps ሜትሪክ እሴት መጨመርን ያስከትላል፡ ይህ ያልተመሳሰለው io ሁነታ በሪዶ ቡድኖች ውስጥ ማካተት ነው።
    የተለየ ጥያቄ ይህን በምግብ ዳታቤዝ ውስጥ ማድረግ አለቦት ወይስ የለበትም የሚለው ነው። እዚህ ላይ ራሴን በመግለጽ ብቻ እገድባለሁ፡ ይህ ወሳኝ ነገር ነው።
  2. የንኡስ ክፍሉ የሎግ ቋት መጠን: ጉልህ ምክንያት ሆኖ መገኘቱ ምክንያታዊ ነው።
    የምዝግብ ማስታወሻ ቋት ባነሰ መጠን፣ የማቋት አቅሙ እየቀነሰ ይሄዳል፣ ብዙ ጊዜ ሞልቶ ይፈስሳል እና/ወይም በውስጡ ለአዲስ የዳግም ዳታ ክፍል ነፃ ቦታ መመደብ አለመቻል።
    ይህ ማለት፡ በመመዝገቢያ ቋት ውስጥ ቦታ ከመመደብ እና/ወይም ከሱ የዳግም ዳታ ወደ ተደጋጋሚ ቡድኖች ከመጣል ጋር የተጎዳኙ መዘግየቶች።
    እነዚህ መዘግየቶች፣ በመረጃ ቋቱ ግብይቶች ሂደት ላይ ተጽዕኖ ሊያሳድሩ ይገባቸዋል።
  3. መለኪያ db_block_checksumደህና ፣ እንዲሁም ፣ በአጠቃላይ ግልፅ ነው - የግብይት ሂደት በንዑስ ዳታ ቤዝ ቋት መሸጎጫ ውስጥ የዳርቲ ብሎኮች መፈጠርን ያስከትላል።
    የዳታብሎክ ቼኮችን መፈተሽ ሲነቃ የመረጃ ቋቱ ማስኬድ አለበት - እነዚህን ቼኮች ከዳታብሎክ አካል አስላ፣ በዳታብሎክ ራስጌ ላይ በተፃፈው ነገር ያረጋግጡ፡ ግጥሚያዎች/አይዛመድም።
    እንዲህ ዓይነቱ ሥራ, እንደገና, የውሂብ ሂደትን ከማዘግየት በስተቀር, እና በዚህ መሰረት, ግቤት እና ይህን ግቤት የሚያዘጋጀው ዘዴ ጠቃሚ ሆኖ ተገኝቷል.
    ለዚያም ነው ሻጩ ለዚህ ግቤት በሰነድ ውስጥ ለእሱ የተለያዩ እሴቶችን (መለኪያው) ያቀረበው እና አዎ ተጽዕኖ ይኖረዋል ፣ ግን ደህና ፣ እስከ “ጠፍቷል” እና የተለያዩ እሴቶችን መምረጥ ይችላሉ ። የተለያዩ ተጽእኖዎች.

ደህና ፣ ዓለም አቀፍ መደምደሚያ።

አቀራረቡ, በአጠቃላይ, በጣም ውጤታማ ይሆናል.

እሱ ራሱ በተወሰነ የአገልግሎት ስርዓት ጭነት ሙከራ የመጀመሪያ ደረጃዎች ላይ ለጭነቱ (ስርዓት) ትክክለኛውን ውቅር ለመምረጥ ፣ ለጭነቱ ስርዓቱን ለማቀናበር በዝርዝር ውስጥ ላለመግባት እራሱን ይፈቅዳል።

ግን ሙሉ በሙሉ አያስወግደውም - ቢያንስ በግንዛቤ ደረጃ: ስርዓቱ ስለ “ማስተካከያ ቁልፎች” እና የእነዚህን እብጠቶች የተፈቀደላቸው የማዞሪያ ክልሎች መታወቅ አለበት።

አቀራረቡ ከዚያም በአንፃራዊነት በፍጥነት ጥሩውን የስርዓት ውቅር ሊያገኝ ይችላል።
እና በፈተና ውጤቶች ላይ በመመርኮዝ በስርዓት አፈፃፀም መለኪያዎች እና በስርዓት ቅንጅቶች መለኪያዎች መካከል ስላለው ግንኙነት ተፈጥሮ መረጃ ማግኘት ይቻላል ።

የትኛው, እርግጥ ነው, ይህ ሥርዓት, አሠራሩ, ቢያንስ በተሰጠው ሸክም ውስጥ ይህን በጣም ጥልቅ ግንዛቤ ብቅ አስተዋጽኦ ይገባል.

በተግባር ይህ የስርዓቱን እንዲህ ያሉ ሙከራዎችን ለማዘጋጀት ወጪዎች የተበጀውን ስርዓት የመረዳት ወጪዎች መለዋወጥ ነው.

እኔ ለየብቻ ልብ ማለት እፈልጋለሁ-በዚህ አቀራረብ ፣ የስርዓት ሙከራው በንግድ ሥራ ላይ ለሚኖረው የአሠራር ሁኔታ በቂነት ደረጃ በጣም አስፈላጊ ነው።

ስለ ትኩረትዎ እና ጊዜዎ እናመሰግናለን።

ምንጭ: hab.com

አስተያየት ያክሉ