Mokhoa oa poke oa mahlale, kapa mokhoa oa ho khetha tlhophiso ea database o sebelisa li-benchmarks le algorithm ea optimization

Hello

Ke nkile qeto ea ho arolelana seo ke se fumaneng - tholoana ea monahano, teko le phoso.
Ka kakaretso: sena ha se ntho e fumanoeng, ha e le hantle - sena sohle se ne se lokela ho tsejoa ka nako e telele, ho ba amehang ts'ebetsong ea ts'ebetso ea lipalo-palo le ho ntlafatsa mekhoa leha e le efe, eseng haholo-holo DBMS.
Mme: ee, baa tseba, ba ngola lingoliloeng tse khahlisang mabapi le lipatlisiso tsa bona, mohlala (UPD.: Litlhalosong ba bontšitse morero o khahlisang haholo: ottertune )
Ka lehlakoreng le leng: ka lehlakoreng le leng ha ke bone ho buuoa kapa ho phatlalatsoa ha mokhoa ona Inthaneteng har'a litsebi tsa IT, DBA.

Kahoo, ho fihlela ntlha.

Ha re nke hore re na le mosebetsi: ho theha tsamaiso e itseng ea litšebeletso ho sebeletsa mofuta o itseng oa mosebetsi.

Hoa tsebahala ka mosebetsi ona: hore na ke eng, hore na boleng ba mosebetsi ona bo lekantsoe joang, le hore na ke mokhoa ofe oa ho lekanya boleng bona.

Ha re nke hape hore e tsebahala haholo ebile e sa utloisisoe: hantle hore na mosebetsi o etsoa joang (kapa ka) tsamaiso ena ea litšebeletso.

"Ho feta kapa ka tlase" - sena se bolela hore hoa khoneha ho lokisetsa (kapa ho e fumana kae-kae) sesebelisoa se itseng, ts'ebeliso, ts'ebeletso e ka kopanngoang le ho sebelisoa tsamaisong e nang le mojaro oa liteko o lekaneng ho lekana le se tla hlahisoa, maemong a lekaneng ho sebetsa tlhahisong.

Hantle, a re nke hore sete sa litekanyetso tsa tokiso bakeng sa tsamaiso ena ea tšebeletso e tsejoa, e ka sebelisoang ho lokisa tsamaiso ena ho latela tlhahiso ea mosebetsi oa eona.

Mme bothata ke eng - ha ho na kutloisiso e felletseng ea sistimi ena ea ts'ebeletso, e u lumellang hore u lokise litlhophiso tsa sistimi ena bakeng sa mojaro o tlang sethaleng se fanoeng mme o fumane tlhahiso e hlokahalang ea sistimi.

Hantle. Ho batla ho le joalo kamehla.

U ka etsa'ng moo?

Hantle, ntho ea pele e tlang kelellong ke ho sheba litokomane tsa tsamaiso ena. Utloisisa hore na mekhahlelo e amohelehang ke efe bakeng sa boleng ba liparamente tsa tokiso. 'Me, ho etsa mohlala, u sebelisa mokhoa o hokahaneng oa ho theoha, khetha litekanyetso tsa litekanyetso tsa sistimi litekong.

Tseo. fa sistimi mofuta o itseng oa tlhophiso, ka mokhoa oa sete e itseng ea boleng bakeng sa liparamente tsa eona tsa tlhophiso.

Kenya mojaro oa liteko ho eona, u sebelisa sesebelisoa sena, sesebelisoa sa jenereithara.
Mme sheba boleng - karabelo, kapa metric ea boleng ba sistimi.

Mohopolo oa bobeli e ka ba qeto ea hore ena ke nako e telele haholo.

Ho joalo, ke hore: haeba ho na le li-parameter tse ngata, haeba mekhahlelo ea litekanyetso tsa bona tse tsamaisoang e le khōlō, haeba teko e 'ngoe le e' ngoe ea mojaro e nka nako e ngata ho qeta, joale: e, sena sohle se ka nka ka mokhoa o sa amoheleheng. nako e telele.

