Le metotia faʻasaienisi, poʻo le auala e filifili ai se faʻamaumauga faʻamaumauga e faʻaaoga ai faʻailoga ma se algorithm optimization

Здравствуйте.

Na ou filifili e faasoa atu laʻu sailiga - o le fua o mafaufauga, tofotofoga ma mea sese.
I le lautele: e le o se sailiga, ioe - o nei mea uma e tatau ona iloa mo se taimi umi, ia i latou o loʻo aʻafia i le faʻaogaina o faʻamaumauga faʻamaumauga ma le faʻaogaina o soʻo se faiga, ae le o le DBMS.
Ma: ioe, latou te iloa, latou te tusia tala manaia i luga oa latou suʻesuʻega, faataitaiga (UPD.: i faʻamatalaga na latou faʻaalia ai se galuega sili ona manaia: ottertune )
I le isi itu: ou te le o vaʻaia soʻo se faʻasalalauga lautele poʻo le faʻasalalauina o lenei auala i luga o le Initaneti i tagata tomai faapitoa IT, DBA.

O lea, i le tulaga.

Se'i tatou fa'apea o lo'o i ai sau galuega: ia fa'atulaga se faiga fa'apitoa e tautuaina ai se ituaiga o galuega.

Ua iloa e uiga i lenei galuega: o le a le mea, pe faʻafefea ona fuaina le lelei o lenei galuega, ma o le a le faʻataʻitaʻiga mo le fuaina o lenei uiga.

Sei o tatou manatu foi e sili atu pe itiiti foi le iloa ma malamalama: tonu pe faʻapefea ona faʻatinoina galuega i totonu (poʻo faʻatasi) lenei faiga tautua.

"E sili atu pe itiiti ifo" - o lona uiga e mafai ona saunia (pe maua mai se mea) se meafaigaluega faapitoa, aoga, auaunaga e mafai ona faʻapipiʻiina ma faʻaoga i le faiga faʻatasi ai ma se faʻataʻitaʻiga faʻataʻitaʻiga e lava le mea o le a faia i le gaosiga, i tulaga e lava lelei mo le galue i le gaosiga .

Ia, seʻi tatou manatu o se seti o fetuutuunaiga taʻiala mo lenei faiga tautua ua iloa, lea e mafai ona faʻaaogaina e faʻapipiʻi ai lenei faiga i tulaga o le gaosiga o ana galuega.

Ma o le a le faʻafitauli - e leʻo lava le malamalama atoatoa i lenei faiga o auaunaga, o se tasi e mafai ai ona e faʻatulagaina faʻapitoa tulaga o lenei faiga mo le utaina i le lumanaʻi i luga o se faʻavae tuʻuina atu ma maua le gaosiga manaʻomia o le faiga.

Ia. E toetoe lava o le tulaga lea i taimi uma.

O le a se mea e mafai ona e faia iinei?

Ia, o le mea muamua e sau i le mafaufau o le vaʻavaʻai i faʻamaumauga mo lenei faiga. Malamalama po'o le a le tulaga e taliaina mo tau o fa'asologa o fetuunaiga. Ma, mo se faʻataʻitaʻiga, i le faʻaogaina o le faʻaogaina o le faʻagasologa o auala, filifili tulaga taua mo faʻasologa o faiga i suʻega.

O na. tuʻuina atu i le faiga se ituaiga o faʻatulagaga, i le tulaga o se seti faʻapitoa o tau mo ona faʻatulagaga faʻatulagaina.

Fa'aaoga se uta fa'ata'ita'iga i ai, fa'aaoga lenei lava mea faigaluega-fa'aoga, uta generator.
Ma vaʻai i le tau - o le tali, poʻo se metric o le lelei o le faiga.

O le manatu lona lua atonu o le faaiuga o se taimi umi lava.

