Hello
Nanapa-kevitra ny hizara ny zavatra hitako aho - ny vokatry ny eritreritra, ny fitsapana ary ny fahadisoana.
Amin'ny ankapobeny: tsy hita izany, mazava ho azy - tokony ho fantatra hatry ny ela izany rehetra izany, ho an'ireo izay mandray anjara amin'ny fanodinana angon-drakitra momba ny statistika sy ny fanatsarana ny rafitra rehetra, fa tsy ny DBMS manokana.
Ary: eny, fantatr'izy ireo, manoratra lahatsoratra mahaliana momba ny fikarohana nataony,
Amin'ny lafiny iray: tsy hitako izay fitenenana na fanaparitahana an'io fomba fiasa io amin'ny Internet eo amin'ireo manam-pahaizana manokana momba ny IT, DBA.
Noho izany, amin'ny teboka.
Andeha hatao hoe manana andraikitra isika: manangana rafitra serivisy iray mba hanompoana karazana asa.
Fantatra ny momba ity asa ity: inona izany, ahoana no fandrefesana ny kalitaon'ity asa ity, ary inona no fepetra handrefesana izany kalitao izany.
Andeha hojerentsika ihany koa fa tsy dia fantatra loatra na tsy takatry ny saina izany: ahoana marina ny fanatanterahana ny asa ao amin'ity rafitra serivisy ity.
"Mihoatra na latsaka" - midika izany fa azo atao ny manomana (na mahazo azy avy any amin'ny toerana iray) fitaovana, fitaovana, serivisy izay azo atambatra sy ampiharina amin'ny rafitra miaraka amin'ny enta-mavesatra ampy amin'ny famokarana, amin'ny toe-javatra sahaza ho an'ny fiasana amin'ny famokarana.
Eny ary, andeha hojerentsika fa fantatra ny mari-pamantarana fanitsiana ho an'ity rafitra serivisy ity, izay azo ampiasaina hanamboarana an'io rafitra io amin'ny resaka famokarana ny asany.
Ary inona no olana - tsy misy fahatakarana feno an'ity rafitra serivisy ity, izay ahafahanao manitsy ny toe-javatra amin'ity rafitra ity ho an'ny entana ho avy amin'ny sehatra iray ary mahazo ny vokatra ilaina amin'ny rafitra.
Eny ary. Saika mitranga foana izany.
Inona no azonao atao eto?
Eny, ny zavatra voalohany tonga ao an-tsaina dia ny mijery ny antontan-taratasy momba ity rafitra ity. Fantaro hoe inona ny elanelana azo ekena ho an'ny sandan'ny mari-pamantarana fanitsiana. Ary, ohatra, amin'ny fampiasana ny fomba fiaina mandrindra, mifidiana soatoavina ho an'ny mari-pamantarana rafitra amin'ny fitsapana.
Ireo. omeo karazana fanamafisam-peo ny rafitra, amin'ny endriky ny soatoavina manokana ho an'ny mari-pamantarana fanamafisana azy.
Ampiharo enta-mavesatra izany, amin'ny fampiasana ity fitaovana ity, mpamokatra entana.
Ary jereo ny sanda - ny valiny, na ny metric ny kalitaon'ny rafitra.
Ny eritreritra faharoa dia mety ho fehin-kevitra fa fotoana lava be izao.
Eny, izany hoe: raha be dia be ny mari-pamantarana, raha lehibe ny salan'ny soatoavin'izy ireo, raha mila fotoana be ny fitsapana entana tsirairay, dia: eny, mety haka fotoana tsy ekena izany rehetra izany. fotoana ela.
Eny, ity no azonao takarina sy tadidinao.
Azonao atao ny mahita fa ao amin'ny andiana soatoavina amin'ny mari-pamantarana firafitry ny rafitra serivisy dia misy vector, toy ny filaharan'ny soatoavina sasany.
Ny vector tsirairay toy izany, ny zavatra hafa mitovy (amin'ny hoe tsy misy fiantraikany amin'ity vector ity), dia mifanitsy amin'ny sanda metrika voafaritra tanteraka - famantarana ny kalitaon'ny fiasan'ny rafitra eo ambanin'ny enta-mavesatra.
izany hoe
Andeha hojerentsika ny vector configuration system ho izay ; AIZA - isan'ny masontsivana fanamafisam-peo, firy amin'ireo masontsivana ireo no misy.
Ary ny sandan'ny metrika mifanaraka amin'izany andao holazaina amin'ny hoe
, dia mahazo asa isika:
Eny ary: avy hatrany dia tonga amin'ny zava-drehetra, raha ny amiko: saika adino tamin'ny andron'ny mpianatra, ny algorithm amin'ny fitadiavana ny faran'ny asa iray.
Eny ary, fa eto misy fanontaniana momba ny fandaminana sy ampiharina: inona ny algorithm ampiasaina.
- Amin'ny heviny - mba hahafahanao mametraka code kely kokoa amin'ny tanana.
- Ary mba hiasa, i.e. nahita ny extremum (raha misy iray), tsara, fara fahakeliny haingana kokoa noho ny mandrindra fidinana.
Ny teboka voalohany dia manondro fa mila mijery ny tontolo sasany izay efa nampiharina ny algorithm toy izany, ary, amin'ny endrika sasany, vonona hampiasaina amin'ny code.
Eny, fantatro python
и cran-r
Ny teboka faharoa dia midika fa mila mamaky momba ny algorithms manokana ianao, inona izy ireo, inona ny fepetra takian'izy ireo, ary ny endriky ny asany.
Ary ny zavatra omeny dia mety ho voka-dratsiny mahasoa - vokatra, na mivantana avy amin'ny algorithm mihitsy.
Na azo alaina avy amin'ny vokatry ny algorithm.
Miankina betsaka amin'ny fepetra fampidirana.
Ohatra, raha mila mahazo valiny haingana kokoa ianao noho ny antony iray, dia mila mijery ny algorithm gradient descent ianao ary misafidy ny iray amin'izy ireo.
Na, raha tsy dia zava-dehibe loatra ny fotoana, azonao atao, ohatra, ny mampiasa fomba fanatsarana stochastic, toy ny algorithm génétique.
Manolo-kevitra ny handinika ny asan'ity fomba ity aho, amin'ny fisafidianana ny rafitry ny rafitra, amin'ny fampiasana algorithm génétique, amin'ny manaraka, izany hoe: asa laboratoara.
Original:
- Aoka hisy, toy ny rafitra serivisy:
oracle xe 18c
- Avelao izy hanao hetsika ara-barotra sy tanjona: hahazoana ny fidirana ambony indrindra amin'ny subdatabase, amin'ny transactions/sec.
- Mety ho samy hafa be ny fifampiraharahana amin'ny toetry ny fiasan'ny angona sy ny tontolon'ny asa.
Andao hanaiky fa ireo dia fifampiraharahana izay tsy manodina angon-drakitra marobe.
Amin'ny heviny hoe tsy mamokatra angona manafoana bebe kokoa noho ny mamerina izy ireo ary tsy manodina isan-jaton'ny andalana sy latabatra lehibe.
Ireo dia fifampiraharahana izay manova andalana iray amin'ny latabatra lehibe kokoa na latsaka, miaraka amin'ny fanondroana kely amin'ity latabatra ity.
Amin'ity toe-javatra ity: ny vokatra azo avy amin'ny subdatabase ho an'ny fanodinana ny fifampiraharahana dia, miaraka amin'ny famandrihana, dia hofaritan'ny kalitaon'ny fanodinana amin'ny angon-drakitra redox.
Disclaimer - raha miresaka manokana momba ny toe-javatra subdb isika.
Satria, amin'ny tranga ankapobeny, dia mety hisy, ohatra, ny fanakatonana transactional eo anelanelan'ny fotoam-pivoriana SQL, noho ny famolavolana ny asan'ny mpampiasa miaraka amin'ny angona tabilao sy/na ny modely tabilao.
Izay, mazava ho azy, dia hisy fiantraikany mahakivy amin'ny metrika TPS ary izany dia ho anton-javatra ivelany, raha oharina amin'ny subdatabase: eny, izany no fomba namolavolana ny modelin'ny tabilao sy ny asa miaraka amin'ny angon-drakitra ao anatiny izay misy fanakanana.
Noho izany, ho an'ny fahadiovan'ny fanandramana, dia hanaisotra ity lafin-javatra ity isika, ary eto ambany dia hazavaiko tsara ny fomba.
- Andeha hojerentsika fa ny 100% amin'ny baiko SQL napetraka ao amin'ny tahiry dia baiko DML.
Avelao hitovy ny toetran'ny mpampiasa amin'ny subdatabase amin'ny fitsapana.
Izany hoe: ny isan'ny session skl, data tabular, ny fomba fiasan'ny sessions skl miaraka aminy. - Subd miasa ao
FORCE LOGGING
,ARCHIVELOG
mods. Ny maodely flashback-database dia maty, amin'ny ambaratonga subd. - Redo logs: hita ao amin'ny rafitra fichier misaraka, amin'ny "disk" misaraka;
Ny sisa amin'ny singa ara-batana amin'ny angon-drakitra: amin'ny rafitra fichier iray hafa, amin'ny "disk" misaraka:
Fanazavana bebe kokoa momba ny fitaovana ara-batana. laboratoara tahirin-kevitra singa
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
Tamin'ny voalohany, tao anatin'ireo fepetra enta-mavesatra ireo dia naniry ny hampiasa subd transaction aho
Manana endri-javatra mahafinaritra toy izany, holazaiko ny mpanoratra:
Ao am-pon'ny SLOB ny "fomba SLOB." Ny fomba SLOB dia mikendry ny hizaha sehatra
tsy misy fifandirana fampiharana. Tsy afaka mitondra ny fahombiazan'ny hardware ambony indrindra ny olona iray
mampiasa kaody fampiharana izay, ohatra, mifamatotra amin'ny fanidy fampiharana na koa
mizara sakana Oracle Database. Marina izany—misy vola be rehefa mizara angona
amin'ny data blocks! Saingy ny SLOB — amin'ny fametrahana azy ho default — dia tsy voaaro amin'ny fifandirana toy izany.
Ity fanambarana ity: mifanaraka, izany.
Tsara ny mifehy ny haavon'ny parallèle amin'ny fotoam-pivoriana cl, izany no fanalahidy -t
manomboka ny utility runit.sh
avy amin'ny SLOB
Ny isan-jaton'ny baiko DML dia fehezina, amin'ny isan'ny hafatra an-tsoratra izay alefa any amin'ny subd, isaky ny fivoriana an-tsoratra, parameter UPDATE_PCT
Misaraka ary tena mety: SLOB
ny tenany, alohan'ny sy aorian'ny fotoam-pivoriana - dia manomana statspack, na awr-snapshots (izay natao homanina).
Hita anefa izany SLOB
tsy manohana ny fivoriana SQL miaraka amin'ny faharetan'ny latsaky ny 30 segondra.
Noho izany, nomeko voalohany ny dikan-tsarimihetsika manokana, mpiasa sy tantsaha amin'ny loader, ary avy eo dia nijanona izy io.
Avelao aho hanazava ny ataon'ny loader sy ny fomba anaovany azy, mba hazava.
Amin'ny ankapobeny, ny loader dia toy izao manaraka izao:
Kaody mpiasa
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
Ny mpiasa dia manomboka amin'ny fomba toy izao:
Mpiasa mihazakazaka
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
Ary ny latabatra ho an'ny mpiasa dia voaomana toy izao:
Famoronana tabilao
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"
Ireo. Ho an'ny mpiasa tsirairay (raha ny marina: fivoriana SQL misaraka ao amin'ny DB) dia misy latabatra mitokana, izay iasan'ny mpiasa.
Izany dia miantoka ny tsy fisian'ny fanakatonana ara-barotra eo amin'ny fotoam-pivorian'ny mpiasa.
Ny mpiasa tsirairay: manao zavatra mitovy, amin'ny latabany avy, ny latabatra dia mitovy avokoa.
Ny mpiasa rehetra dia manao asa mandritra ny fotoana mitovy.
Ankoatr'izay, mandritra ny fotoana maharitra, ohatra, dia mety hitranga ny fiovan'ny log, ary mihoatra ny indray mandeha.
Eny ary, araka izany, dia nipoitra ny fandaniana sy ny vokany.
Raha ny zava-niainako dia nanamboatra ny faharetan'ny asan'ny mpiasa tamin'ny 8 minitra aho.
Sombiny amin'ny tatitra statspack milazalaza ny fiasan'ny subd eo ambany entana
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
Hiverina any amin'ny laboratoire.
Hanova ny soatoavin'ireto mari-pamantarana manaraka ireto amin'ny subdatabase laboratoara izahay, raha mitovy ny zavatra hafa:
- Haben'ny vondrona diarin'ny database. sanda sanda: [32, 1024] MB;
- Isan'ny vondrona diary ao amin'ny tahiry. sanda isan-karazany: [2,32];
log_archive_max_processes
sanda isan-karazany: [1,8];commit_logging
sanda roa no azo atao:batch|immediate
;commit_wait
sanda roa no azo atao:wait|nowait
;log_buffer
sanda isan-karazany: [2,128] MB.log_checkpoint_timeout
sandany: [60,1200] segondradb_writer_processes
sanda isan-karazany: [1,4]undo_retention
sanda sanda: [30;300] segondratransactions_per_rollback_segment
sanda isan-karazany: [1,8]disk_asynch_io
sanda roa no azo atao:true|false
;filesystemio_options
ireto soatoavina ireto dia avela:none|setall|directIO|asynch
;db_block_checking
ireto soatoavina ireto dia avela:OFF|LOW|MEDIUM|FULL
;db_block_checksum
ireto soatoavina ireto dia avela:OFF|TYPICAL|FULL
;
Ny olona iray manana traikefa amin'ny fikojakojana ny angon-drakitra Oracle dia azo antoka fa efa afaka milaza hoe inona sy inona ny soatoavina tokony hapetraka, avy amin'ny mari-pamantarana voafaritra sy ny soatoavina azo ekena, mba hahazoana vokatra bebe kokoa amin'ny angon-drakitra ho an'ny asa miaraka amin'ny angon-drakitra izay asehon'ny ny kaody fampiharana, eto ambony.
Fa.
Ny tanjon'ny asa laboratoara dia ny mampiseho fa ny algorithm optimization mihitsy no hanazava izany ho antsika haingana.
Ho anay, ny hany sisa tavela dia ny mijery ny antontan-taratasy, amin'ny alàlan'ny rafitra azo amboarina, ampy hahitana hoe inona ny mason-tsivana tokony hovaina sy ny salan'isa.
Ary koa: kaody ny kaody izay hampiasaina hiasa amin'ny rafitra manokana amin'ny algorithm optimization voafantina.
Noho izany, izao momba ny kaody.
Noresahiko etsy ambony cran-r
, izany hoe: ny fanodinkodinana rehetra miaraka amin'ny rafitra namboarina dia voarindra amin'ny endrika R script.
Ny asa tena izy, ny famakafakana, ny fifantenana amin'ny sanda metrika, ny vectors state system: fonosana ity GA
(
Ny fonosana, amin'ity tranga ity, dia tsy dia mety loatra, amin'ny heviny fa manantena ny vectors (chromosomes, raha ny fonosana) ho voafaritra amin'ny endriky ny tadin'ny isa misy ampahany ampahany.
Ary ny vector ahy, avy amin'ny soatoavin'ny mari-pamantarana: 14 isa ireo - integers sy soatoavin'ny tady.
Ny olana, mazava ho azy, dia azo alaina mora foana amin'ny fametrahana isa manokana amin'ny soatoavin'ny tady.
Noho izany, amin'ny farany, ny ampahany lehibe amin'ny script R dia toy izao:
Antsoy 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
Eto, miaraka amin'ny fanampiana lower
и upper
toetra subroutine ga
Amin'ny ankapobeny, faritra iray amin'ny habaka fikarohana dia voafaritra, izay hanaovana fikarohana ho an'ny vector (na vectors) toy izany izay hahazoana ny sanda ambony indrindra amin'ny fiasa ara-batana.
Ny subroutine ga dia manao fikarohana izay mampitombo ny fiasan'ny vatana.
Eny ary, hita fa, amin'ity tranga ity, dia ilaina ny fampandehanana ara-batana, ny fahatakarana ny vector ho fitambarana soatoavina ho an'ny masontsivana sasany amin'ny subd, dia mahazo metrika avy amin'ny subd.
Izany hoe: firy, miaraka amin'ny fametrahana subd nomena sy enta-mavesatra omena amin'ny subd: ny subd dia manao fifampiraharahana isan-tsegondra.
Izany hoe, rehefa mivelatra dia tsy maintsy atao ao anatin'ny fiasa ara-batana ireto dingana maromaro manaraka ireto:
- Fanodinana ny véktorin'ny isa - mamadika azy ho sanda ho an'ny mari-pamantarana subdata.
- Fiezahana hamorona vondrona avereno isa nomena habe iray. Ankoatra izany, ny andrana dia mety tsy hahomby.
Vondrona gazetiboky efa nisy tao amin'ny subd, amin'ny habetsahana sy habe sasany, ho an'ny fahadiovan'ny fanandramana - d.b. voafafa. - Raha mahomby ny teboka teo aloha: mamaritra ny soatoavin'ny mari-pamantarana fanamafisana amin'ny angon-drakitra (indray: mety hisy ny tsy fahombiazana)
- Raha mahomby ny dingana teo aloha: atsaharo ny subd, atombohy ny subd mba hanan-kery ny soatoavin'ny mari-pamantarana vaovao. (indray: mety misy glitch)
- Raha mahomby ny dingana teo aloha: manaova fitsapana entana. mahazo metrika avy amin'ny subd.
- Avereno amin'ny endriny voalohany ny subd, i.e. fafao ny vondrona log fanampiny, avereno amin'ny asa ny fandrindrana subdatabase tany am-boalohany.
Kaody fiasa ara-batana
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)
}
Izany. asa rehetra: natao tao amin'ny fiasan'ny Fitness.
Ny ga-subroutine dia manao vectors, na, raha ny marina kokoa, chromosomes.
Ao anatin'izany, ny zava-dehibe indrindra amintsika dia ny fifantenana ireo krômôzôma misy fototarazo izay ahafahan'ny fiasan'ny vatana mamokatra sanda lehibe.
Izany, raha ny tena izy, dia ny dingan'ny fitadiavana ny krômôzôma tsara indrindra amin'ny fampiasana vector ao amin'ny habaka fikarohana N-dimensional.
Tena mazava, antsipirihany
Te-hanamarika hevitra teknika roa aho.
Antso fanampiny avy amin'ny asa evaluate
, ohatra, ny fiatoana, ny fametrahana ny sandan'ny mari-pamantarana subd, dia atao mifototra amin'ny cran-r
asa system2
Miaraka amin'ny fanampian'izany: misy script na baiko bash antsoina.
Ohatra:
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)
}
}
Ny teboka faharoa dia ny tsipika, evaluate
fonctions, miaraka amin'ny fitahirizana sanda metrika manokana sy ny zezika fandrindrana mifanaraka aminy amin'ny rakitra log:
cat( paste("result: ",v_metric," ",v_vector,sep="") , file=v_logfile, sep="n", append=T)
Zava-dehibe izany, satria avy amin'ity laharan'ny angon-drakitra ity dia azo atao ny mahazo fampahalalana fanampiny momba ny hoe iza amin'ireo singa ao amin'ny zezika fametahana no misy fiantraikany lehibe kokoa na kely kokoa amin'ny sanda metrika.
Izany hoe: azo atao ny manao analyse attribute-importamce.
Inona àry no mety hitranga?
Amin'ny endrika grafika, raha manafatra ny fitsapana amin'ny filaharana metrika miakatra ianao, dia toy izao ny sary:
Angon-drakitra sasany mifandraika amin'ny soatoavina faran'ny metrika:
Eto, ao amin'ny pikantsary miaraka amin'ny valiny, dia hanazava aho: ny soatoavin'ny véctor tuning dia omena amin'ny lafin'ny kaody fampiasa ara-batana, fa tsy amin'ny laharan'ny lisitry ny mari-pamantarana/faritra misy ny soatoavin'ny parameter, izay novolavolaina. eo ambony ao amin'ny lahatsoratra.
Eny ary. Be ve sa kely, ~ 8 arivo tps: fanontaniana mitokana.
Ao anatin'ny sehatry ny asa laboratoara dia tsy zava-dehibe io tarehimarika io, ny zava-dehibe dia ny dinamika, ny fiovan'io sanda io.
Tsara ny dynamics eto.
Mazava ho azy fa misy anton-javatra iray farafahakeliny misy fiantraikany lehibe amin'ny sandan'ny metrika, ny ga-algorithm, manasokajy amin'ny alàlan'ny vectors chromosome: voarakotra.
Raha jerena amin'ny fihetsehan'ny soatoavin'ny curve dia misy anton-javatra iray farafahakeliny izay, na dia kely kokoa aza, dia misy fiantraikany.
Eto no ilainao attribute-importance
famakafakana mba hahatakarana hoe inona ny toetra (tsara, amin'ity tranga ity, ny singa amin'ny zezika fametahana) ary ny halehiben'ny fiantraikan'izy ireo amin'ny sandan'ny metrika.
Ary avy amin'ity fampahalalana ity: fantaro hoe inona no anton'ny fiantraikan'ny fiovan'ny toetra manan-danja.
hampihatra attribute-importance
azo atao amin'ny fomba samihafa.
Ho an'ireo tanjona ireo dia tiako ny algorithm randomForest
R fonosana mitovy anarana (
randomForest
, araka ny fahazoako ny asany amin'ny ankapobeny sy ny fomba fiasany amin'ny fanombanana ny maha-zava-dehibe ny toetra manokana, dia manangana modely iray amin'ny fiankinan-doha amin'ny fari-pahaizana valiny amin'ny toetra.
Amin'ny tranga misy antsika, ny fari-piadidiana valiny dia metrika azo avy amin'ny angon-drakitra amin'ny fitsapana entana: tps
;
Ary ny toetra dia singa amin'ny vector tuning.
Ka eto randomForest
manombana ny maha-zava-dehibe ny toetra modely tsirairay miaraka amin'ny isa roa: %IncMSE
— ny fomba hanovan'ny fisiana/tsy fisian'ity toetra ity amin'ny maodely ny kalitao MSE an'ity modely ity (Mean Squared Error);
Ary ny IncNodePurity dia isa izay maneho tsara, mifototra amin'ny soatoavin'ity toetra ity, azo zaraina ny angon-drakitra misy fanamarihana, ka amin'ny ampahany iray dia misy angona miaraka amin'ny sandan'ny metrika iray hazavaina, ary amin'ny iray hafa miaraka amin'ny sanda hafa amin'ny metrika.
Eny, izany hoe: hatraiza izany toetra fanasokajiana izany (Hitako ny fanazavana mazava indrindra amin'ny teny Rosiana momba ny RandomForest
R-code mpiasa sy tantsaha amin'ny fanodinana angon-drakitra miaraka amin'ny valin'ny fitsapana entana:
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
Azonao atao ny misafidy mivantana ny hyperparameters amin'ny algorithm amin'ny tananao ary, mifantoka amin'ny kalitaon'ny modely, mifidiana modely iray izay manatanteraka tsara kokoa ny vinavina momba ny angona fanamarinana.
Azonao atao ny manoratra karazana asa ho an'ity asa ity (amin'ny fomba, indray, mampiasa karazana algorithm optimization).
Azonao atao ny mampiasa fonosana R caret
, tsy ny hevitra no zava-dehibe.
Vokatr'izany, amin'ity tranga ity, ity vokatra manaraka ity dia azo hanombanana ny haavon'ny maha-zava-dehibe ny toetra:
Eny ary. Noho izany, afaka manomboka fandinihana eran-tany isika:
- Hita fa ny zava-dehibe indrindra, tao anatin'ireo fepetra fitsapana ireo, dia ny paramètre
commit_wait
Ara-teknika, dia mamaritra ny fomba famonoana ny io asa fanoratana redo angona avy amin'ny subdb log buffer mankany amin'ny vondrona log ankehitriny: synchronous na asynchronous.
zava-dehibenowait
izay miteraka fiakarana saika mitsangana, maro be amin'ny sandan'ny metric tps: ity no fampidirana ny maody io asynchronous amin'ny vondrona redo.
Ny fanontaniana manokana dia ny hoe tokony hanao izany na tsia amin'ny tahiry sakafo ianao. Eto aho dia mametra ny tenako amin'ny filazana fotsiny hoe: zava-dehibe izany. - Lojika fa ny haben'ny buffer log an'ny subd: dia hita fa zava-dehibe.
Arakaraky ny kely kokoa ny haben'ny buffer log, ny kely kokoa ny fahaizany buffering, no vao mainka mihoa-pampana sy/na ny tsy fahafahana manome faritra malalaka ao aminy ho an'ny ampahany amin'ny angona redox vaovao.
Midika izany: fahatarana mifandraika amin'ny fanokanana toerana ao amin'ny buffer log sy/na fanariana ny angona redo avy aminy ho vondrona redo.
Ireo fahatarana ireo, mazava ho azy, dia tokony hisy fiantraikany amin'ny fidirana amin'ny angon-drakitra ho an'ny fifanakalozana. - fikirana
db_block_checksum
: Eny ary, mazava ho azy amin'ny ankapobeny - ny fanodinana varotra dia mitarika amin'ny fananganana sakana darty ao amin'ny cache buffer an'ny subdatabase.
Izay, rehefa azo atao ny manamarina ny checksums amin'ny datablocks, ny angon-drakitra dia mila manodina - kajy ireo checksum ireo avy amin'ny vatan'ny datablock, jereo amin'ny zavatra voasoratra ao amin'ny lohatenin'ny datablock: mifanandrify/tsy mifanentana.
Ny asa toy izany, indray, dia tsy afaka ny hanemotra ny fanodinana angon-drakitra, ary mifanaraka amin'izany, ny mari-pamantarana sy ny mekanika izay mametraka an'io mari-pamantarana io dia lasa manan-danja.
Izany no mahatonga ny mpivarotra manolotra, ao amin'ny antontan-taratasy momba an'io mari-pamantarana io, ny soatoavina samihafa ary manamarika fa eny, hisy fiantraikany, saingy azonao atao ny misafidy soatoavina samihafa, eny fa na dia "eny" sy ny fiantraikany samihafa.
Eny, fanatsoahan-kevitra manerantany.
Ny fomba fiasa, amin'ny ankapobeny, dia hita fa miasa tsara.
Tena mamela ny tenany izy, amin'ny dingana voalohany amin'ny fitsapana enta-mavesatra amin'ny rafitra serivisy iray, mba hisafidianana ny (rafitra) fanamafisam-peo tsara indrindra ho an'ny enta-mavesatra, fa tsy hiditra lalina loatra amin'ny fametrahana ny rafitra ho an'ny entana.
Saingy tsy manilika azy tanteraka izany - farafaharatsiny amin'ny haavon'ny fahatakarana: ny rafitra dia tsy maintsy fantatra momba ny "fanitsiana tombo-kase" sy ny elanelana azo atao amin'ny fihodinan'ireo knobs ireo.
Ny fomba dia afaka mahita haingana ny rafitra rafitra tsara indrindra.
Ary mifototra amin'ny valin'ny fitsapana dia azo atao ny mahazo fampahalalana momba ny toetoetran'ny fifandraisana misy eo amin'ny metrikan'ny fahombiazan'ny rafitra sy ny soatoavin'ny mari-pamantarana momba ny rafitra.
Izay, mazava ho azy, dia tokony handray anjara amin'ny firongatry ity fahatakarana lalina ny rafitra, ny asany, fara fahakeliny eo ambanin'ny enta-mavesatra nomena.
Amin'ny fampiharana, izany dia fifanakalozam-bola amin'ny fahatakarana ny rafitra namboarina ho an'ny fandaniana amin'ny fanomanana ny fitsapana toy izany ny rafitra.
Te-hanamarika manokana aho: amin'ity fomba ity, ny haavon'ny fahatomombanan'ny fitsapana ny rafitra amin'ny fepetra fiasana izay hananany amin'ny fampandehanana ara-barotra dia tena zava-dehibe.
Misaotra anao noho ny fiheveranao sy ny fotoananao.
Source: www.habr.com