Hantle, mona ke seo u ka se utloisisang le ho se hopola.

U ka fumana hore ka har'a sete ea boleng ba li-parameter tsa litlhophiso tsa lits'ebeletso ho na le vector, e le tatellano ea litekanyetso tse ling.

E 'ngoe le e' ngoe ea li-vector tse joalo, lintho tse ling li lekana (ka hore ha e amehe ke vector ena), e lumellana le boleng bo hlakileng ba metric - pontšo ea boleng ba ts'ebetso ea tsamaiso tlas'a mojaro oa teko.

Ie

Ha re bolele vector ea tlhophiso ea sistimi joalo ka Mokhoa oa poke oa mahlale, kapa mokhoa oa ho khetha tlhophiso ea database o sebelisa li-benchmarks le algorithm ea optimizationkae Mokhoa oa poke oa mahlale, kapa mokhoa oa ho khetha tlhophiso ea database o sebelisa li-benchmarks le algorithm ea optimization; Hokae Mokhoa oa poke oa mahlale, kapa mokhoa oa ho khetha tlhophiso ea database o sebelisa li-benchmarks le algorithm ea optimization - palo ea li-parameter tsa tlhophiso ea sistimi, hore na ho na le li-parameter tse kae.

Le boleng ba metric e tsamaellanang le sena Mokhoa oa poke oa mahlale, kapa mokhoa oa ho khetha tlhophiso ea database o sebelisa li-benchmarks le algorithm ea optimization ha re e bolele joalo ka
Mokhoa oa poke oa mahlale, kapa mokhoa oa ho khetha tlhophiso ea database o sebelisa li-benchmarks le algorithm ea optimization, ebe re fumana tšebetso: Mokhoa oa poke oa mahlale, kapa mokhoa oa ho khetha tlhophiso ea database o sebelisa li-benchmarks le algorithm ea optimization

Joale, ntho e 'ngoe le e' ngoe e theoha hang-hang, molemong oa ka: hoo e ka bang ke lebetsoe ho tloha matsatsing a seithuti sa ka, li-algorithms tsa ho batla mosebetsi o feteletseng.