Ia, o lona uiga: afai e tele naua le faʻatulagaina o tapulaʻa, pe afai o le tele o latou tau o loʻo faʻatinoina e tele, pe a fai o suʻega taʻitasi taʻitasi e manaʻomia le tele o le taimi e faʻamaeʻa ai, ona: ioe, o nei mea uma e ono faia se mea e le taliaina. taimi umi.

Ia, o mea ia e mafai ona e malamalama ma manatua.

E mafai ona e iloa o loʻo i ai i le seti o tau o le 'auʻaunaga faʻatulagaina tulaga faʻatulagaina o loʻo i ai se vector, o se faʻasologa o nisi o tau.

O ia vete taʻitasi, o isi mea e tutusa (e le o aʻafia i lenei vete), e fetaui ma se tau faʻamaonia atoatoa o le metric - o se faʻaaliga o le lelei o le faʻaogaina o le faiga i lalo o se uta suʻega.

Ie

Se'i tatou fa'ailoaina le vector configuration system e pei o Le metotia faʻasaienisi, poʻo le auala e filifili ai se faʻamaumauga faʻamaumauga e faʻaaoga ai faʻailoga ma se algorithm optimizationfea Le metotia faʻasaienisi, poʻo le auala e filifili ai se faʻamaumauga faʻamaumauga e faʻaaoga ai faʻailoga ma se algorithm optimization; O fea Le metotia faʻasaienisi, poʻo le auala e filifili ai se faʻamaumauga faʻamaumauga e faʻaaoga ai faʻailoga ma se algorithm optimization - numera o fa'asologa o fa'atonuga, pe fia o nei ta'iala o lo'o iai.

Ma o le tau o le metric e fetaui ma lenei Le metotia faʻasaienisi, poʻo le auala e filifili ai se faʻamaumauga faʻamaumauga e faʻaaoga ai faʻailoga ma se algorithm optimization sei tatou faailoa atu e faapea
Le metotia faʻasaienisi, poʻo le auala e filifili ai se faʻamaumauga faʻamaumauga e faʻaaoga ai faʻailoga ma se algorithm optimization, ona matou maua lea o se galuega: Le metotia faʻasaienisi, poʻo le auala e filifili ai se faʻamaumauga faʻamaumauga e faʻaaoga ai faʻailoga ma se algorithm optimization

Ia, o lea: o mea uma lava e vave ona oʻo mai, i loʻu tulaga: toetoe lava a galo mai oʻu aso aʻoga, algorithms mo le suʻeina o le maualuga o se galuega.

Lelei, ae o loʻo tulaʻi mai se fesili faʻalapotopotoga ma faʻaoga: o le fea algorithm e faʻaaoga.

  1. I le uiga - ina ia mafai ona e faʻaitiitia le faʻailoga i ou lima.
  2. Ma ina ia galue, i.e. maua le extremum (pe a iai se tasi), lelei, ia sili atu le vave nai lo faamaopoopo tupuaga.

O le manatu muamua o loʻo faʻaalia ai e tatau ona tatou vaʻavaʻai i nisi o siosiomaga ua uma ona faʻatinoina ia algorithms, ma o loʻo i ai, i se tulaga, ua sauni mo le faʻaogaina i le code.
Ia, ou te iloa python и cran-r

O le mea lona lua o lona uiga e tatau ona e faitau e uiga i algorithms latou lava, o a latou mea, mea latou te manaʻomia, ma foliga o latou galuega.

Ma o mea latou te tuʻuina atu e mafai ona aoga aʻafiaga - iʻuga, pe tuusaʻo mai le algorithm lava ia.

Pe mafai foi ona maua mai i'uga o le algorithm.

E fa'alagolago tele i tulaga fa'aoga.

Mo se faʻataʻitaʻiga, afai, mo nisi mafuaʻaga, e te manaʻomia le vave maua o se taunuuga, lelei, e tatau ona e vaʻavaʻai i le faʻasolosolo faʻasolosolo algorithms ma filifili se tasi oi latou.

