ãããã
ç§ã¯ãæèãšè©Šè¡é¯èª€ã®ææã§ããç§ã®çºèŠãå
±æããããšã«ããŸããã
æŠããŠããã¡ããããã¯çºèŠã§ã¯ãããŸããããã®ããšã¯ãã¹ãŠãå¿çšçµ±èšããŒã¿åŠçãã·ã¹ãã (å¿
ããã DBMS ã«éã£ããã®ã§ã¯ãªã) ã®æé©åã«æºãã人ã
ã«ã¯ãé·ãéç¥ãããŠããã¯ãã§ãã
ãããŠïŒã¯ãã圌ãã¯ç¥ã£ãŠããŸãã圌ãã¯èªåãã¡ã®ç 究ã«ã€ããŠèå³æ·±ãèšäºãæžããŠããŸãã
ãã®äžæ¹ã§ãççŽã«èšã£ãŠãIT ã¹ãã·ã£ãªã¹ãã§ãã DBA ã®éã§ãã€ã³ã¿ãŒãããäžã§ãã®ã¢ãããŒããåºãèšåããããæ®åãããããŠããã®ã¯èŠåœãããŸããã
ãšããããšã§ãæ¬é¡ã§ãã
ããçš®ã®äœæ¥ãåŠçããããã«ç¹å®ã®ãµãŒãã¹ ã·ã¹ãã ãã»ããã¢ãããããšããã¿ã¹ã¯ããããšä»®å®ããŸãããã
ãã®äœåã«ã€ããŠã¯ããããäœã§ãããããã®äœåã®å質ãã©ã®ããã«æž¬å®ããããããããŠãã®å質ã枬å®ããããã®åºæºãäœã§ããããããã£ãŠããŸãã
ãŸãããã®ãµãŒãã¹ ã·ã¹ãã å 㧠(ãŸãã¯ãã®ãµãŒãã¹ ã·ã¹ãã ã§) äœæ¥ãã©ã®ããã«å®è¡ããããã«ã€ããŠã¯ãå€ããå°ãªããç解ãããŠãããšä»®å®ããŸãããã
ãå€ããå°ãªããã - ããã¯ãéçšç°å¢ã«ååã«é©ãããã¹ãè² è·ã§åæããŠã·ã¹ãã ã«é©çšã§ããç¹å®ã®ããŒã«ããŠãŒãã£ãªãã£ããµãŒãã¹ãæºåã§ãã (ãŸãã¯ã©ããããå ¥æã§ãã) ããšãæå³ããŸããæ¬çªç°å¢ã§ã®äœæ¥ã«ååãªæ¡ä»¶ãæŽã£ãŠããããšã
ããŠããã®ãµãŒãã¹ ã·ã¹ãã ã®äžé£ã®èª¿æŽãã©ã¡ãŒã¿ãæ¢ç¥ã§ããããã®äœæ¥ã®çç£æ§ã®èŠ³ç¹ãããã®ã·ã¹ãã ãæ§æããããã«äœ¿çšã§ãããšä»®å®ããŸãããã
ãããŠåé¡ã¯äœã§ããããã®ãµãŒãã¹ ã·ã¹ãã ã«ã€ããŠã¯ãç¹å®ã®ãã©ãããã©ãŒã ã§ã®å°æ¥ã®è² è·ã«åãããŠãã®ã·ã¹ãã ã®èšå®ãå°éçã«æ§æããã·ã¹ãã ã«å¿ èŠãªçç£æ§ãåŸãããšãã§ãããååã«å®å šãªç解ããããŸããã
è¯ãã ããã¯ã»ãšãã©åžžã«åœãŠã¯ãŸããŸãã
ããã§äœãã§ããã§ããããïŒ
ãŸãæåã«æãæµ®ãã¶ã®ã¯ããã®ã·ã¹ãã ã®ããã¥ã¡ã³ããèŠãããšã§ãã 調æŽãã©ã¡ãŒã¿ã®å€ã®èš±å®¹ç¯å²ãç解ããŸãã ãããŠãããšãã°ã座æšéäžæ³ã䜿çšããŠããã¹ãã§ã·ã¹ãã ãã©ã¡ãŒã¿ãŒã®å€ãéžæããŸãã
ãããã®ã æ§æãã©ã¡ãŒã¿ã®ç¹å®ã®å€ã®ã»ããã®åœ¢åŒã§ãã·ã¹ãã ã«äœããã®æ§æãäžããŸãã
ãã®ããŒã«ãŠãŒãã£ãªãã£ã§ããè² è·ãžã§ãã¬ãŒã¿ã䜿çšããŠããã¹ãè² è·ãé©çšããŸãã
ãããŠããã®å€ãã€ãŸãå¿çãã€ãŸãã·ã¹ãã ã®å質ã®ææšã«æ³šç®ããŠãã ããã
次ã«èããããã®ã¯ãããã¯éåžžã«é·ãæéã§ãããšããçµè«ãããããŸããã
ã€ãŸããèšå®ãã©ã¡ãŒã¿ãŒãå€æ°ããå Žåãå®è¡ãããå€ã®ç¯å²ã倧ããå Žåãåã ã®è² è·ãã¹ãã®å®äºã«æéããããå Žåãã¯ããããã«ã¯èš±å®¹ã§ããªãã»ã©æéããããå¯èœæ§ããããŸããé·ãéã
ããŠãããã§ããªããç解ããèŠããŠããããšãã§ããããšã説æããŸãã
ãµãŒãã¹ã·ã¹ãã èšå®ãã©ã¡ãŒã¿ã®å€ã®ã»ããã«ã¯ãããã€ãã®å€ã®ã·ãŒã±ã³ã¹ãšããŠãã¯ãã«ãããããšãããããŸãã
ãã®ãããªåãã¯ãã«ã¯ããã®ä»ã®æ¡ä»¶ãçããå Žå (ãã®ãã¯ãã«ã®åœ±é¿ãåããªããšããç¹ã§)ãã¡ããªãã¯ã®å®å šã«æ確ãªå€ãã€ãŸããã¹ãè² è·äžã§ã®ã·ã¹ãã ã®åäœå質ã®ææšã«å¯Ÿå¿ããŸãã
ããªãã¡
ã·ã¹ãã æ§æãã¯ãã«ã次ã®ããã«è¡šãããšã«ããŸãã ã©ã ; ã©ã â ã·ã¹ãã æ§æãã©ã¡ãŒã¿ã®æ°ããããã®ãã©ã¡ãŒã¿ãããã€ãããã
ãããŠãããã«å¯Ÿå¿ããã¡ããªã¯ã¹ã®å€ ããã次ã®ããã«è¡šããŸããã
ãããããšã次ã®é¢æ°ãåŸãããŸãã
ããŠãç§ã®å Žåããã¹ãŠã¯ããã«ãåŠçæ代ããã»ãšãã©å¿ããããŠãããé¢æ°ã®æ¥µå€ãæ€çŽ¢ããããã®ã¢ã«ãŽãªãºã ã«åž°çããŸãã
ããŠããããããã§ãã©ã®ã¢ã«ãŽãªãºã ã䜿çšããããšãããçµç¹çãã€å¿çšçãªåé¡ãçããŸãã
- ããæå³ã§ã¯ãæäœæ¥ã§ã³ãŒãã£ã³ã°ããæéãæžããŸãã
- ãããŠãããæ©èœããããã«ã¯ãã€ãŸã(極å€ãããã°) å°ãªããšã座æšéäžãããéãèŠã€ãããŸããã
æåã®ç¹ã¯ããã®ãããªã¢ã«ãŽãªãºã ããã§ã«å®è£
ãããŠãããäœããã®åœ¢ã§ã³ãŒãã§äœ¿çšã§ããç°å¢ã«ç®ãåããå¿
èŠãããããšã瀺åããŠããŸãã
ãŸããç¥ã£ãŠããŸã python
О cran-r
XNUMX çªç®ã®ãã€ã³ãã¯ãã¢ã«ãŽãªãºã èªäœãã¢ã«ãŽãªãºã ã®å 容ãèŠä»¶ãåäœã®ç¹åŸŽã«ã€ããŠèªãå¿ èŠãããããšãæå³ããŸãã
ãããŠãããããäžãããã®ã¯ãæçãªå¯äœçšãã€ãŸãçµæããŸãã¯ã¢ã«ãŽãªãºã èªäœããçŽæ¥åŸãããå¯èœæ§ããããŸãã
ãŸãã¯ãã¢ã«ãŽãªãºã ã®çµæããååŸããããšãã§ããŸãã
å ¥åæ¡ä»¶ã«å€§ããäŸåããŸãã
ããšãã°ãäœããã®çç±ã§çµæãããéãååŸããå¿ èŠãããå Žåã¯ãåŸé éäžæ³ã¢ã«ãŽãªãºã ã«æ³šç®ãããã®ãããããéžæããå¿ èŠããããŸãã
ãŸãã¯ãæéãããã»ã©éèŠã§ã¯ãªãå Žåã¯ãããšãã°ãéºäŒçã¢ã«ãŽãªãºã ãªã©ã®ç¢ºççæé©åææ³ã䜿çšã§ããŸãã
ç§ã¯ãéºäŒçã¢ã«ãŽãªãºã ã䜿çšããŠã·ã¹ãã æ§æãéžæãããã®ã¢ãããŒãã®äœæ¥ããããã°å®éšå®€ã§ã®äœæ¥ãšããŠæ€èšããããšãææ¡ããŸãã
ãœãŒã¹ïŒ
- ãµãŒãã¹ ã·ã¹ãã ãšããŠæ¬¡ã®ãããªãã®ããããšããŸãã
oracle xe 18c
- ããããã©ã³ã¶ã¯ã·ã§ã³ ã¢ã¯ãã£ããã£ã«äœ¿çšãããµãããŒã¿ããŒã¹ã®å¯èœãªéãæé«ã®ã¹ã«ãŒããã (ãã©ã³ã¶ã¯ã·ã§ã³/ç§) ãååŸãããšããç®æšãéæããŸãã
- ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãããŒã¿ã®æäœã®æ§è³ªãäœæ¥ã®ã³ã³ããã¹ãã倧ããç°ãªãå ŽåããããŸãã
ãããã¯å€§éã®è¡šåœ¢åŒããŒã¿ãåŠçããªããã©ã³ã¶ã¯ã·ã§ã³ã§ããããšã«åæããŸãããã
ããã¯ãREDO ãããå€ãã® UNDO ããŒã¿ãçæããã倧éšåã®è¡ã倧ããªããŒãã«ãåŠçããªããšããæå³ã§ãã
ãããã¯ãããŒãã«äžã®å°æ°ã®ã€ã³ããã¯ã¹ã䜿çšããŠãå€ããå°ãªãã倧ããªããŒãã«å ã® XNUMX è¡ãå€æŽãããã©ã³ã¶ã¯ã·ã§ã³ã§ãã
ãã®ç¶æ³ã§ã¯ããã©ã³ã¶ã¯ã·ã§ã³ãåŠçããããã®ãµãããŒã¿ããŒã¹ã®çç£æ§ã¯ãäºçŽãããã°ãREDOX ããŒã¿ããŒã¹ã«ããåŠçã®å質ã«ãã£ãŠæ±ºãŸããŸãã
å 責äºé - ç¹ã« subdb èšå®ã«ã€ããŠè©±ãå Žåã
äžè¬ã«ã衚圢åŒããŒã¿ã衚圢åŒã¢ãã«ã䜿çšãããŠãŒã¶ãŒäœæ¥ã®èšèšã«ãããããšãã° SQL ã»ãã·ã§ã³éã«ãã©ã³ã¶ã¯ã·ã§ã³ ããã¯ãçºçããå¯èœæ§ãããããã§ãã
ãã¡ããããã㯠tps ã¡ããªã¯ã¹ã«ãã€ãã¹ã®åœ±é¿ãåãŒããããã¯ãµãããŒã¿ããŒã¹ã«é¢é£ããå€å çèŠå ã«ãªããŸãããããã衚圢åŒã¢ãã«ã®èšèšæ¹æ³ãšããããã¯ãçºçãããã®äžã®ããŒã¿ã®åŠçæ¹æ³ã§ãã
ãããã£ãŠãå®éšã®çŽåºŠãé«ããããã«ããã®èŠçŽ ãé€å€ãã以äžã§ãã®æ¹æ³ãæ£ç¢ºã«èª¬æããŸãã
- æ確ã«ããããã«ãããŒã¿ããŒã¹ã«éä¿¡ããã SQL ã³ãã³ãã® 100% ã DML ã³ãã³ãã§ãããšä»®å®ããŸãã
ãã¹ãã§ã¯ããµãããŒã¿ããŒã¹ãæäœãããŠãŒã¶ãŒã®ç¹æ§ãåãã«ãªãããã«ããŸãã
ã€ãŸããskl ã»ãã·ã§ã³ã®æ°ã衚圢åŒã®ããŒã¿ãskl ã»ãã·ã§ã³ãããããšã©ã®ããã«é£æºãããã - ãµããã¯ã§åäœããŸã
FORCE LOGGING
,ARCHIVELOG
æ¹é åã ãã©ãã·ã¥ãã㯠ããŒã¿ããŒã¹ ã¢ãŒãã¯ãsubd ã¬ãã«ã§ãªãã«ãªããŸãã - REDO ãã°: å¥ã®ãã¡ã€ã« ã·ã¹ãã ã®å¥ã®ããã£ã¹ã¯ãã«ãããŸãã
ããŒã¿ããŒã¹ã®ç©çã³ã³ããŒãã³ãã®æ®ãã®éšå: å¥ã®å¥ã®ãã¡ã€ã« ã·ã¹ãã ãå¥ã®ããã£ã¹ã¯ãäž:
ç©çããã€ã¹ã®è©³çŽ°ã ç 究宀ããŒã¿ããŒã¹ã®ã³ã³ããŒãã³ã
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
åœåããã®ãããªè² è·æ¡ä»¶äžã§ã¯ããã©ã³ã¶ã¯ã·ã§ã³ subd ã䜿çšããããšèããŠããŸããã
ãšãŠãçŽ æŽãããæ©èœãããã®ã§ãèè
ã®èšèãåŒçšããŸãããã
SLOBã®äžå¿ãšãªãã®ããSLOBæ³ãã§ãã SLOB ã¡ãœããã¯ãã©ãããã©ãŒã ããã¹ãããããšãç®çãšããŠããŸã
ã¢ããªã±ãŒã·ã§ã³ã®ç«¶åãªãã§ã ããŒããŠã§ã¢ã®ããã©ãŒãã³ã¹ãæ倧éã«åŒãåºãããšã¯ã§ããªã
ããšãã°ãã¢ããªã±ãŒã·ã§ã³ã®ããã¯ãããã«ã¯ãã€ã³ããããã¢ããªã±ãŒã·ã§ã³ ã³ãŒãã䜿çšãã
Oracle Databaseãããã¯ãå ±æããŸãã ããã§ããããŒã¿ãå ±æããéã«ã¯ãªãŒããŒããããçºçããŸãã
ããŒã¿ãããã¯ã§ïŒ ããããSLOB ã¯ãããã©ã«ãã®å±éã§ã¯ããã®ãããªç«¶åã®åœ±é¿ãåããŸããã
ãã®å®£èš: ã«è©²åœããŸãã
clã»ãã·ã§ã³ã®äžŠå床ã調æŽãããšäŸ¿å©ã§ãããããéèŠã§ã -t
ãŠãŒãã£ãªãã£ãèµ·åãã runit.sh
SLOBãã
DML ã³ãã³ãã®å²åã¯ãsubdãåããã¹ã ã»ãã·ã§ã³ããã©ã¡ãŒã¿ã«éä¿¡ãããããã¹ã ã¡ãã»ãŒãžã®æ°ã§èŠå¶ãããŸãã UPDATE_PCT
åå¥ã«ãéåžžã«äŸ¿å©ã«: SLOB
ããèªäœãããŒã ã»ãã·ã§ã³ã®ååŸã« - çµ±èšããã¯ãŸã㯠awr ã¹ãããã·ã§ãã (æºåãããããã«èšå®ãããŠãããã®) ãæºåããŸãã
ããããå€æããã®ã¯ã SLOB
30 ç§æªæºã® SQL ã»ãã·ã§ã³ã¯ãµããŒããããŠããŸããã
ãããã£ãŠãç§ã¯æåã«ç¬èªã®åŽåè
ãšèŸ²æ°ã®ããŒãžã§ã³ã®ããŒããŒãã³ãŒãã£ã³ã°ãããã®åŸãããéçšãç¶ããŸããã
ããããããããããã«ãããŒããŒãäœãããã®ãããããŠã©ã®ããã«ãããè¡ãã®ããæ確ã«ããŸãããã
åºæ¬çã«ããŒããŒã¯æ¬¡ã®ããã«ãªããŸãã
ã¯ãŒã«ãŒã³ãŒã
function dotx()
{
local v_period="$2"
[ -z "v_period" ] && v_period="0"
source "/home/oracle/testingredotracе/config.conf"
$ORACLE_HOME/bin/sqlplus -S system/${v_system_pwd} << __EOF__
whenever sqlerror exit failure
set verify off
set echo off
set feedback off
define wnum="$1"
define period="$v_period"
set appinfo worker_&&wnum
declare
v_upto number;
v_key number;
v_tots number;
v_cts number;
begin
select max(col1) into v_upto from system.testtab_&&wnum;
SELECT (( SYSDATE - DATE '1970-01-01' ) * 86400 ) into v_cts FROM DUAL;
v_tots := &&period + v_cts;
while v_cts <= v_tots
loop
v_key:=abs(mod(dbms_random.random,v_upto));
if v_key=0 then
v_key:=1;
end if;
update system.testtab_&&wnum t
set t.object_name=translate(dbms_random.string('a', 120), 'abcXYZ', '158249')
where t.col1=v_key
;
commit;
SELECT (( SYSDATE - DATE '1970-01-01' ) * 86400 ) into v_cts FROM DUAL;
end loop;
end;
/
exit
__EOF__
}
export -f dotx
ã¯ãŒã«ãŒã¯æ¬¡ã®ããã«èµ·åãããŸãã
åŽåè ãå®è¡ãã
echo "starting test, duration: ${TEST_DURATION}" >> "$v_logfile"
for((i=1;i<="$SQLSESS_COUNT";i++))
do
echo "sql-session: ${i}" >> "$v_logfile"
dotx "$i" "${TEST_DURATION}" &
done
echo "waiting..." >> "$v_logfile"
wait
ãããŠãã¯ãŒã«ãŒçšã®ããŒãã«ã¯æ¬¡ã®ããã«æºåãããŸãã
ããŒãã«ã®äœæ
function createtable() {
source "/home/oracle/testingredotracе/config.conf"
$ORACLE_HOME/bin/sqlplus -S system/${v_system_pwd} << __EOF__
whenever sqlerror continue
set verify off
set echo off
set feedback off
define wnum="$1"
define ts_name="slob"
begin
execute immediate 'drop table system.testtab_&&wnum';
exception when others then null;
end;
/
create table system.testtab_&&wnum tablespace &&ts_name as
select rownum as col1, t.*
from sys.dba_objects t
where rownum<1000
;
create index testtab_&&wnum._idx on system.testtab_&&wnum (col1);
--alter table system.testtab_&&wnum nologging;
--alter index system.testtab_&&wnum._idx nologging;
exit
__EOF__
}
export -f createtable
seq 1 1 "$SQLSESS_COUNT" | xargs -n 1 -P 4 -I {} -t bash -c "createtable "{}"" | tee -a "$v_logfile"
echo "createtable done" >> "$v_logfile"
ãããã®ã åã¯ãŒã«ãŒ (å®éã«ã¯ DB å ã®åå¥ã® SQL ã»ãã·ã§ã³) ããšã«ãã¯ãŒã«ãŒã䜿çšããåå¥ã®ããŒãã«ãäœæãããŸãã
ããã«ãããã¯ãŒã«ãŒ ã»ãã·ã§ã³éã®ãã©ã³ã¶ã¯ã·ã§ã³ ããã¯ã確å®ã«ãªããªããŸãã
åã¯ãŒã«ãŒã¯èªåã®ããŒãã«ã§åãããšãè¡ããŸããããŒãã«ã¯ãã¹ãŠåãã§ãã
ãã¹ãŠã®äœæ¥è
ã¯åãæéã ãäœæ¥ãè¡ããŸãã
ããã«ãããšãã°ãã°ã®åãæ¿ãã確å®ã«çºçããã®ã«ååãªæéããããè€æ°åè¡ãããŸãã
ããã«å¿ããŠãé¢é£ããã³ã¹ããšå¹æãçºçããŸããã
ç§ã®å ŽåãåŸæ¥å¡ã®äœæ¥æéã 8 åã«èšå®ããŸããã
è² è·ãããã£ãŠãããµããã£ã¬ã¯ããªã®åäœã説æããçµ±èšãã㯠ã¬ããŒãã®äžéš
Database DB Id Instance Inst Num Startup Time Release RAC
~~~~~~~~ ----------- ------------ -------- --------------- ----------- ---
2929910313 XE 1 07-Sep-20 23:12 18.0.0.0.0 NO
Host Name Platform CPUs Cores Sockets Memory (G)
~~~~ ---------------- ---------------------- ----- ----- ------- ------------
billing.izhevsk1 Linux x86 64-bit 2 2 1 15.6
Snapshot Snap Id Snap Time Sessions Curs/Sess Comment
~~~~~~~~ ---------- ------------------ -------- --------- ------------------
Begin Snap: 1630 07-Sep-20 23:12:27 55 .7
End Snap: 1631 07-Sep-20 23:20:29 62 .6
Elapsed: 8.03 (mins) Av Act Sess: 8.4
DB time: 67.31 (mins) DB CPU: 15.01 (mins)
Cache Sizes Begin End
~~~~~~~~~~~ ---------- ----------
Buffer Cache: 1,392M Std Block Size: 8K
Shared Pool: 288M Log Buffer: 103,424K
Load Profile Per Second Per Transaction Per Exec Per Call
~~~~~~~~~~~~ ------------------ ----------------- ----------- -----------
DB time(s): 8.4 0.0 0.00 0.20
DB CPU(s): 1.9 0.0 0.00 0.04
Redo size: 7,685,765.6 978.4
Logical reads: 60,447.0 7.7
Block changes: 47,167.3 6.0
Physical reads: 8.3 0.0
Physical writes: 253.4 0.0
User calls: 42.6 0.0
Parses: 23.2 0.0
Hard parses: 1.2 0.0
W/A MB processed: 1.0 0.0
Logons: 0.5 0.0
Executes: 15,756.5 2.0
Rollbacks: 0.0 0.0
Transactions: 7,855.1
ç 究宀ã®ä»äºã«æ»ããŸãã
ä»ã®æ¡ä»¶ãåãã§ããã°ãç 究宀ãµãããŒã¿ããŒã¹ã®æ¬¡ã®ãã©ã¡ãŒã¿ã®å€ãå€æŽããŸãã
- ããŒã¿ããŒã¹ãã°ã°ã«ãŒãã®ãµã€ãºã å€ã®ç¯å²: [32, 1024] MB;
- ããŒã¿ããŒã¹å ã®ãžã£ãŒãã« ã°ã«ãŒãã®æ°ã å€ã®ç¯å²: [2,32];
log_archive_max_processes
å€ã®ç¯å²: [1,8];commit_logging
XNUMX ã€ã®å€ãèš±å¯ãããŸããbatch|immediate
;commit_wait
XNUMX ã€ã®å€ãèš±å¯ãããŸããwait|nowait
;log_buffer
å€ã®ç¯å²: [2,128] MBãlog_checkpoint_timeout
å€ã®ç¯å²: [60,1200] ç§db_writer_processes
å€ã®ç¯å²: [1,4]undo_retention
å€ã®ç¯å²: [30;300] ç§transactions_per_rollback_segment
å€ã®ç¯å²: [1,8]disk_asynch_io
XNUMX ã€ã®å€ãèš±å¯ãããŸããtrue|false
;filesystemio_options
次ã®å€ãèš±å¯ãããŸããnone|setall|directIO|asynch
;db_block_checking
次ã®å€ãèš±å¯ãããŸããOFF|LOW|MEDIUM|FULL
;db_block_checksum
次ã®å€ãèš±å¯ãããŸããOFF|TYPICAL|FULL
;
Oracle ããŒã¿ããŒã¹ã®ä¿å®ã®çµéšããã人ã§ããã°ãæå®ããããã©ã¡ãŒã¿ãšãã®èš±å®¹å€ãããæå®ãããããŒã¿ãåŠçããããŒã¿ããŒã¹ã®çç£æ§ãé«ããããã«ãäœãã©ã®å€ã«èšå®ããå¿ èŠããããããã§ã«èšãããšãã§ããŸããã¢ããªã±ãŒã·ã§ã³ ã³ãŒã (äžèš)ã
ãããã
å®éšå®€ã§ã®ç 究ã®ãã€ã³ãã¯ãæé©åã¢ã«ãŽãªãºã èªäœããããæ¯èŒçæ©ãæããã«ããŠãããããšã瀺ãããšã§ãã
ç§ãã¡ã«æ®ã£ãŠããã®ã¯ãã«ã¹ã¿ãã€ãºå¯èœãªã·ã¹ãã ãéããŠããã¥ã¡ã³ãã調ã¹ãŠãã©ã®ãã©ã¡ãŒã¿ãã©ã®ç¯å²ã§å€æŽããããèŠã€ããã ãã§ãã
ãŸããéžæããæé©åã¢ã«ãŽãªãºã ã®ã«ã¹ã¿ã ã·ã¹ãã ãæäœããããã«äœ¿çšãããã³ãŒããã³ãŒãã£ã³ã°ããŸãã
ããã§ã¯ãã³ãŒãã«ã€ããŠã§ãã
äžã§è©±ããŸãã cran-r
ã€ãŸããã«ã¹ã¿ãã€ãºãããã·ã¹ãã ã§ã®ãã¹ãŠã®æäœã¯ãR ã¹ã¯ãªããã®åœ¢åŒã§èª¿æŽãããŸãã
å®éã®ã¿ã¹ã¯ãåæãã¡ããªãã¯å€ã«ããéžæãã·ã¹ãã ç¶æ
ãã¯ãã«: ããã¯ããã±ãŒãžã§ã GA
(
ãã®å Žåã®ããã±ãŒãžã¯ããã¯ãã« (ããã±ãŒãžã®å Žåã¯æè²äœ) ãå°æ°éšãå«ãæ°å€æååã®åœ¢åŒã§æå®ãããããšãæåŸ
ããŠãããšããæå³ã§ãããŸãé©åã§ã¯ãããŸããã
ãããŠãèšå®ãã©ã¡ãŒã¿ãŒã®å€ããã®ç§ã®ãã¯ãã«: ããã㯠14 åã®æ°é (æŽæ°ãšæååå€) ã§ãã
ãã¡ããããã®åé¡ã¯ãæååå€ã«ç¹å®ã®æ°å€ãå²ãåœãŠãããšã§ç°¡åã«åé¿ã§ããŸãã
ãããã£ãŠãæçµçã«ãR ã¹ã¯ãªããã®äž»èŠéšåã¯æ¬¡ã®ããã«ãªããŸãã
GA::ga ã«é»è©±ãããã
cat( "", file=v_logfile, sep="n", append=F)
pSize = 10
elitism_value=1
pmutation_coef=0.8
pcrossover_coef=0.1
iterations=50
gam=GA::ga(type="real-valued", fitness=evaluate,
lower=c(32,2, 1,1,1,2,60,1,30,1,0,0, 0,0), upper=c(1024,32, 8,10,10,128,800,4,300,8,10,40, 40,30),
popSize=pSize,
pcrossover = pcrossover_coef,
pmutation = pmutation_coef,
maxiter=iterations,
run=4,
keepBest=T)
cat( "GA-session is done" , file=v_logfile, sep="n", append=T)
gam@solution
ããã§ãå©ããåããŠã lower
О upper
ãµãã«ãŒãã³ã®å±æ§ ga
åºæ¬çã«ãæ€çŽ¢ç©ºéã®é åãæå®ããããã®é åå
ã§ãé©å床é¢æ°ã®æ倧å€ãååŸããããã¯ãã« (è€æ°å¯) ã®æ€çŽ¢ãå®è¡ãããŸãã
ga ãµãã«ãŒãã³ã¯ãé©å¿åºŠé¢æ°ãæ倧åããæ€çŽ¢ãå®è¡ããŸãã
ããŠããã®å Žåããã¯ãã«ã subd ã®ç¹å®ã®ãã©ã¡ãŒã¿ãŒã®å€ã®ã»ãããšããŠç解ããé©åé¢æ°ã subd ããã¡ããªãã¯ãåãåãå¿ èŠãããããšãããããŸãã
ã€ãŸããæå®ããã subd ã»ããã¢ãããš subd äžã®æå®ãããè² è·ã§ãsubd ã XNUMX ç§ãããã«ãã©ã³ã¶ã¯ã·ã§ã³ãåŠçããæ°ã§ãã
ã€ãŸããå±éãããšãã«ããã£ãããã¹é¢æ°å ã§æ¬¡ã®è€æ°ã®ã¹ããããå®è¡ããå¿ èŠããããŸãã
- æ°å€ã®å ¥åãã¯ãã«ãåŠçãããµãããŒã¿ ãã©ã¡ãŒã¿ãŒã®å€ã«å€æããŸãã
- æå®ããããµã€ãºã®æå®ãããæ°ã® REDO ã°ã«ãŒããäœæããããšããŸãã ããã«ããã®è©Šã¿ã¯å€±æããå¯èœæ§ããããŸãã
å®éšã®çŽç²ãã®ããã«ãããçšåºŠã®éãšããçšåºŠã®ãµã€ãºã§ããµãããã«ãã§ã«ååšããŠããéèªã°ã«ãŒã - d.b. åé€ãããŸããã - åã®ãã€ã³ããæåããå Žå: æ§æãã©ã¡ãŒã¿ã®å€ãããŒã¿ããŒã¹ã«æå®ããŸã (ç¹°ãè¿ãã«ãªããŸããã倱æããå¯èœæ§ããããŸã)
- åã®ã¹ããããæåããå Žå: subd ãåæ¢ããæ°ããæå®ãããã©ã¡ãŒã¿ãŒå€ãæå¹ã«ãªãããã« subd ãéå§ããŸãã (ç¹°ãè¿ããŸãããäžå ·åãããå¯èœæ§ããããŸã)
- åã®æé ãæåããå Žå: è² è·ãã¹ããå®è¡ããŸãã subdããã¡ããªã¯ã¹ãååŸããŸãã
- subd ãå ã®ç¶æ ã«æ»ããŸããã€ãŸãã è¿œå ã®ãã° ã°ã«ãŒããåé€ããå ã®ãµãããŒã¿ããŒã¹æ§æãæ©èœã§ããããã«æ»ããŸãã
ãã£ãããã¹æ©èœã³ãŒã
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)
}
ããã ãã¹ãŠã®äœæ¥: ãã£ãããã¹æ©èœã§å®è¡ãããŸãã
ga ãµãã«ãŒãã³ã¯ãã¯ãã«ãããæ£ç¢ºã«ã¯æè²äœãåŠçããŸãã
ãã®äžã§ãç§ãã¡ã«ãšã£ãŠæãéèŠãªããšã¯ãé©å¿åºŠé¢æ°ã倧ããªå€ãçã¿åºãéºäŒåãæã€æè²äœãéžæããããšã§ãã
ããã¯æ¬è³ªçã«ãN 次å ã®æ€çŽ¢ç©ºéã§ãã¯ãã«ã䜿çšããŠæé©ãªæè²äœã®ã»ãããæ€çŽ¢ããããã»ã¹ã§ãã
éåžžã«æ確ã§è©³çŽ°ãª
æè¡çãªç¹ã XNUMX ã€åå¥ã«ææããããšæããŸãã
é¢æ°ããã®è£å©åŒã³åºã evaluate
ããšãã°ãåæ¢/éå§ãsubd ãã©ã¡ãŒã¿ã®å€ã®èšå®ã¯ã次ã®æ¡ä»¶ã«åºã¥ããŠå®è¡ãããŸãã cran-r
æ©èœ system2
ãããå©çšããŠãäœããã® bash ã¹ã¯ãªãããŸãã¯ã³ãã³ããåŒã³åºãããŸãã
ããšãã°ã次ã®ããã«
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)
}
}
XNUMXçªç®ã®ãã€ã³ãã¯ã©ã€ã³ã§ãã evaluate
ç¹å®ã®ã¡ããªãã¯å€ãšããã«å¯Ÿå¿ãã調æŽãã¯ãã«ããã° ãã¡ã€ã«ã«ä¿åããæ©èœ:
cat( paste("result: ",v_metric," ",v_vector,sep="") , file=v_logfile, sep="n", append=T)
ããã¯éèŠã§ãããªããªãããã®ããŒã¿é åããã調æŽãã¯ãã«ã®ã©ã®æåãã¡ããªãã¯å€ã«å€ããå°ãªãã圱é¿ãäžãããã«ã€ããŠã®è¿œå æ å ±ãååŸã§ããããã§ãã
ã€ãŸããå±æ§éèŠåºŠåæãå¯èœã«ãªããŸãã
ããã§äœãèµ·ããã§ããããïŒ
ã°ã©ã圢åŒã§ããã¹ããã¡ããªãã¯ã®æé ã«äžŠã¹ããšãå³ã¯æ¬¡ã®ããã«ãªããŸãã
ã¡ããªã¯ã¹ã®æ¥µå€ã«å¯Ÿå¿ããããã€ãã®ããŒã¿:
ããã§ãçµæãå«ãã¹ã¯ãªãŒã³ã·ã§ããã§æ確ã«ããŸãã調æŽãã¯ãã«ã®å€ã¯ãå®åŒåããããã©ã¡ãŒã¿ãŒã®çªå·ãªã¹ã/ãã©ã¡ãŒã¿ãŒå€ã®ç¯å²ã®èŠ³ç¹ã§ã¯ãªããé©å¿åºŠé¢æ°ã®ã³ãŒãã®èŠ³ç¹ããäžããããŸããæ¬æäžã®äžã«ãããŸãã
è¯ãã çŽ 8 tps ã¯å€ãã®ãå°ãªãã®ããå¥ã®è³ªåã§ãã
å®éšå®€ã§ã®ç 究ã®æ çµã¿ã§ã¯ããã®æ°å€ã¯éèŠã§ã¯ãããŸãããéèŠãªã®ã¯ãã€ããã¯ã¹ãã€ãŸããã®å€ãã©ã®ããã«å€åãããã§ãã
ããã®ãã€ããã¯ã¹ã¯è¯ãã§ãã
å°ãªããšã XNUMX ã€ã®èŠçŽ ããæè²äœãã¯ãã«ã䞊ã¹æ¿ããã¡ããªã¯ã¹ãga ã¢ã«ãŽãªãºã ã®å€ã«å€§ãã圱é¿ããããšã¯æããã§ãã
æ²ç·å€ã®ããªãæ¿ãããã€ããã¯ã¹ããå€æãããšãããªãå°ãããšã¯ããã圱é¿ãäžããèŠå ãå°ãªããšã XNUMX ã€ãããŸãã
ãããå¿
èŠã§ã attribute-importance
åæã«ãããã©ã®ãããªå±æ§ (ãã®å Žåã¯èª¿æŽãã¯ãã«ã®ã³ã³ããŒãã³ã) ãã¡ããªãã¯å€ã«ã©ã®çšåºŠåœ±é¿ããããç解ã§ããŸãã
ãããŠããã®æ
å ±ãããéèŠãªå±æ§ã®å€åã«ãã£ãŠã©ã®ãããªèŠå ã圱é¿ãåããããç解ããŸãã
ã©ã³ attribute-importance
ããŸããŸãªæ¹æ³ã§å¯èœã§ãã
ãããã®ç®çã®ããã«ãç§ã¯ãã®ã¢ã«ãŽãªãºã ã奜ãã§ã randomForest
ååã® R ããã±ãŒãž (
randomForest
ç§ãç解ããŠããããã«ã圌ã®ç 究å
šè¬ãç¹ã«å±æ§ã®éèŠæ§ãè©äŸ¡ããã¢ãããŒãã¯ãå±æ§ã«å¯Ÿããå¿çå€æ°ã®äŸåæ§ã«ã€ããŠã®ç¹å®ã®ã¢ãã«ãæ§ç¯ããŠããŸãã
ãã®å Žåãå¿çå€æ°ã¯è² è·ãã¹ãã§ããŒã¿ããŒã¹ããååŸãããã¡ããªãã¯ã§ãã tps
;
ãŸããå±æ§ã¯èª¿æŽãã¯ãã«ã®ã³ã³ããŒãã³ãã§ãã
ãããŠãã randomForest
åã¢ãã«å±æ§ã®éèŠæ§ã XNUMX ã€ã®æ°å€ã§è©äŸ¡ããŸãã %IncMSE
â ã¢ãã«å
ã®ãã®å±æ§ã®æç¡ã«ãã£ãŠããã®ã¢ãã«ã® MSE å質 (å¹³åäºä¹èª€å·®) ãã©ã®ããã«å€åãããã
ãããŠãIncNodePurity ã¯ããã®å±æ§ã®å€ã«åºã¥ããŠã芳枬å€ãå«ãããŒã¿ã»ãããã©ã®çšåºŠããŸãåå²ã§ããããåæ ããæ°å€ã§ããã€ãŸããããéšåã«ã¯èª¬æãããŠããã¡ããªã¯ã¹ã® XNUMX ã€ã®å€ãæã€ããŒã¿ãããããã XNUMX ã€ã¯èª¬æãããŠããã¡ããªã¯ã¹ã®å€ãæã€ããŒã¿ãååšããŸããã¡ããªãã¯ã®å¥ã®å€ã
ã€ãŸããããã¯ã©ã®çšåºŠåé¡å±æ§ãªã®ããšããããšã§ã (RandomForest ã§æãæ確ãªãã·ã¢èªã®èª¬æãèŠãŸãã)
è² è·ãã¹ãã®çµæãå«ãããŒã¿ã»ãããåŠçããããã®åŽèŸ² R ã³ãŒã:
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
ã¢ã«ãŽãªãºã ã®ãã€ããŒãã©ã¡ãŒã¿ãŒãèªåã®æã§çŽæ¥éžæããã¢ãã«ã®å質ã«çŠç¹ãåœãŠãŠãæ€èšŒããŒã¿ã»ããã®äºæž¬ãããæ£ç¢ºã«æºããã¢ãã«ãéžæã§ããŸãã
ãã®äœæ¥ã®ããã«ãããçš®ã®é¢æ°ãæžãããšãã§ããŸã (ã¡ãªã¿ã«ããã¯ããããçš®ã®æé©åã¢ã«ãŽãªãºã ã䜿çšããŸã)ã
Rããã±ãŒãžã䜿çšã§ããŸã caret
ãéèŠãªã®ã¯ãã€ã³ãã§ã¯ãããŸããã
ãã®çµæããã®å Žåãå±æ§ã®éèŠåºŠãè©äŸ¡ãããšä»¥äžã®ãããªçµæãåŸãããŸãã
è¯ãã ãããã£ãŠãã°ããŒãã« ãªãã¬ã¯ã·ã§ã³ãéå§ã§ããŸãã
- ãããã®ãã¹ãæ¡ä»¶äžã§æãéèŠãªã®ã¯ãã©ã¡ãŒã¿ã§ããããšãå€æããŸããã
commit_wait
æè¡çã«ã¯ãREDO ããŒã¿ã subdb ãã° ãããã¡ããçŸåšã®ãã° ã°ã«ãŒãã«æžã蟌ã io æäœã®å®è¡ã¢ãŒã (åæãŸãã¯éåæ) ãæå®ããŸãã
å€nowait
ãã®çµæãtps ã¡ããªãã¯ã®å€ãã»ãŒåçŽã«è€æ°åå¢å ããŸããããã¯ãREDO ã°ã«ãŒãã«éåæ IO ã¢ãŒããå«ãŸããŠããããšã§ãã
å¥ã®åé¡ã¯ããããé£åããŒã¿ããŒã¹ã§è¡ãã¹ããã©ããã§ãã ããã§ã¯ãããã¯éèŠãªèŠçŽ ã§ãããšã ãè¿°ã¹ãŠãããŸãã - subd: ã®ãã° ãããã¡ãŒã®ãµã€ãºãéèŠãªèŠçŽ ã§ããããšãå€æããã®ã¯è«ççã§ãã
ãã° ãããã¡ã®ãµã€ãºãå°ããã»ã©ããããã¡ãªã³ã°å®¹éãå°ãªããªãããªãŒããŒãããŒãçºçããããæ°ããé žåéå ããŒã¿ã®äžéšã«ç©ºãé åãå²ãåœãŠãããšãã§ããªããªãããšãå€ããªããŸãã
ããã¯ããã°ã»ãããã¡å ã®é åã®å²ãåœãŠãããã°ã»ãããã¡ããREDOã°ã«ãŒããžã®REDOããŒã¿ã®ãã³ãã«é¢é£ããé 延ãæå³ããŸãã
ãããã®é 延ã¯ãåœç¶ã®ããšãªããããã©ã³ã¶ã¯ã·ã§ã³ã®ããŒã¿ããŒã¹ã®ã¹ã«ãŒãããã«åœ±é¿ãäžããã¯ãã§ãã - ãã©ã¡ãŒã¿ãŒ
db_block_checksum
: ããã§ãããäžè¬çã«ããã©ã³ã¶ã¯ã·ã§ã³åŠçã«ãããµãããŒã¿ããŒã¹ã®ãããã¡ ãã£ãã·ã¥å ã«ããŒã㣠ãããã¯ã圢æãããããšã¯æããã§ãã
ããŒã¿ãããã¯ã®ãã§ãã¯ãµã ã®ãã§ãã¯ãæå¹ã«ãªã£ãŠããå ŽåãããŒã¿ããŒã¹ã¯ããŒã¿ãããã¯ã®æ¬äœãããããã®ãã§ãã¯ãµã ãèšç®ããããŒã¿ãããã¯ã®ããããŒã«æžãããŠãããã®ãšç §åããŠãäžèŽ/äžäžèŽããã§ãã¯ããå¿ èŠããããŸãã
ãã®ãããªäœæ¥ããŸããããŒã¿åŠçãé ãããã»ããªãããããã£ãŠããã©ã¡ãŒã¿ãšããã®ãã©ã¡ãŒã¿ãèšå®ããã¡ã«ããºã ãéèŠã§ããããšãå€æããŸãã
ãã®ããããã³ããŒã¯ãã®ãã©ã¡ãŒã¿ã®ããã¥ã¡ã³ãã§ãã®ãã©ã¡ãŒã¿ (ãã©ã¡ãŒã¿) ã«ç°ãªãå€ãæäŸãã確ãã«åœ±é¿ã¯ãããŸãããããªãããããªãããŸã§ã®ç°ãªãå€ãéžæã§ãããšè¿°ã¹ãŠããŸããããŸããŸãªåœ±é¿ã
ãŸããäžççãªçµè«ã§ãã
äžè¬ã«ããã®ã¢ãããŒãã¯éåžžã«ããŸãæ©èœããŠããããšãããããŸãã
圌ã¯ãç¹å®ã®ãµãŒãã¹ ã·ã¹ãã ã®è² è·ãã¹ãã®åæ段éã§ã¯ãè² è·ã«åãããŠãã® (ã·ã¹ãã ) æé©ãªæ§æãéžæãããããè² è·ã«åãããŠã·ã¹ãã ãã»ããã¢ãããã詳现ã«ã€ããŠã¯ããŸãæ·±ãæãäžããªãããšã«ããŠããŸãã
ãããããããå®å šã«æé€ããããã§ã¯ãããŸãã - å°ãªããšãç解ã®ã¬ãã«ã§ã¯ãã·ã¹ãã ã¯ã調æŽããããšãããã®ããã®å転ã®èš±å®¹ç¯å²ã«ã€ããŠç¥ã£ãŠããå¿ èŠããããŸãã
ãã®ã¢ãããŒãã«ãããæé©ãªã·ã¹ãã æ§æãæ¯èŒçè¿
éã«èŠã€ããããšãã§ããŸãã
ãããŠããã¹ãã®çµæã«åºã¥ããŠãã·ã¹ãã ããã©ãŒãã³ã¹ã¡ããªãã¯ãšã·ã¹ãã èšå®ãã©ã¡ãŒã¿ãŒã®å€ã®éã®é¢ä¿ã®æ§è³ªã«é¢ããæ
å ±ãååŸããããšãã§ããŸãã
ãã¡ãããããã¯ãå°ãªããšãæå®ã®è² è·ã®äžã§ã®ã·ã¹ãã ãšãã®åäœã«ã€ããŠã®éåžžã«æ·±ãç解ã®åºçŸã«è²¢ç®ããã¯ãã§ãã
å®éã«ã¯ãããã¯ãã«ã¹ã¿ãã€ãºãããã·ã¹ãã ãç解ããããã®ã³ã¹ããšããã®ãããªã·ã¹ãã ã®ãã¹ããæºåããããã®ã³ã¹ããšã亀æããããšã«ãªããŸãã
åå¥ã«ææããŠããããã®ã¯ããã®ã¢ãããŒãã§ã¯ãåæ¥éçšã«ãããéçšæ¡ä»¶ã«å¯Ÿããã·ã¹ãã ãã¹ãã®é©åæ§ã®çšåºŠãéåžžã«éèŠã§ãããšããããšã§ãã
ãæž èŽããã ãããããšãããããŸããã
åºæïŒ habr.com