Ho lokile, empa mona ho hlaha potso ea mokhatlo le e sebelisitsoeng: ke algorithm efe e lokelang ho sebelisoa.

  1. Ka kutloisiso - e le hore o ka khouta hanyane ka letsoho.
  2. Le hore e sebetse, i.e. fumana extremum (haeba ho na le e 'ngoe), hantle, bonyane ka potlako ho feta coordinate theoho.

Ntlha ea pele e fana ka maikutlo a hore re lokela ho sheba libakeng tse ling tseo ho tsona li-algorithms tse joalo li seng li kentsoe ts'ebetsong, 'me ka mokhoa o itseng, li loketse ho sebelisoa ka khoutu.
Be, kea tseba python и cran-r

Ntlha ea bobeli e bolela hore o hloka ho bala ka li-algorithms ka botsona, hore na ke eng, litlhoko tsa bona ke life, le likarolo tsa mosebetsi oa bona.

'Me seo ba fanang ka sona e ka ba litla-morao tse molemo - liphetho, kapa ka kotloloho ho tsoa ho algorithm ka boeona.

Kapa li ka fumanoa liphethong tsa algorithm.

Ho hongata ho itšetlehile ka maemo a ho kenya.

Mohlala, haeba, ka lebaka le itseng, o hloka ho fumana sephetho kapele, hantle, o hloka ho sheba li-algorithms tsa gradient le ho khetha e 'ngoe ea tsona.

Kapa, ​​​​haeba nako e se ea bohlokoa haholo, ka mohlala, u ka sebelisa mekhoa ea stochastic optimization, joalo ka algorithm ea liphatsa tsa lefutso.

Ke etsa tlhahiso ea ho nahana ka mosebetsi oa mokhoa ona, ho khetha tsamaiso ea tsamaiso, ho sebelisa algorithm ea liphatsa tsa lefutso, ka tsela e latelang, ho thoe: mosebetsi oa laboratori.

Ea mantlha:

  1. E le hore ho be le, joalo ka tsamaiso ea litšebeletso: oracle xe 18c
  2. E lumelle hore e sebeletse ts'ebetso le sepheo: ho fumana phepelo e phahameng ka ho fetesisa ea sebaka sa polokelo ea litaba, lits'ebetsong/metsotsoana.
  3. Litšebelisano li ka fapana haholo ka mokhoa oa ho sebetsa ka data le maemo a mosebetsi.
    Ha re lumellane hore tsena ke litšebelisano tse sa sebetseng palo e kholo ea data ea tabular.
    Ka kutloisiso ea hore ha ba hlahise data ea ho etsolla ho feta ho e etsa hape ebile ha ba sebetse liperesente tse kholo tsa mela le litafole tse kholo.

Tsena ke litšebelisano tse fetolang mola o le mong tafoleng e kholo kapa e nyane, ka palo e nyane ea li-index tafoleng ena.

Boemong bona: tlhahiso ea subdatabase bakeng sa ts'ebetso ea ts'ebetso e tla, ka ho behelloa, e khethoe ke boleng ba ts'ebetso ke database ea redox.

Boitlhotlhollo - haeba re bua ka kotloloho ka litlhophiso tsa subdb.

Hobane, ka kakaretso, ho ka 'na ha e-ba le, ka mohlala, liloko tsa transaction pakeng tsa liboka tsa SQL, ka lebaka la moralo oa mosebetsi oa mosebedisi o nang le data ea tabular le / kapa mohlala oa tabular.

Eo, ha e le hantle, e tla ba le phello e nyahamisang ho metric ea TPS 'me sena e tla ba ntho e sa tloaelehang, e amanang le subdatabase: hantle, ena ke tsela eo mokhoa oa tabular o entsoeng ka oona le mosebetsi o nang le data ho oona hore li-blockages li etsahala.

Ka hona, bakeng sa bohloeki ba teko, re tla kenyelletsa ntlha ena, 'me ka tlase ke tla hlakisa hantle hore na joang.

  1. Ha re nke, ka bonnete, hore 100% ea litaelo tsa SQL tse rometsoeng ho database ke litaelo tsa DML.
    Etsa hore litšobotsi tsa mosebetsi oa mosebedisi le subdatabase li tšoane litekong.
    E leng: palo ea linako tsa skl, data ea tabular, hore na linako tsa skl li sebetsa joang le tsona.
  2. Subd e sebetsa ho FORCE LOGGING, ARCHIVELOG mekhoa. Flashback-database mode e tingoe, boemong ba subd.
  3. Redo logs: e fumaneha ka har'a sistimi e fapaneng ea faele, "disk" e arohaneng;
    Karolo e setseng ea "database": ho e 'ngoe, sistimi e arohaneng ea faele, ho "disk" e arohaneng:

Lintlha tse ling mabapi le sesebelisoa sa 'mele. likarolo tsa database tsa laboratori

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

Qalong, tlas'a maemo ana a boima, ke ne ke batla ho sebelisa transaction subd Sesebelisoa sa SLOB
E na le tšobotsi e ntle hakana, ke tla qotsa mongoli:

Bohareng ba SLOB ke "mokhoa oa SLOB." Mokhoa oa SLOB o ikemiselitse ho leka sethala
ntle le khang ea kopo. Motho ha a khone ho khanna ts'ebetso e phahameng ea hardware
ho sebelisa khoutu ea ts'ebeliso, mohlala, e tlangoa ke ho notlela ts'ebeliso kapa esita le
ho arolelana li-block tsa Oracle Database. Ke 'nete - ho na le lintho tse ngata ha u arolelana data
ka li-blocks tsa data! Empa SLOB - ts'ebetsong ea eona ea kamehla - ha e na likhohlano tse joalo.

Phatlalatso ena: e lumellana, ho joalo.
Ho bonolo ho laola boemo ba ho ts'oana ha li-cl, sena ke senotlolo -t qala sesebelisoa runit.sh ho tsoa ho SLOB
Peresente ea litaelo tsa DML e laoloa, ka palo ea melaetsa ea mongolo e rometsoeng ho subd, karolo ka 'ngoe ea mongolo, parameter. UPDATE_PCT
E arotsoe ebile e bonolo haholo: SLOB ka boeona, pele le ka mor'a seboka sa mojaro - e lokisetsa statspack, kapa awr-snapshots (se behiloeng hore se lokisoe).

Leha ho le joalo, ho ile ha etsahala joalo SLOB ha e tšehetse linako tsa SQL ka nako e ka tlase ho metsotsoana e 30.
Ka hona, ke ile ka qala ka ho ngola mofuta oa ka oa mosebelisi, oa batho ba sa sebetseng hantle, 'me o ile oa lula o sebetsa.

E-re ke hlakise hore na motlatsi o etsa eng le hore na o e etsa joang, bakeng sa ho hlaka.
Ha e le hantle, loader e shebahala tjena:

Khoutu ea basebetsi

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

Basebetsi ba hlahisoa ka tsela ena:

Basebetsi ba mathang

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

'Me litafole tsa basebetsi li lokiselitsoe tjena:

Ho theha litafole

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"

Tseo. Bakeng sa mosebeletsi e mong le e mong (ha e le hantle: lenaneo le arohaneng la SQL ho DB) ho etsoa tafole e arohaneng, eo mosebeletsi a sebetsang le eona.

Sena se tiisa ho ba sieo ha liloko tsa transactional pakeng tsa linako tsa basebetsi.
Mosebeletsi e mong le e mong: o etsa ntho e le nngwe, ka tafole ya hae, ditafole di a tshwana.
Basebetsi bohle ba etsa mosebetsi ka nako e lekanang.
Ho feta moo, ka nako e telele e lekaneng e le hore, ka mohlala, phetoho ea log e tla etsahala ka sebele, le ho feta hang.
Ho joalo, ka hona, litšenyehelo tse amanang le litlamorao li ile tsa hlaha.
Tabeng ea ka, ke ile ka hlophisa nako ea mosebetsi oa basebetsi ka metsotso e 8.

Karolo ea tlaleho ea statspack e hlalosang ts'ebetso ea subd tlas'a mojaro

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

Ho khutlela mosebetsing oa laboratori.
Re tla, lintho tse ling li lekana, re tla fetola boleng ba likarolo tse latelang tsa setsi sa laboratori:

  1. Boholo ba lihlopha tsa polokelo ea database. palo ea boleng: [32, 1024] MB;
  2. Palo ea lihlopha tsa likoranta sebakeng sa polokelo ea litaba. boleng ba boleng: [2,32];
  3. log_archive_max_processes boleng ba boleng: [1,8];
  4. commit_logging litekanyetso tse peli li lumelloa: batch|immediate;
  5. commit_wait litekanyetso tse peli li lumelloa: wait|nowait;
  6. log_buffer mefuta ea boleng: [2,128] MB.
  7. log_checkpoint_timeout boleng range: [60,1200] metsotsoana
  8. db_writer_processes boleng ba boleng: [1,4]
  9. undo_retention boleng range: [30;300] metsotsoana
  10. transactions_per_rollback_segment boleng ba boleng: [1,8]
  11. disk_asynch_io litekanyetso tse peli li lumelloa: true|false;
  12. filesystemio_options lintlha tse latelang li lumelloa: none|setall|directIO|asynch;
  13. db_block_checking lintlha tse latelang li lumelloa: OFF|LOW|MEDIUM|FULL;
  14. db_block_checksum lintlha tse latelang li lumelloa: OFF|TYPICAL|FULL;

Motho ea nang le boiphihlelo ba ho boloka lits'oants'o tsa Oracle a ka se a ntse a bolela hore na ke litekanyetso life tse lokelang ho beoa, ho tsoa ho li-parameter tse boletsoeng le boleng ba tsona bo amohelehang, e le ho fumana tlhahiso e kholo ea database bakeng sa mosebetsi o nang le data e bontšitsoeng ke khoutu ea kopo , mona ka holimo.

Empa.

Taba ea mosebetsi oa laboratori ke ho bontša hore algorithm ea optimization ka boeona e tla re hlakisetsa sena ka potlako.

Ho rona, se setseng ke ho sheba ka har'a tokomane, ka sistimi e ka khonehang, ho lekana ho fumana hore na ke liparamente life tse lokelang ho fetoloa le hore na ke mekhahlelo efe.
Hape: khoutu khoutu e tla sebelisoa ho sebetsa le sisteme ea tloaelo ea algorithm e khethiloeng ea ho ntlafatsa.

Kahoo, hona joale mabapi le khoutu.
Ke buile ka holimo ka cran-r, ke hore: maqheka ohle a nang le sistimi e hlophisitsoeng e hlophisitsoe ka mokhoa oa mongolo oa R.

Mosebetsi oa sebele, tlhahlobo, khetho ka boleng ba metric, li-vector tsa boemo ba tsamaiso: sena ke sephutheloana GA (litokomane)
Sephutheloana, tabeng ena, ha se tšoanelehe haholo, ka kutloisiso ea hore se lebeletse hore li-vectors (li-chromosome, haeba ho latela sephutheloana) li hlalosoe ka mokhoa oa likhoele tsa linomoro tse nang le karolo e fokolang.

'Me vector ea ka, ho tloha ho litekanyetso tsa li-parameters: tsena ke lipalo tse 14 - lipalo le litekanyetso tsa likhoele.

Bothata, ha e le hantle, bo qojoa habonolo ka ho abela linomoro tse itseng ho litekanyetso tsa likhoele.

Kahoo, qetellong, karolo ea sehlooho ea R script e shebahala tjena:

Letsetsa 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

Mona, ka thuso lower и upper litšobotsi tse nyane ga Ha e le hantle, sebaka sa sebaka sa ho batla se hlalositsoe, moo ho tla batloa phuputso bakeng sa vector e joalo (kapa li-vector) eo boleng bo phahameng ba ts'ebetso ea boikoetliso bo tla fumanoa.

The ga subroutine e etsa patlisiso e matlafatsang tšebetso ea boikoetliso.

Joale, hoa fumaneha hore, ntlheng ena, hoa hlokahala hore ts'ebetso ea boikoetliso, ho utloisisa vector e le sete ea boleng ba liparamente tse itseng tsa subd, e fumane metric ho tsoa ho subd.

Ke hore: ke tse kae, tse nang le setup se fanoeng le mojaro o fanoeng ho subd: subd process transactions motsotsoana.

Ka mantsoe a mang, ha e bula, mehato e mengata e latelang e tlameha ho etsoa ka har'a ts'ebetso ea boikoetliso:

  1. Ho sebetsana le vector ea ho kenya linomoro - ho e fetola boleng ba li-parameter tsa subdata.
  2. Teko ea ho theha palo e fanoeng ea lihlopha tsa redo ea boholo bo fanoeng. Ho feta moo, boiteko boo bo ka ’na ba se atlehe.
    Lihlopha tsa limakasine tse seng li ntse li le teng subd, ka bongata bo itseng le boholo bo itseng, bakeng sa bohloeki ba teko - d.b. hlakotsoe.
  3. Haeba ntlha e fetileng e atlehile: ho hlakisa boleng ba litekanyetso tsa tlhophiso ho database (hape: ho ka ba le ho hloleha)
  4. Haeba mohato o fetileng o atlehile: ho emisa subd, ho qala subd e le hore litekanyetso tse sa tsoa boleloa tsa paramente li sebetse. (hape: ho ka ba le glitch)
  5. Haeba mohato o fetileng o atlehile: etsa tlhahlobo ea mojaro. fumana metrics ho tsoa ho subd.
  6. Khutlisetsa subd boemong ba eona ba pele, i.e. hlakola lihlopha tse ling tsa li-log, khutlisetsa tlhophiso ea mantlha ea basebetsi.

Khoutu ea tšebetso ea boikoetliso

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)
}