Pe, afai e le taua tele le taimi, e mafai, mo se faʻataʻitaʻiga, faʻaogaina metotia faʻaleleia stochastic, pei ole genetic algorithm.

Ou te fautua atu e mafaufau i le galuega o lenei auala, filifili le faatulagaga o le faiga, e faaaoga ai se genetic algorithm, i le isi, e faapea e tautala: galuega falesuesue.

Uluai:

  1. Ia i ai, o se faiga tautua: oracle xe 18c
  2. Fa'ataga e fa'atino galuega fa'atauva'a ma le sini: ia maua le fa'asili sili ona mafai ona fa'aogaina o le subdatabase, i fefa'atauaiga/sec.
  3. O fefaʻatauaiga e mafai ona matua ese lava i le natura o le galue ma faʻamaumauga ma le tala o galuega.
    Sei o tatou malilie o nei fefaʻatauaiga e le faʻatautaia se aofaiga tele o faʻamaumauga faʻamaumauga.
    I le uiga latou te le faʻatupuina le tele o faʻamatalaga faʻatala nai lo le toe faia ma e le faʻatautaia pasene tetele o laina ma laulau tetele.

O fefaʻatauaiga ia e suia ai le laina e tasi i se laulau lapopoa pe itiiti foi, faʻatasi ai ma se numera laʻititi o faʻamatalaga i luga o lenei laulau.

I lenei tulaga: o le gaosiga o le subdatabase mo le faʻatautaia o fefaʻatauaiga o le a, faʻatasi ai ma se faʻasao, e fuafua i le lelei o le gaioiga e le redox database.

Disclaimer - pe a tatou talanoa faʻapitoa e uiga i tulaga subdb.

Talu ai, i le tulaga lautele, atonu e i ai, mo se faʻataʻitaʻiga, fefaʻatauaʻiga loka i le va o sauniga SQL, ona o le mamanu o le faʻaaogaina o galuega faʻatasi ma faʻamaumauga faʻamaumauga ma / poʻo le faʻataʻitaʻiga faʻasologa.

O le mea moni, o le ai ai se faʻalavelave faʻavaivai i luga o le TPS metric ma o le a avea ma se mea faʻapitoa, e fesoʻotaʻi ma le subdatabase: lelei, o le auala lea na mamanuina ai le faʻataʻitaʻiga faʻataʻitaʻiga ma le galuega ma faʻamaumauga i totonu o loʻo tupu ai poloka.

O le mea lea, mo le mama o le faʻataʻitaʻiga, o le a matou faʻateʻaina lenei mea, ma lalo ifo o le a ou faʻamalamalamaina tonu pe faʻafefea.

  1. Sei o tatou manatu, mo le faʻamaonia, o le 100% o tulafono SQL na tuʻuina atu i le database o tulafono DML.
    Ia tutusa uiga o le tagata fa'aoga ma le subdatabase i su'ega.
    O lona uiga: le numera o vasega skl, faʻamaumauga faʻamaumauga, pe faʻafefea ona galulue faʻatasi ma i latou.
  2. Subd galue i totonu FORCE LOGGING, ARCHIVELOG mods. Ua tape le faiga o le Flashback-basebase, i le tulaga maualalo.
  3. Toe fai ogalaau: o loʻo i totonu o se faila faila, i luga o se "tisiki" ese;
    O le vaega o totoe o le tino o le database: i le isi, faila faila eseese, i luga o se isi "disk":

Fa'amatalaga atili e uiga i le masini fa'aletino. vaega falesuesue database

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

I le taimi muamua, i lalo o nei tulaga o uta, sa ou manaʻo e faʻaaoga le subd transaction SLOB-fa'aoga
E i ai se uiga matagofie, o le a ou sii maia le tusitala:

I le fatu o le SLOB o le "Metotia SLOB." Ole SLOB Method ole fa'amoemoe e su'e tulaga
e aunoa ma le finauina o talosaga. E le mafai e se tasi ona fa'auluina le fa'atinoga o meafaigaluega
fa'aogaina le code code lea, mo se fa'ata'ita'iga, saisai i le lokaina o talosaga po'o le o'o lava
fa'asoa poloka o le Oracle Database. E sa'o-o lo'o i luga ole ulu pe a fa'asoa fa'amaumauga
i poloka faʻamatalaga! Ae o le SLOB-i lona fa'aogaina fa'aletonu-e puipuia mai i ia finauga.

O le tautinoga lenei: e fetaui, o le.
E faigofie le faʻatonutonuina o le maualuga o le tutusa o vasega cl, o le ki lea -t tatala le aoga runit.sh mai SLOB
O le pasene o tulafono a le DML e faʻatonutonuina, i le numera o feʻau tusitusia e lafoina i le subd, faʻasalalauga taʻitasi, parakalafa UPDATE_PCT
E ese'ese ma faigofie tele: SLOB ia lava, aʻo leʻi faia ma pe a maeʻa le sauniga - saunia se pusa faʻamaumauga, poʻo awr-snapshots (o le a le mea e faʻatulaga e saunia).

Ae ui i lea, na foliga mai SLOB e le lagolagoina vasega SQL ma le umi e itiiti ifo i le 30 sekone.
O le mea lea, na muamua ona ou faʻailogaina laʻu lava, tagata faigaluega-faifaatoʻaga o le loader, ona faʻaauau ai lea.

Sei ou faamanino atu le mea e fai e le loader ma pe faapefea ona fai, mo le manino.
O le mea moni o le loader e pei o lenei:

Fa'ailoga tagata faigaluega

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

Ua fa'alauiloa tagata faigaluega i le auala lenei:

Tagata faigaluega tamo'e

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

Ma o laulau mo tagata faigaluega ua saunia e pei o lenei:

Fausia laulau

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"

O na. Mo tagata faigaluega ta'ito'atasi (fa'ata'ita'i: se vasega SQL ese'ese i le DB) e faia se laulau 'ese'ese, lea e galue ai le tagata faigaluega.

E mautinoa ai le leai o ni loka fefa'ataua'iga i le va o taimi faigaluega.
O tagata faigaluega ta'ito'atasi: e faia le mea lava e tasi, i lana lava laulau, e tutusa uma laulau.
O tagata faigaluega uma e faia galuega mo le taimi tutusa.
E le gata i lea, mo se taimi umi ina ia, mo se faʻataʻitaʻiga, o le a mautinoa lava le tupu o se ki ogalaau, ma sili atu ma le tasi.
Ia, e tusa ai, na aliaʻe mai tau ma aʻafiaga.
I loʻu tulaga, na ou faʻatulagaina le umi o galuega a tagata faigaluega ile 8 minute.

O se vaega o se tala fa'amaufa'ailoga o lo'o fa'amatalaina ai le fa'agaioiga o le subd i lalo ole uta

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

Toe fo'i i le galuega su'esu'e.
O le a matou, o isi mea e tutusa, e fesuiaʻi tau o faʻasologa o loʻo i lalo o le subdatabase falesuesue:

  1. Tele o kulupu fa'amaumauga o fa'amaumauga. vaega taua: [32, 1024] MB;
  2. Numera o kulupu fa'amaumauga i totonu o fa'amaumauga. tulaga taua: [2,32];
  3. log_archive_max_processes tulaga taua: [1,8];
  4. commit_logging lua tau e faʻatagaina: batch|immediate;
  5. commit_wait lua tau e faʻatagaina: wait|nowait;
  6. log_buffer vaega taua: [2,128] MB.
  7. log_checkpoint_timeout tulaga taua: [60,1200] sekone
  8. db_writer_processes tulaga taua: [1,4]
  9. undo_retention tulaga taua: [30;300] sekone
  10. transactions_per_rollback_segment tulaga taua: [1,8]
  11. disk_asynch_io lua tau e faʻatagaina: true|false;
  12. filesystemio_options o tau nei e fa'atagaina: none|setall|directIO|asynch;
  13. db_block_checking o tau nei e fa'atagaina: OFF|LOW|MEDIUM|FULL;
  14. db_block_checksum o tau nei e fa'atagaina: OFF|TYPICAL|FULL;