Seo. all work/ Ketso ya ho sebetsa: e etsoang mosebetsing wa ho itekanela.

Ga-subroutine e sebetsa li-vector, kapa, ka nepo, li-chromosome.
Ho eona, seo e leng sa bohlokoa haholo ho rona ke khetho ea li-chromosome tse nang le liphatsa tsa lefutso tseo tšebetso ea boikoetliso e hlahisang boleng bo boholo.

Ha e le hantle, ona ke mokhoa oa ho batla sete e nepahetseng ea li-chromosome ho sebelisa vector sebakeng sa ho batla sa N-dimensional.

E hlakile haholo, e qaqileng tlhaloso, ka mehlala ea R-code, mosebetsi oa algorithm ea liphatsa tsa lefutso.

Ke kopa ho ela hloko lintlha tse peli tsa tekheniki ka thoko.

Mehala e thusang ho tsoa tšebetsong evaluate, mohlala, ho emisa-ho qala, ho beha boleng ba parameter ea subd, e etsoa ho latela cran-r mesebetsi system2

Ka thuso ea eona: mongolo o mong oa bash kapa taelo e bitsoa.

Ka mohlala:

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)
}
}

Ntlha ea bobeli ke mola, evaluate mesebetsi, ka ho boloka boleng bo itseng ba metric le vector ea eona e lumellanang le faele ea log:

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

Sena ke sa bohlokoa, hobane ho tsoa lethathamong lena la data, ho tla khonahala ho fumana leseli le eketsehileng mabapi le hore na ke efe ea likarolo tsa vector ea tokiso e nang le phello e kholo kapa e nyane ho boleng ba metric.

Ke hore: ho tla khonahala ho etsa tlhahlobo ea bohlokoa ba semelo.

Joale ho ka etsahala’ng?

Ka mokhoa oa graph, haeba u laela liteko ka tatellano ea metric e nyolohang, setšoantšo se tjena:

Mokhoa oa poke oa mahlale, kapa mokhoa oa ho khetha tlhophiso ea database o sebelisa li-benchmarks le algorithm ea optimization

Lintlha tse ling tse tsamaellanang le boleng bo feteletseng ba metric:
Mokhoa oa poke oa mahlale, kapa mokhoa oa ho khetha tlhophiso ea database o sebelisa li-benchmarks le algorithm ea optimization
Mona, skrineng se nang le liphetho, ke tla hlakisa: boleng ba vector ea tokiso bo fanoe ho latela khoutu ea ts'ebetso ea boikoetliso, eseng ho latela lenane la linomoro tsa liparamente / mefuta ea boleng ba paramente, e entsoeng. ka holimo sengolweng.