O se tagata e iai le poto masani i le tausiaina o faʻamaumauga a Oracle e mafai lava ona taʻu mai pe o le a le mea e tatau ona faʻatulagaina, mai faʻamaufaʻailoga faʻamaonia ma o latou tulaga taua, ina ia maua ai le tele o gaosiga o faʻamaumauga mo le galuega ma faʻamaumauga o loʻo faʻaalia e le code talosaga, iinei i luga.

Ae.

O le uiga o le galuega suʻesuʻe o le faʻaalia lea o le algorithm optimization lava ia o le a faʻamalamalamaina lenei mea mo i matou i se taimi vave.

Mo i matou, pau lava le mea o loʻo totoe o le vaʻavaʻai i totonu o le pepa, e ala i le faiga faʻapitoa, naʻo le lava e suʻe ai poʻo a mea e sui ai ma pe o a laina.
Ma faʻapea foʻi: faʻailoga le code o le a faʻaaogaina e galulue ai ma le faiga masani o le algorithm optimization filifilia.

O lea la, e uiga i le code.
Sa ou talanoa i luga e uiga i cran-r, o lona uiga: o togafiti uma faʻatasi ma le faiga faʻapitoa o loʻo faʻatulagaina i le tulaga o se R script.

Ole galuega moni, au'ili'iliga, filifiliga ile metric value, system state vectors: ole afifi lea GA (tusitusiga)
O le afifi, i lenei tulaga, e le talafeagai tele, i le uiga o loʻo faʻamoemoeina vectors (chromosomes, pe a faʻatatau i le afifi) e faʻamaonia i le tulaga o manoa o numera ma se vaega ninii.

Ma o laʻu vector, mai le tau o le faʻatulagaina o tapulaʻa: o mea nei e 14 - numera ma manoa.

O le faʻafitauli, ioe, e faigofie ona aloese e ala i le tuʻuina atu o ni numera faʻapitoa i manoa tau.

O le mea lea, i le faaiuga, o le vaega autu o le R script e pei o lenei:

Valaau 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

O iinei, faatasi ai ma le fesoasoani lower и upper uiga masani ga o le mea moni, o se vaega o le avanoa suʻesuʻe o loʻo faʻamaonia, i totonu o le a faia ai se suʻesuʻega mo se vector (poʻo vectors) lea o le a maua ai le maualuga o le tau o le malosi.

O le ga subroutine e faia se suʻesuʻega e faʻateleina ai le malosi o le tino.

Ia, o le mea lea, e foliga mai, i lenei tulaga, e tatau ai i le malosi o le tino, malamalama i le vector o se seti o tau mo nisi vaega o le subd, maua se metric mai le subd.

O lona uiga: e fia, faʻatasi ai ma se seti subd tuʻuina atu ma se uta tuʻuina atu i luga o le subd: o le subd faʻatautaia fefaʻatauaiga i le sekone.