Hantle. Na e ngata kapa e nyane, ~ 8 thousand tps: potso e arohaneng.
Ka har'a moralo oa mosebetsi oa laboratori, palo ena ha ea bohlokoa, se bohlokoa ke matla, hore na boleng bona bo fetoha joang.

Li-dynamics mona li ntle.
Ho hlakile hore bonyane ntlha e le 'ngoe e susumetsa haholo boleng ba metric, ga-algorithm, ho hlophisa ka har'a li-vector tsa chromosome: tse koahetsoeng.
Ho latela matla a matla a li-curve values, bonyane ho na le ntlha e le 'ngoe eo, leha e le nyane haholo, e nang le tšusumetso.

Mona ke moo o e hlokang teng attribute-importance tlhahlobo ho utloisisa hore na ke litšobotsi life (hantle, tabeng ena, likarolo tsa vector ea tokiso) le hore na li susumetsa boleng ba metric hakae.
'Me ho tsoa boitsebisong bona: utloisisa hore na ke lintlha life tse anngoeng ke liphetoho tsa litšobotsi tsa bohlokoa.

Phethahatsa attribute-importance ho khoneha ka litsela tse fapaneng.

Bakeng sa merero ena, ke rata algorithm randomForest R sephutheloana sa lebitso le le leng (litokomane)
randomForest, ha ke ntse ke utloisisa mosebetsi oa hae ka kakaretso le mokhoa oa hae oa ho hlahloba bohlokoa ba litšoaneleho ka ho khetheha, o haha ​​mohlala o itseng oa ho itšetleha ka ho fetoha ha karabo ho litšoaneleho.