O lona uiga, pe a faʻaalia, o le tele-laasaga nei e tatau ona faia i totonu o le malosi faʻamalosi:

  1. Fa'agaioiina o le fa'aogaina o numera o numera - fa'aliliuina i tau mo fa'amaufa'ailoga subdata.
  2. O se taumafaiga e fai se numera o toe faia vaega o se lapopoa. E lē gata i lea, atonu e lē taulau le taumafaiga.
    Mekasini vaega ua uma ona i ai i le subd, i se aofaiga ma o se tele, mo le mama o le suʻega - d.b. tapeina.
  3. Afai o le mea muamua e manuia: faʻamaonia le tau o faʻamaufaʻailoga i luga o faʻamaumauga (toe: atonu o loʻo i ai se toilalo)
  4. Afai e manuia le laasaga muamua: taofi le subd, amata le subd ina ia faʻamalosia le faʻatulagaina o tau faʻatulagaina. (toe: atonu e iai se faaletonu)
  5. Afai e manuia le laasaga muamua: fai se su'ega uta. maua metrics mai subd.
  6. Toe faafoi le subd i lona tulaga muamua, i.e. tape isi vaega ogalaau, toe faafoi le uluai subdatabase configuration e galue.

Fa'atonuga fa'aletino

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

lena. galuega uma: faia i le galuega fa'aletino.

O le ga-subroutine e fa'agasolo ai vectors, po'o, sili atu, chromosomes.
O lea, o le mea e sili ona taua ia i tatou o le filifilia o chromosomes ma genes lea e maua ai e le malosi o le tino ni taua tetele.

O le mea moni, o le fa'agasologa lea o le su'eina o seti sili o chromosomes e fa'aaoga ai se ve'a i totonu ole N-dimensional search space.

E matua manino lava, auiliili faʻamatalaga, faʻatasi ai ma faʻataʻitaʻiga o le R-code, o le galuega a le genetic algorithm.

Ou te manaʻo e vaʻavaʻai ese ni manatu faʻapitoa se lua.

Valaau ausilali mai le galuega evaluate, mo se faʻataʻitaʻiga, taofi-amata, faʻatulagaina le tau o le subd parameter, o loʻo faia faʻavae i luga cran-r galuega tauave system2

Faatasi ai ma le fesoasoani lea: o nisi bash script poʻo se poloaiga e taʻua.

Mo se faʻataʻitaʻiga:

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

O le vaega lona lua o le laina, evaluate galuega, faʻatasi ai ma le faʻasaoina o se tau metric maʻoti ma lona faʻaogaina o le vector i se faila ogalaau:

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

E taua tele lenei, aua mai lenei fa'amaumauga o fa'amaumauga, o le a mafai ai ona maua fa'amatalaga fa'aopoopo e uiga po'o fea o vaega o le tuning vector e sili atu pe fa'aitiitia le a'afiaga i le tau metric.

O lona uiga: o le a mafai ona fa'atautaia le su'esu'ega o uiga-taua.

O le a la le mea e mafai ona tupu?

I le kalafi, afai e te faʻatonuina suʻega i le faʻasologa metric alu aʻe, o le ata e faʻapea:

Le metotia faʻasaienisi, poʻo le auala e filifili ai se faʻamaumauga faʻamaumauga e faʻaaoga ai faʻailoga ma se algorithm optimization

O nisi faʻamatalaga e fetaui ma le maualuga o tau o le metric:
Le metotia faʻasaienisi, poʻo le auala e filifili ai se faʻamaumauga faʻamaumauga e faʻaaoga ai faʻailoga ma se algorithm optimization
O iinei, i le faʻamalama faʻatasi ai ma faʻaiʻuga, o le a ou faʻamalamalamaina: o tau o le tuning vector o loʻo tuʻuina atu i tulaga o le faʻaogaina o le tino, ae le o le numera o le lisi o laina / laina o tau faʻatatau, lea na faʻatulagaina i luga i le tusitusiga.

Ia. Pe tele pe itiiti, ~ 8 afe tps: o se fesili ese.
I totonu o le faʻavae o galuega suʻesuʻe, o lenei fuainumera e le taua, o le mea taua o le malosi, pe faʻafefea ona suia lenei tau.