Tabeng ea rona, phapang ea karabelo ke metric e fumanoeng ho database litekong tsa mojaro: tps;
'Me litšoaneleho ke likarolo tsa vector ea tokiso.

Kahoo mona randomForest e lekola bohlokoa ba mofuta o mong le o mong oa mohlala ka linomoro tse peli: %IncMSE - hore na ho ba teng / ho ba sieo ha tšobotsi ena ka mohlala ho fetola boleng ba MSE ea mohlala ona joang (Mean Squared Error);

'Me IncNodePurity ke palo e bonts'ang hore na, ho ipapisitsoe le boleng ba semelo sena, dataset e nang le litebello e ka aroloa, e le hore karolong e le 'ngoe ho na le data e nang le boleng bo le bong ba metric e hlalosoang,' me ho e 'ngoe boleng bo bong ba metric.
Ho joalo, ke hore: sena ke tšobotsi e khethollang hakae (ke bone tlhaloso e hlakileng ka ho fetisisa ea puo ea Serussia ho RandomForest mona).

Khoutu ea R-mosebetsi bakeng sa ho sebetsana le datha tse nang le liphetho tsa liteko tsa mojaro:

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

U ka khetha ka ho toba li-hyperparameters tsa algorithm ka matsoho a hao 'me, u lebisa tlhokomelo ho boleng ba mohlala, khetha mohlala o phethahatsang ka ho nepahetseng ho bolela esale pele ho dataset ea ho netefatsa.
U ka ngola mofuta o itseng oa ts'ebetso bakeng sa mosebetsi ona (ka tsela, hape, u sebelisa mofuta o itseng oa algorithm ea ho ntlafatsa).

U ka sebelisa sephutheloana sa R caret, eseng ntlha ea bohlokoa.

Ka lebaka leo, tabeng ena, sephetho se latelang se fumanoa ho hlahloba tekanyo ea bohlokoa ba litšobotsi:

Mokhoa oa poke oa mahlale, kapa mokhoa oa ho khetha tlhophiso ea database o sebelisa li-benchmarks le algorithm ea optimization

Hantle. Kahoo, re ka qala ho nahanisisa ka lefatše:

  1. Hoa etsahala hore ntho ea bohlokoa ka ho fetisisa, tlas'a maemo ana a teko, e ne e le parameter commit_wait
    Ka botekgeniki, e hlakisa mokhoa oa ts'ebetso oa ts'ebetso ea io ea ho ngola redo data ho tsoa ho subdb log buffer ho ea ho sehlopha sa hajoale sa log: synchronous kapa asynchronous.
    boleng nowait e leng se etsang hore ho be le keketseho e batlang e otlolohile, e mengata ea boleng ba metric ea tps: sena ke ho kenyelletsoa ha mokhoa oa asynchronous io lihlopheng tsa redo.
    Potso e fapaneng ke hore na u lokela ho etsa sena sebakeng sa polokelo ea litaba tsa lijo kapa che. Mona ke ipehela moeli oa ho bolela feela: ena ke ntlha ea bohlokoa.
  2. Hoa utloahala hore boholo ba "log buffer" ea subd: e fetoha ntho ea bohlokoa.
    Ha boholo ba "log buffer" bo nyane, bo fokotsa matla a eona, hangata bo phalla le / kapa ho sitoa ho fana ka sebaka sa mahala ho eona bakeng sa karolo ea data e ncha ea redox.
    Sena se bolela: tieho e amanang le ho fana ka sebaka ka har'a "log buffer" le/kapa ho lahlela data ea ho etsa botjha ho tsoa ho eona ka lihlopha tsa ho etsa bocha.
    Litieho tsena, ehlile, li tlameha ho ama ts'ebetso ea polokelo ea litaba bakeng sa litšebelisano.
  3. Parameter db_block_checksum: hantle, hape, ka kakaretso ho hlakile - ts'ebetso ea transaction e lebisa ho thehoeng ha li-darty blocks ka har'a cache ea buffer ea subdatabase.
    Eo, ha ho hlahlojoa li-checksums tsa li-datablocks ho nolofalitsoe, database e tlameha ho sebetsa - bala li-checksums tsena ho tloha 'meleng oa datablock, li hlahlobe ka se ngotsoeng sehloohong sa "datablock": lipapali / ha li lumellane.
    Mosebetsi o joalo, hape, o ke ke oa lieha ts'ebetso ea data, 'me ka hona, paramente le mochini o behang paramente ena li fetoha tsa bohlokoa.
    Ke ka lebaka leo morekisi a fanang ka, litokomaneng tsa parameter ena, litekanyetso tse fapaneng le lintlha tsa hore e, ho tla ba le tšusumetso, empa u ka khetha litekanyetso tse fapaneng, esita le "koala" le liphello tse fapaneng.

Hantle, qeto ea lefatše lohle.

Mokhoa ona, ka kakaretso, o bonahala o sebetsa haholo.

O itumella haholo, methating ea pele ea tlhahlobo ea mojaro oa sistimi e itseng ea lits'ebeletso, e le hore a khethe (tsamaiso) tlhophiso e nepahetseng bakeng sa mojaro, a se ke a shebana le lintlha tse qaqileng tsa ho theha sistimi bakeng sa mojaro.

Empa ha e e qhelele ka thoko ka botlalo - bonyane boemong ba kutloisiso: sistimi e tlameha ho tsejoa ka "li-knobs tsa phetoho" le mefuta e lumelletsoeng ea ho potoloha ha likotola tsena.

Mokhoa ona o ka fumana tlhophiso e nepahetseng ea sistimi kapele.
Mme ho ipapisitse le liphetho tsa liteko, hoa khoneha ho fumana leseli mabapi le mofuta oa kamano lipakeng tsa metrics ea ts'ebetso ea sistimi le boleng ba li-parameter tsa litlhophiso tsa sistimi.

Eo, ha e le hantle, e lokelang ho kenya letsoho ho hlaheng ha kutloisiso ena e tebileng haholo ea tsamaiso, ts'ebetso ea eona, bonyane tlas'a mojaro o fanoeng.

Ha e le hantle, sena ke phapanyetsano ea litšenyehelo tsa ho utloisisa tsamaiso e hlophisitsoeng bakeng sa litšenyehelo tsa ho lokisetsa tlhahlobo e joalo ea tsamaiso.

Ke rata ho hlokomela ka thoko: ka mokhoa ona, tekanyo ea ho lekana ha tlhahlobo ea tsamaiso ho maemo a ts'ebetso eo e tla ba le eona ts'ebetsong ea khoebo ke ea bohlokoa haholo.

Ke leboha tlhokomelo le nako ea hau.

Source: www.habr.com

Eketsa ka tlhaloso