E lelei le fa'amalositino iinei.
E manino lava e le itiiti ifo ma le tasi le mea e matua'i a'afia ai le tau o le metric, o le ga-algorithm, fa'avasegaina i le chromosome vectors: ufiufi.
A fua atu i le malosi o le fa'aogaina o tau o le pi'o, o lo'o i ai se isi mea e tasi, e ui ina la'ititi la'ititi, ae e iai sona aafiaga.

O iinei e te manaʻomia ai attribute-importance au'ili'iliga e malamalama ai po'o a uiga (lelei, i lenei tulaga, vaega o le tuning vector) ma le tele o lo latou fa'aaafiaina o le tau metric.
Ma mai lenei faʻamatalaga: malamalama poʻo a mea na aʻafia i suiga i uiga taua.

momoʻe attribute-importance mafai i auala eseese.

Mo nei faʻamoemoega, ou te fiafia i le algorithm randomForest R afifi o le igoa tutusa (tusitusiga)
randomForest, e pei ona ou malamalama i lana galuega i le lautele ma lana auala e iloilo ai le taua o uiga faʻapitoa, fausia se faʻataʻitaʻiga faʻapitoa o le faʻalagolago i le fesuiaiga o tali i uiga.

I la matou tulaga, o le fesuiaiga o tali o se metric na maua mai le database i suʻega uta: tps;
Ma o uiga o vaega ia o le tuning vector.

O lea la iinei randomForest iloilo le taua o uiga faʻataʻitaʻi taʻitasi ma numera lua: %IncMSE - pe fa'afefea ona suia le tulaga lelei o le MSE o lenei fa'ata'ita'iga (Mean Squared Error);

Ma IncNodePurity o se numera e atagia ai le lelei, e faʻavae i luga o tau o lenei uiga, o se faʻamaumauga faʻatasi ai ma faʻamatalaga e mafai ona vaevaeina, ina ia i le tasi vaega o loʻo i ai faʻamatalaga ma le tasi le tau o le metric o loʻo faʻamatalaina, ma le isi ma le isi tau o le metric.
Ia, o lona uiga: o le a le tele o lenei uiga faʻavasegaina (Na ou vaʻai i le faʻamatalaga sili ona manino, gagana Rusia i RandomForest iinei).

Tagata faigaluega-faifa'ato'aga R-code mo le fa'agaioiina o se fa'amaumauga fa'atasi ma taunu'uga o su'ega uta:

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

E mafai ona e filifilia saʻo le hyperparameters o le algorithm i ou lima ma, taulai atu i le tulaga lelei o le faʻataʻitaʻiga, filifili se faʻataʻitaʻiga e sili atu ona faʻataunuʻuina faʻamatalaga i luga o faʻamaumauga faʻamaonia.
E mafai ona e tusia se ituaiga o galuega mo lenei galuega (i le ala, toe faʻaaogaina se ituaiga o faʻataʻitaʻiga algorithm).

E mafai ona e faʻaogaina le R package caret, e le o le manatu e taua.

O se taunuuga, i lenei tulaga, o le taunuuga lea e maua e iloilo ai le maualuga o le taua o uiga:

Le metotia faʻasaienisi, poʻo le auala e filifili ai se faʻamaumauga faʻamaumauga e faʻaaoga ai faʻailoga ma se algorithm optimization

Ia. O lea la, e mafai ona tatou amata mafaufau loloto i le lalolagi:

  1. E aliali mai o le mea sili ona taua, i lalo o nei tulaga suʻega, o le parakalafa commit_wait
    I le tulaga faʻapitoa, o loʻo faʻamaoti mai ai le faʻatinoina o le gaioiga o le tusiaina o faʻamaumauga toe faia mai le subdb log buffer i le log group o loʻo iai nei: synchronous pe asynchronous.
    tāua nowait lea e iu ai i se si'itia toetoe lava tu'usa'o, fa'atele i le tau o le tps metric: o le fa'aofiina lea o le asynchronous io mode i vaega toe fai.
    O le isi fesili pe tatau ona e faia lenei mea pe leai i se fa'amaumauga o mea'ai. O iinei ou te faʻatapulaʻaina ai aʻu i le na o le taʻu atu: o se mea taua tele.
  2. E fetaui lelei le tele o le log buffer o le subd: e foliga mai o se mea taua.
    O le la'ititi o le la'au pa'u ogala'au, o le fa'aitiitia fo'i lea o lona malosi e fa'afefete ai, o le tele fo'i lea o le so'a ma/po'o le le mafai ona fa'asoa se vaega avanoa i totonu mo se vaega o fa'amaumauga fou redox.
    O lona uiga: fa'atuai e feso'ota'i ma le fa'asoaina o avanoa i totonu o le ogala'au pa'u ma/po'o le lafoa'iina o fa'amatalaga toe fai mai ai i vaega toe fai.
    O nei fa'atuai, ioe, e tatau ma e a'afia ai le gaosiga o fa'amaumauga mo fefa'atauaiga.
  3. Parakalafa db_block_checksum: lelei, faʻapea foʻi, i se tulaga lautele e manino - o fefaʻatauaiga o fefaʻatauaiga e taʻitaʻia ai le faʻavaeina o poloka darty i le faʻamaufaʻailoga o le subdatabase.
    O lea, pe a mafai ona siaki siaki o datablocks, e tatau ona faʻagasolo le database - fuafua nei siaki mai le tino o le datablock, siaki i latou i mea o loʻo tusia i le ulutala datablock: fetaui / le fetaui.
    O ia galuega, toe, e le mafai ona faʻatuai le faʻatulagaina o faʻamaumauga, ma e tusa ai, o le parakalafa ma le masini e faʻatulagaina ai lenei parakalafa e foliga mai e taua.
    O le mafuaʻaga lea e ofoina atu ai e le tagata faʻatau, i totonu o faʻamaumauga mo lenei parakalafa, tulaga eseese mo ia (le parakalafa) ma faʻamaonia e ioe, o le ai ai se aʻafiaga, ae, lelei, e mafai ona e filifilia tulaga taua, e oʻo i le "off" ma aafiaga eseese.

Ia, o se faaiuga i le lalolagi atoa.

O le auala, i se tulaga lautele, e foliga mai e aoga tele.

Na te faʻatagaina o ia lava, i le amataga o le faʻataʻitaʻiina o uta o se faiga faʻapitoa, ina ia mafai ai ona filifili lona (faiga) faʻatulagaga sili ona lelei mo le uta, ae le o le suʻesuʻeina tele i mea patino o le setiina o le faiga mo le uta.

Ae e le faʻaesea atoa - a itiiti ifo i le tulaga o le malamalama: o le faiga e tatau ona iloa e uiga i le "fetuunaʻiga knobs" ma le faʻatagaina o laina o suiga o nei ki.

O le auala e mafai ona vave maua ai le faʻatulagaina o faiga sili ona lelei.
Ma faʻavae i luga o faʻaiʻuga o suʻega, e mafai ona maua faʻamatalaga e uiga i le natura o le soʻotaga i le va o faiga faʻatinoga metrics ma tau o faʻatulagaga faʻatulagaina.

Le mea, ioe, e tatau ona saofagā i le tulaʻi mai o lenei malamalama loloto o le faiga, o lona faʻagaioiga, a itiiti ifo i lalo o se avega tuʻuina atu.

I le faʻatinoga, o se fesuiaiga lea o tau o le malamalama i le faiga faʻapitoa mo tau o le sauniaina o ia suʻega o le faiga.

Ou te manaʻo e vaʻavaʻai ese: i lenei auala, o le maualuga o le talafeagai o suʻega faiga i tulaga faʻaogaina o le ai ai i pisinisi faʻapisinisi e taua tele.

Faafetai mo lou gauai ma lou taimi.

puna: www.habr.com

Faaopoopo i ai se faamatalaga