அறிவியல் குத்து முறை, அல்லது வரையறைகள் மற்றும் ஒரு தேர்வுமுறை அல்காரிதம் பயன்படுத்தி தரவுத்தள உள்ளமைவை எவ்வாறு தேர்ந்தெடுப்பது

ஹலோ

எனது கண்டுபிடிப்பைப் பகிர்ந்து கொள்ள முடிவு செய்தேன் - சிந்தனை, சோதனை மற்றும் பிழையின் பலன்.
மொத்தத்தில்: இது ஒரு கண்டுபிடிப்பு அல்ல, நிச்சயமாக - இவை அனைத்தும் நீண்ட காலமாக, பயன்பாட்டு புள்ளிவிவர தரவு செயலாக்கம் மற்றும் எந்தவொரு அமைப்புகளின் தேர்வுமுறையிலும் ஈடுபடுபவர்களுக்குத் தெரிந்திருக்க வேண்டும், குறிப்பாக DBMS அவசியமில்லை.
மற்றும்: ஆம், அவர்களுக்குத் தெரியும், அவர்கள் தங்கள் ஆராய்ச்சியில் சுவாரஸ்யமான கட்டுரைகளை எழுதுகிறார்கள், உதாரணமாக (UPD.: கருத்துகளில் அவர்கள் மிகவும் சுவாரஸ்யமான திட்டத்தை சுட்டிக்காட்டினர்: ஒட்டர்டியூன் )
மறுபுறம்: IT நிபுணர்கள், DBA ஆகியவற்றில் இணையத்தில் இந்த அணுகுமுறையின் பரவலான குறிப்புகள் அல்லது பரப்புதல் எதையும் நான் காணவில்லை.

எனவே, புள்ளி.

எங்களிடம் ஒரு பணி உள்ளது என்று வைத்துக்கொள்வோம்: சில வகையான வேலையைச் செய்ய ஒரு குறிப்பிட்ட சேவை அமைப்பை அமைப்பது.

இந்த வேலையைப் பற்றி அறியப்படுகிறது: அது என்ன, இந்த வேலையின் தரம் எவ்வாறு அளவிடப்படுகிறது, இந்த தரத்தை அளவிடுவதற்கான அளவுகோல் என்ன.

இது அதிகமாகவோ அல்லது குறைவாகவோ அறியப்பட்டதாகவும் புரிந்துகொள்ளப்பட்டதாகவும் வைத்துக்கொள்வோம்: இந்தச் சேவை அமைப்பில் (அல்லது) சரியாக எவ்வாறு வேலை செய்யப்படுகிறது.

“அதிகமாகவோ அல்லது குறைவாகவோ” - இதன் பொருள், ஒரு குறிப்பிட்ட கருவி, பயன்பாடு, சேவை ஆகியவற்றைத் தயாரிப்பது (அல்லது எங்கிருந்தோ பெறுவது) சாத்தியமாகும், அவை உற்பத்தியில் இருக்கும் அளவுக்கு போதுமான சோதனை சுமையுடன் கணினியில் ஒருங்கிணைக்கப்பட்டு பயன்படுத்தப்படலாம். உற்பத்தியில் வேலை செய்வதற்கு போதுமான சூழ்நிலையில்.

சரி, இந்த சேவை அமைப்புக்கான சரிசெய்தல் அளவுருக்களின் தொகுப்பு அறியப்படுகிறது என்று வைத்துக்கொள்வோம், அதன் வேலையின் உற்பத்தித்திறன் அடிப்படையில் இந்த அமைப்பை கட்டமைக்க இது பயன்படுத்தப்படலாம்.

பிரச்சனை என்ன - இந்த சேவை அமைப்பைப் பற்றி போதுமான முழுமையான புரிதல் இல்லை, இது ஒரு குறிப்பிட்ட மேடையில் எதிர்கால சுமைக்காக இந்த அமைப்பின் அமைப்புகளை நிபுணத்துவமாக உள்ளமைக்க மற்றும் கணினியின் தேவையான உற்பத்தித்திறனைப் பெற உங்களை அனுமதிக்கிறது.

சரி. ஏறக்குறைய எப்போதும் இப்படித்தான் இருக்கும்.

நீங்கள் இங்கே என்ன செய்ய முடியும்?

சரி, முதலில் நினைவுக்கு வருவது இந்த அமைப்பிற்கான ஆவணங்களைப் பார்ப்பதுதான். சரிசெய்தல் அளவுருக்களின் மதிப்புகளுக்கு ஏற்றுக்கொள்ளக்கூடிய வரம்புகள் என்ன என்பதைப் புரிந்து கொள்ளுங்கள். மற்றும், எடுத்துக்காட்டாக, ஒருங்கிணைப்பு வம்சாவளி முறையைப் பயன்படுத்தி, சோதனைகளில் கணினி அளவுருக்களுக்கான மதிப்புகளைத் தேர்ந்தெடுக்கவும்.

அந்த. அதன் உள்ளமைவு அளவுருக்களுக்கான ஒரு குறிப்பிட்ட மதிப்புகளின் வடிவத்தில் கணினிக்கு ஒருவித உள்ளமைவைக் கொடுங்கள்.

இந்த டூல்-யூட்டிலிட்டி, லோட் ஜெனரேட்டரைப் பயன்படுத்தி, அதற்கு ஒரு சோதனைச் சுமையைப் பயன்படுத்துங்கள்.
மதிப்பைப் பாருங்கள் - பதில் அல்லது கணினியின் தரத்தின் மெட்ரிக்.

இரண்டாவது சிந்தனை இது மிக நீண்ட காலம் என்ற முடிவாக இருக்கலாம்.

சரி, அதாவது: நிறைய அமைப்பு அளவுருக்கள் இருந்தால், அவற்றின் மதிப்புகளின் வரம்புகள் பெரியதாக இருந்தால், ஒவ்வொரு தனிப்பட்ட சுமை சோதனை முடிக்க நிறைய நேரம் எடுத்தால், பின்: ஆம், இவை அனைத்தும் ஏற்றுக்கொள்ள முடியாத அளவு ஆகலாம். நீண்ட நேரம்.

சரி, இங்கே நீங்கள் புரிந்து கொள்ளவும் நினைவில் கொள்ளவும் முடியும்.

சேவை அமைப்பு அமைப்புகளின் அளவுருக்களின் மதிப்புகளின் தொகுப்பில் சில மதிப்புகளின் வரிசையாக ஒரு திசையன் இருப்பதை நீங்கள் காணலாம்.

அத்தகைய ஒவ்வொரு திசையன், மற்ற விஷயங்கள் சமமாக இருப்பது (இந்த திசையனால் பாதிக்கப்படாதது), மெட்ரிக்கின் முற்றிலும் திட்டவட்டமான மதிப்புக்கு ஒத்திருக்கிறது - இது ஒரு சோதனை சுமையின் கீழ் கணினியின் செயல்பாட்டின் தரத்தின் குறிகாட்டியாகும்.

அதாவது

கணினி உள்ளமைவு வெக்டரை இவ்வாறு குறிப்போம் அறிவியல் குத்து முறை, அல்லது வரையறைகள் மற்றும் ஒரு தேர்வுமுறை அல்காரிதம் பயன்படுத்தி தரவுத்தள உள்ளமைவை எவ்வாறு தேர்ந்தெடுப்பதுஅங்கு அறிவியல் குத்து முறை, அல்லது வரையறைகள் மற்றும் ஒரு தேர்வுமுறை அல்காரிதம் பயன்படுத்தி தரவுத்தள உள்ளமைவை எவ்வாறு தேர்ந்தெடுப்பது; எங்கே அறிவியல் குத்து முறை, அல்லது வரையறைகள் மற்றும் ஒரு தேர்வுமுறை அல்காரிதம் பயன்படுத்தி தரவுத்தள உள்ளமைவை எவ்வாறு தேர்ந்தெடுப்பது - கணினி கட்டமைப்பு அளவுருக்களின் எண்ணிக்கை, இந்த அளவுருக்கள் எத்தனை உள்ளன.

இதனுடன் தொடர்புடைய அளவீட்டின் மதிப்பு அறிவியல் குத்து முறை, அல்லது வரையறைகள் மற்றும் ஒரு தேர்வுமுறை அல்காரிதம் பயன்படுத்தி தரவுத்தள உள்ளமைவை எவ்வாறு தேர்ந்தெடுப்பது என குறிப்போம்
அறிவியல் குத்து முறை, அல்லது வரையறைகள் மற்றும் ஒரு தேர்வுமுறை அல்காரிதம் பயன்படுத்தி தரவுத்தள உள்ளமைவை எவ்வாறு தேர்ந்தெடுப்பது, பின்னர் நாம் ஒரு செயல்பாட்டைப் பெறுகிறோம்: அறிவியல் குத்து முறை, அல்லது வரையறைகள் மற்றும் ஒரு தேர்வுமுறை அல்காரிதம் பயன்படுத்தி தரவுத்தள உள்ளமைவை எவ்வாறு தேர்ந்தெடுப்பது

சரி, அப்படியானால்: என் விஷயத்தில் எல்லாம் உடனடியாக கீழே வருகிறது: எனது மாணவர் நாட்களில் இருந்து கிட்டத்தட்ட மறந்துவிட்டது, ஒரு செயல்பாட்டின் தீவிரத்தைத் தேடுவதற்கான வழிமுறைகள்.

சரி, ஆனால் இங்கே ஒரு நிறுவன மற்றும் பயன்பாட்டு கேள்வி எழுகிறது: எந்த அல்காரிதம் பயன்படுத்த வேண்டும்.

  1. அர்த்தத்தில் - நீங்கள் கையால் குறைவாக குறியீடு செய்யலாம்.
  2. மற்றும் அது வேலை செய்ய, அதாவது. உச்சநிலையை (ஒன்று இருந்தால்) கண்டறிந்தது, குறைந்தபட்சம் ஒருங்கிணைப்பு வம்சாவளியை விட வேகமாக உள்ளது.

அத்தகைய வழிமுறைகள் ஏற்கனவே செயல்படுத்தப்பட்ட சில சூழல்களை நாம் பார்க்க வேண்டும் என்பதை முதல் புள்ளி சுட்டிக்காட்டுகிறது, மேலும் சில வடிவத்தில், குறியீட்டில் பயன்படுத்த தயாராக உள்ளது.
சரி, எனக்குத் தெரியும் python и cran-r

இரண்டாவது புள்ளி, வழிமுறைகள், அவை என்ன, அவற்றின் தேவைகள் மற்றும் அவற்றின் வேலையின் அம்சங்களைப் பற்றி நீங்கள் படிக்க வேண்டும் என்பதாகும்.

அவர்கள் கொடுப்பது பயனுள்ள பக்க விளைவுகளாக இருக்கலாம் - முடிவுகள் அல்லது நேரடியாக வழிமுறையிலிருந்து.

அல்லது அல்காரிதத்தின் முடிவுகளிலிருந்து அவற்றைப் பெறலாம்.

நிறைய உள்ளீடு நிலைமைகளைப் பொறுத்தது.

எடுத்துக்காட்டாக, சில காரணங்களால், நீங்கள் முடிவை விரைவாகப் பெற வேண்டும் என்றால், நீங்கள் சாய்வு வம்சாவளி அல்காரிதம்களைப் பார்த்து அவற்றில் ஒன்றைத் தேர்ந்தெடுக்க வேண்டும்.

அல்லது, நேரம் அவ்வளவு முக்கியமில்லை என்றால், எடுத்துக்காட்டாக, மரபணு வழிமுறை போன்ற சீரான தேர்வுமுறை முறைகளைப் பயன்படுத்தலாம்.

இந்த அணுகுமுறையின் வேலையைப் பரிசீலிக்க நான் முன்மொழிகிறேன், கணினி உள்ளமைவைத் தேர்ந்தெடுத்து, ஒரு மரபணு வழிமுறையைப் பயன்படுத்தி, அடுத்ததாக, பேசுவதற்கு: ஆய்வக வேலை.

அசல்:

  1. ஒரு சேவை அமைப்பாக இருக்கட்டும்: oracle xe 18c
  2. இது பரிவர்த்தனை செயல்பாடு மற்றும் குறிக்கோளுக்கு சேவை செய்யட்டும்: பரிவர்த்தனைகள்/வினாடிகளில், துணைத் தரவுத்தளத்தின் அதிகபட்ச செயல்திறனைப் பெறுவதற்கு.
  3. தரவுகளுடன் பணிபுரியும் தன்மை மற்றும் பணியின் சூழல் ஆகியவற்றில் பரிவர்த்தனைகள் மிகவும் வித்தியாசமாக இருக்கும்.
    இவை பெரிய அளவிலான டேபிள் டேட்டாவைச் செயலாக்காத பரிவர்த்தனைகள் என்பதை ஒப்புக்கொள்வோம்.
    அவை மீண்டும் செய்வதை விட அதிகமான செயல்தவிர்க்கும் தரவை உருவாக்காது மற்றும் அதிக சதவீத வரிசைகள் மற்றும் பெரிய அட்டவணைகளை செயலாக்காது.

இந்த அட்டவணையில் சிறிய எண்ணிக்கையிலான குறியீடுகளுடன், அதிகமாகவோ அல்லது குறைவாகவோ பெரிய அட்டவணையில் ஒரு வரிசையை மாற்றும் பரிவர்த்தனைகள் இவை.

இந்த சூழ்நிலையில்: பரிவர்த்தனைகளை செயலாக்குவதற்கான துணைத் தரவுத்தளத்தின் உற்பத்தித்திறன், முன்பதிவுடன், ரெடாக்ஸ் தரவுத்தளத்தின் செயலாக்கத்தின் தரத்தால் தீர்மானிக்கப்படும்.

மறுப்பு - நாம் குறிப்பாக subdb அமைப்புகளைப் பற்றி பேசினால்.

ஏனெனில், பொதுவான வழக்கில், எடுத்துக்காட்டாக, அட்டவணை தரவு மற்றும்/அல்லது அட்டவணை மாதிரியுடன் பயனர் பணியின் வடிவமைப்பு காரணமாக, SQL அமர்வுகளுக்கு இடையே பரிவர்த்தனை பூட்டுகள் இருக்கலாம்.

இது நிச்சயமாக டிபிஎஸ் மெட்ரிக்கில் மனச்சோர்வை ஏற்படுத்தும் மற்றும் இது துணை தரவுத்தளத்துடன் ஒப்பிடும்போது வெளிப்புற காரணியாக இருக்கும்: சரி, அட்டவணை மாதிரி வடிவமைக்கப்பட்டது மற்றும் அதில் உள்ள தரவுகளுடன் வேலை செய்வது அடைப்புகளை ஏற்படுத்துகிறது.

எனவே, பரிசோதனையின் தூய்மைக்காக, இந்த காரணியை நாங்கள் விலக்குவோம், கீழே நான் சரியாக எப்படி தெளிவுபடுத்துவேன்.

  1. திட்டவட்டமாக, தரவுத்தளத்தில் சமர்ப்பிக்கப்பட்ட SQL கட்டளைகளில் 100% DML கட்டளைகள் என்று வைத்துக்கொள்வோம்.
    துணை தரவுத்தளத்துடன் பயனர் பணிபுரியும் பண்புகள் சோதனைகளில் ஒரே மாதிரியாக இருக்கட்டும்.
    அதாவது: skl அமர்வுகளின் எண்ணிக்கை, அட்டவணை தரவு, skl அமர்வுகள் அவற்றுடன் எவ்வாறு செயல்படுகின்றன.
  2. சப்டி வேலை செய்கிறது FORCE LOGGING, ARCHIVELOG மோட்ஸ். ஃப்ளாஷ்பேக்-டேட்டாபேஸ் பயன்முறை துணை மட்டத்தில் முடக்கப்பட்டுள்ளது.
  3. பதிவுகளை மீண்டும் செய்: ஒரு தனி கோப்பு முறைமையில், ஒரு தனி "வட்டில்" அமைந்துள்ளது;
    தரவுத்தளத்தின் மீதமுள்ள இயற்பியல் கூறுகள்: மற்றொன்றில், தனி கோப்பு முறைமை, ஒரு தனி "வட்டில்":

இயற்பியல் சாதனம் பற்றிய கூடுதல் விவரங்கள். ஆய்வக தரவுத்தள கூறுகள்

SQL> select status||' '||name from v$controlfile;
 /db/u14/oradata/XE/control01.ctl
SQL> select GROUP#||' '||MEMBER from v$logfile;
1 /db/u02/oradata/XE/redo01_01.log
2 /db/u02/oradata/XE/redo02_01.log
SQL> select FILE_ID||' '||TABLESPACE_NAME||' '||round(BYTES/1024/1024,2)||' '||FILE_NAME as col from dba_data_files;
4 UNDOTBS1 2208 /db/u14/oradata/XE/undotbs1_01.dbf
2 SLOB 128 /db/u14/oradata/XE/slob01.dbf
7 USERS 5 /db/u14/oradata/XE/users01.dbf
1 SYSTEM 860 /db/u14/oradata/XE/system01.dbf
3 SYSAUX 550 /db/u14/oradata/XE/sysaux01.dbf
5 MONITOR 128 /db/u14/oradata/XE/monitor.dbf
SQL> !cat /proc/mounts | egrep "/db/u[0-2]"
/dev/vda1 /db/u14 ext4 rw,noatime,nodiratime,data=ordered 0 0
/dev/mapper/vgsys-ora_redo /db/u02 xfs rw,noatime,nodiratime,attr2,nobarrier,inode64,logbsize=256k,noquota 0 0

ஆரம்பத்தில், இந்த சுமை நிலைமைகளின் கீழ், நான் பரிவர்த்தனை துணையைப் பயன்படுத்த விரும்பினேன் SLOB-பயன்பாடு
இது ஒரு அற்புதமான அம்சத்தைக் கொண்டுள்ளது, நான் ஆசிரியரை மேற்கோள் காட்டுகிறேன்:

SLOB இன் மையத்தில் "SLOB முறை" உள்ளது. SLOB முறையானது தளங்களை சோதனை செய்வதை நோக்கமாகக் கொண்டுள்ளது
விண்ணப்ப சர்ச்சை இல்லாமல். ஒருவர் அதிகபட்ச வன்பொருள் செயல்திறனை இயக்க முடியாது
பயன்பாட்டுக் குறியீட்டைப் பயன்படுத்துதல், எடுத்துக்காட்டாக, பயன்பாட்டு பூட்டுதல் அல்லது கூட
ஆரக்கிள் தரவுத்தளத் தொகுதிகளைப் பகிர்தல். அது சரி—தரவைப் பகிரும்போது மேல்நிலை உள்ளது
தரவுத் தொகுதிகளில்! ஆனால் SLOB-அதன் இயல்புநிலை வரிசைப்படுத்தலில்-அத்தகைய சர்ச்சையிலிருந்து விடுபடுகிறது.

இந்த அறிவிப்பு: ஒத்திருக்கிறது, அது.
cl அமர்வுகளின் இணையான அளவைக் கட்டுப்படுத்துவது வசதியானது, இது முக்கியமானது -t பயன்பாட்டை துவக்கவும் runit.sh SLOB இலிருந்து
DML கட்டளைகளின் சதவீதம், subd க்கு அனுப்பப்படும் உரைச் செய்திகளின் எண்ணிக்கை, ஒவ்வொரு உரை அமர்வு, அளவுரு ஆகியவற்றில் கட்டுப்படுத்தப்படுகிறது. UPDATE_PCT
தனித்தனியாகவும் மிகவும் வசதியாகவும்: SLOB தானே, ஏற்ற அமர்வுக்கு முன்னும் பின்னும் - ஒரு statspack அல்லது awr-snapshots (தயாரிக்கப்பட வேண்டியவை) தயாரிக்கிறது.

இருப்பினும், அது மாறியது 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

ஆய்வக வேலைக்குத் திரும்புதல்.
மற்ற விஷயங்கள் சமமாக இருப்பதால், ஆய்வக துணைத் தரவுத்தளத்தின் பின்வரும் அளவுருக்களின் மதிப்புகளை மாற்றுவோம்:

  1. தரவுத்தள பதிவு குழுக்களின் அளவு. மதிப்பு வரம்பு: [32, 1024] MB;
  2. தரவுத்தளத்தில் உள்ள பத்திரிகை குழுக்களின் எண்ணிக்கை. மதிப்பு வரம்பு: [2,32];
  3. log_archive_max_processes மதிப்பு வரம்பு: [1,8];
  4. commit_logging இரண்டு மதிப்புகள் அனுமதிக்கப்படுகின்றன: batch|immediate;
  5. commit_wait இரண்டு மதிப்புகள் அனுமதிக்கப்படுகின்றன: wait|nowait;
  6. log_buffer மதிப்பு வரம்பு: [2,128] MB.
  7. log_checkpoint_timeout மதிப்பு வரம்பு: [60,1200] வினாடிகள்
  8. db_writer_processes மதிப்பு வரம்பு: [1,4]
  9. undo_retention மதிப்பு வரம்பு: [30;300] வினாடிகள்
  10. transactions_per_rollback_segment மதிப்பு வரம்பு: [1,8]
  11. disk_asynch_io இரண்டு மதிப்புகள் அனுமதிக்கப்படுகின்றன: true|false;
  12. filesystemio_options பின்வரும் மதிப்புகள் அனுமதிக்கப்படுகின்றன: none|setall|directIO|asynch;
  13. db_block_checking பின்வரும் மதிப்புகள் அனுமதிக்கப்படுகின்றன: OFF|LOW|MEDIUM|FULL;
  14. db_block_checksum பின்வரும் மதிப்புகள் அனுமதிக்கப்படுகின்றன: OFF|TYPICAL|FULL;

ஆரக்கிள் தரவுத்தளங்களை பராமரிப்பதில் அனுபவமுள்ள ஒருவர், குறிப்பிட்ட அளவுருக்கள் மற்றும் அவற்றின் ஏற்றுக்கொள்ளக்கூடிய மதிப்புகள் ஆகியவற்றிலிருந்து, தரவுத்தளத்தின் அதிக உற்பத்தித்திறனைப் பெற, குறிப்பிட்ட அளவுருக்களிலிருந்து என்ன, என்ன மதிப்புகள் அமைக்கப்பட வேண்டும் என்பதை ஏற்கனவே சொல்ல முடியும். விண்ணப்பக் குறியீடு, இங்கே மேலே.

ஆனால்.

ஆய்வக வேலையின் முக்கிய அம்சம் என்னவென்றால், தேர்வுமுறை அல்காரிதம் இதை ஒப்பீட்டளவில் விரைவாக நமக்கு தெளிவுபடுத்தும்.

எங்களைப் பொறுத்தவரை, தனிப்பயனாக்கக்கூடிய அமைப்பின் மூலம் ஆவணத்தைப் பார்ப்பதே எஞ்சியிருக்கும், எந்த அளவுருக்களை மாற்ற வேண்டும் மற்றும் எந்த வரம்புகளில் என்பதைக் கண்டறிய போதுமானது.
மேலும்: தேர்ந்தெடுக்கப்பட்ட தேர்வுமுறை அல்காரிதத்தின் தனிப்பயன் அமைப்புடன் வேலை செய்யப் பயன்படுத்தப்படும் குறியீட்டைக் குறியிடவும்.

எனவே, இப்போது குறியீடு பற்றி.
நான் மேலே பேசினேன் 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 subroutine பண்புக்கூறுகள் ga அடிப்படையில், தேடல் இடத்தின் ஒரு பகுதி குறிப்பிடப்பட்டுள்ளது, அதற்குள் அத்தகைய திசையன் (அல்லது திசையன்கள்) க்கான ஒரு தேடல் செய்யப்படும், அதற்காக உடற்பயிற்சி செயல்பாட்டின் அதிகபட்ச மதிப்பு பெறப்படும்.

ga சப்ரூட்டின் ஃபிட்னஸ் செயல்பாட்டை அதிகப்படுத்தும் தேடலைச் செய்கிறது.

சரி, அப்படியானால், இந்த விஷயத்தில், உடற்பயிற்சி செயல்பாடு, சப்டியின் சில அளவுருக்களுக்கான மதிப்புகளின் தொகுப்பாக வெக்டரைப் புரிந்துகொள்வது, சப்டியிலிருந்து ஒரு மெட்ரிக்கைப் பெறுவது அவசியம் என்று மாறிவிடும்.

அதாவது: கொடுக்கப்பட்ட சப்டி அமைப்பு மற்றும் சப்டியில் கொடுக்கப்பட்ட சுமையுடன் எத்தனை: சப்டி வினாடிக்கு பரிவர்த்தனைகளைச் செய்கிறது.

அதாவது, விரிவடையும் போது, ​​உடற்பயிற்சி செயல்பாட்டிற்குள் பின்வரும் பல-படிகள் செய்யப்பட வேண்டும்:

  1. எண்களின் உள்ளீட்டு திசையன் செயலாக்கம் - துணை தரவு அளவுருக்களுக்கான மதிப்புகளாக மாற்றுகிறது.
  2. கொடுக்கப்பட்ட அளவின் குறிப்பிட்ட எண்ணிக்கையிலான ரெடோ குழுக்களை உருவாக்கும் முயற்சி. மேலும், முயற்சி வெற்றியடையாமல் போகலாம்.
    சோதனையின் தூய்மைக்காக, சப்டியில் ஏற்கனவே இருந்த இதழ் குழுக்கள், சில அளவு மற்றும் சில அளவுகளில் - டி.பி. நீக்கப்பட்டது.
  3. முந்தைய புள்ளி வெற்றிகரமாக இருந்தால்: தரவுத்தளத்தில் உள்ளமைவு அளவுருக்களின் மதிப்புகளைக் குறிப்பிடுதல் (மீண்டும்: ஒரு தோல்வி இருக்கலாம்)
  4. முந்தைய படி வெற்றிகரமாக இருந்தால்: subd ஐ நிறுத்துதல், subd ஐ தொடங்குதல், இதனால் புதிதாக குறிப்பிடப்பட்ட அளவுரு மதிப்புகள் செயல்படும். (மீண்டும்: ஒரு தடுமாற்றம் இருக்கலாம்)
  5. முந்தைய படி வெற்றிகரமாக இருந்தால்: ஒரு சுமை சோதனை செய்யவும். subd இலிருந்து அளவீடுகளைப் பெறுங்கள்.
  6. சப்டியை அதன் அசல் நிலைக்குத் திரும்பு, அதாவது. கூடுதல் பதிவு குழுக்களை நீக்கவும், அசல் துணை தரவுத்தள உள்ளமைவை வேலை செய்ய திரும்பவும்.

உடற்பயிற்சி செயல்பாடு குறியீடு

evaluate=function(p_par) {
v_module="evaluate"
v_metric=0
opn=NULL
opn$rg_size=round(p_par[1],digit=0)
opn$rg_count=round(p_par[2],digit=0)
opn$log_archive_max_processes=round(p_par[3],digit=0)
opn$commit_logging="BATCH"
if ( round(p_par[4],digit=0) > 5 ) {
 opn$commit_logging="IMMEDIATE"
}
opn$commit_logging=paste("'", opn$commit_logging, "'",sep="")

opn$commit_wait="WAIT"
if ( round(p_par[5],digit=0) > 5 ) {
 opn$commit_wait="NOWAIT"
}
opn$commit_wait=paste("'", opn$commit_wait, "'",sep="")

opn$log_buffer=paste(round(p_par[6],digit=0),"m",sep="")
opn$log_checkpoint_timeout=round(p_par[7],digit=0)
opn$db_writer_processes=round(p_par[8],digit=0)
opn$undo_retention=round(p_par[9],digit=0)
opn$transactions_per_rollback_segment=round(p_par[10],digit=0)
opn$disk_asynch_io="true"
if ( round(p_par[11],digit=0) > 5 ) {
 opn$disk_asynch_io="false"
} 

opn$filesystemio_options="none"
if ( round(p_par[12],digit=0) > 10 && round(p_par[12],digit=0) <= 20 ) {
 opn$filesystemio_options="setall"
}
if ( round(p_par[12],digit=0) > 20 && round(p_par[12],digit=0) <= 30 ) {
 opn$filesystemio_options="directIO"
}
if ( round(p_par[12],digit=0) > 30 ) {
 opn$filesystemio_options="asynch"
}

opn$db_block_checking="OFF"
if ( round(p_par[13],digit=0) > 10 && round(p_par[13],digit=0) <= 20 ) {
 opn$db_block_checking="LOW"
}
if ( round(p_par[13],digit=0) > 20 && round(p_par[13],digit=0) <= 30 ) {
 opn$db_block_checking="MEDIUM"
}
if ( round(p_par[13],digit=0) > 30 ) {
 opn$db_block_checking="FULL"
}

opn$db_block_checksum="OFF"
if ( round(p_par[14],digit=0) > 10 && round(p_par[14],digit=0) <= 20 ) {
 opn$db_block_checksum="TYPICAL"
}
if ( round(p_par[14],digit=0) > 20 ) {
 opn$db_block_checksum="FULL"
}

v_vector=paste(round(p_par[1],digit=0),round(p_par[2],digit=0),round(p_par[3],digit=0),round(p_par[4],digit=0),round(p_par[5],digit=0),round(p_par[6],digit=0),round(p_par[7],digit=0),round(p_par[8],digit=0),round(p_par[9],digit=0),round(p_par[10],digit=0),round(p_par[11],digit=0),round(p_par[12],digit=0),round(p_par[13],digit=0),round(p_par[14],digit=0),sep=";")
cat( paste(v_module," try to evaluate vector: ", v_vector,sep="") , file=v_logfile, sep="n", append=T)

rc=make_additional_rgroups(opn)
if ( rc!=0 ) {
 cat( paste(v_module,"make_additional_rgroups failed",sep="") , file=v_logfile, sep="n", append=T)
 return (0)
}

v_rc=0
rc=set_db_parameter("log_archive_max_processes", opn$log_archive_max_processes)
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("commit_logging", opn$commit_logging )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("commit_wait", opn$commit_wait )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("log_buffer", opn$log_buffer )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("log_checkpoint_timeout", opn$log_checkpoint_timeout )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("db_writer_processes", opn$db_writer_processes )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("undo_retention", opn$undo_retention )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("transactions_per_rollback_segment", opn$transactions_per_rollback_segment )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("disk_asynch_io", opn$disk_asynch_io )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("filesystemio_options", opn$filesystemio_options )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("db_block_checking", opn$db_block_checking )
if ( rc != 0 ) {  v_rc=1 }
rc=set_db_parameter("db_block_checksum", opn$db_block_checksum )
if ( rc != 0 ) {  v_rc=1 }

if ( rc!=0 ) {
 cat( paste(v_module," can not startup db with that vector of settings",sep="") , file=v_logfile, sep="n", append=T)
 rc=stop_db("immediate")
 rc=create_spfile()
 rc=start_db("")
 rc=remove_additional_rgroups(opn)
 return (0)
}

rc=stop_db("immediate")
rc=start_db("")
if ( rc!=0 ) {
 cat( paste(v_module," can not startup db with that vector of settings",sep="") , file=v_logfile, sep="n", append=T)
 rc=stop_db("abort")
 rc=create_spfile()
 rc=start_db("")
 rc=remove_additional_rgroups(opn)
 return (0)
}

rc=run_test()
v_metric=getmetric()

rc=stop_db("immediate")
rc=create_spfile()
rc=start_db("")
rc=remove_additional_rgroups(opn)

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

அந்த. அனைத்து வேலைகளும்: உடற்பயிற்சி செயல்பாட்டில் செய்யப்படுகிறது.

ga-subroutine ஆனது திசையன்களை அல்லது, இன்னும் சரியாக, குரோமோசோம்களை செயலாக்குகிறது.
இதில், உடற்பயிற்சி செயல்பாடு பெரிய மதிப்புகளை உருவாக்கும் மரபணுக்களைக் கொண்ட குரோமோசோம்களைத் தேர்ந்தெடுப்பது நமக்கு மிகவும் முக்கியமானது.

இது, சாராம்சத்தில், N- பரிமாண தேடல் இடத்தில் ஒரு திசையன் பயன்படுத்தி குரோமோசோம்களின் உகந்த தொகுப்பைத் தேடும் செயல்முறையாகும்.

மிகத் தெளிவாக, விரிவாக விளக்கம், R-குறியீட்டின் எடுத்துக்காட்டுகளுடன், ஒரு மரபணு அல்காரிதம் வேலை.

இரண்டு தொழில்நுட்ப புள்ளிகளை நான் தனித்தனியாக கவனிக்க விரும்புகிறேன்.

செயல்பாட்டிலிருந்து துணை அழைப்புகள் evaluate, எடுத்துக்காட்டாக, ஸ்டாப்-ஸ்டார்ட், சப்டி அளவுருவின் மதிப்பை அமைத்தல், அடிப்படையில் செய்யப்படுகிறது cran-r செயல்பாடுகள் system2

இதன் உதவியுடன்: சில பாஷ் ஸ்கிரிப்ட் அல்லது கட்டளை அழைக்கப்படுகிறது.

உதாரணமாக:

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

இரண்டாவது புள்ளி வரி, evaluate செயல்பாடுகள், ஒரு குறிப்பிட்ட மெட்ரிக் மதிப்பு மற்றும் அதனுடன் தொடர்புடைய டியூனிங் வெக்டரை பதிவு கோப்பில் சேமிக்கிறது:

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

இது முக்கியமானது, ஏனெனில் இந்த தரவு வரிசையிலிருந்து, ட்யூனிங் வெக்டரின் கூறுகளில் எந்த மெட்ரிக் மதிப்பில் அதிக அல்லது குறைவான விளைவைக் கொண்டுள்ளது என்பது பற்றிய கூடுதல் தகவலைப் பெற முடியும்.

அதாவது: பண்பு-முக்கியத்துவ பகுப்பாய்வு நடத்த முடியும்.

அதனால் என்ன நடக்கலாம்?

வரைபட வடிவத்தில், நீங்கள் சோதனைகளை ஏறுவரிசை மெட்ரிக் வரிசையில் ஆர்டர் செய்தால், படம் பின்வருமாறு:

அறிவியல் குத்து முறை, அல்லது வரையறைகள் மற்றும் ஒரு தேர்வுமுறை அல்காரிதம் பயன்படுத்தி தரவுத்தள உள்ளமைவை எவ்வாறு தேர்ந்தெடுப்பது

மெட்ரிக் தீவிர மதிப்புகளுடன் தொடர்புடைய சில தரவு:
அறிவியல் குத்து முறை, அல்லது வரையறைகள் மற்றும் ஒரு தேர்வுமுறை அல்காரிதம் பயன்படுத்தி தரவுத்தள உள்ளமைவை எவ்வாறு தேர்ந்தெடுப்பது
இங்கே, முடிவுகளுடன் கூடிய ஸ்கிரீன்ஷாட்டில், நான் தெளிவுபடுத்துகிறேன்: டியூனிங் வெக்டரின் மதிப்புகள் ஃபிட்னஸ் செயல்பாட்டுக் குறியீட்டின் அடிப்படையில் கொடுக்கப்பட்டுள்ளன, அளவுருக்கள் / அளவுரு மதிப்புகளின் வரம்புகளின் எண்ணிக்கை பட்டியலின் அடிப்படையில் அல்ல. உரையில் மேலே.

சரி. இது நிறைய அல்லது சிறியதா, ~8 ஆயிரம் டிபிஎஸ்: ஒரு தனி கேள்வி.
ஆய்வக வேலையின் கட்டமைப்பிற்குள், இந்த எண்ணிக்கை முக்கியமல்ல, முக்கியமானது இயக்கவியல், இந்த மதிப்பு எவ்வாறு மாறுகிறது.

இங்கே இயக்கவியல் நன்றாக இருக்கிறது.
குரோமோசோம் திசையன்கள் மூலம் வரிசைப்படுத்தப்படும் மெட்ரிக், ga-அல்காரிதம் மதிப்பை குறைந்தபட்சம் ஒரு காரணி கணிசமாக பாதிக்கிறது என்பது வெளிப்படையானது.
வளைவு மதிப்புகளின் மிகவும் தீவிரமான இயக்கவியல் மூலம் ஆராயும்போது, ​​குறைந்த பட்சம் இன்னும் ஒரு காரணி உள்ளது, அது குறிப்பிடத்தக்க அளவு சிறியதாக இருந்தாலும், செல்வாக்கு செலுத்துகிறது.

இது உங்களுக்கு தேவையான இடம் attribute-importance என்ன பண்புக்கூறுகள் (சரி, இந்த விஷயத்தில், ட்யூனிங் வெக்டரின் கூறுகள்) மற்றும் அவை மெட்ரிக் மதிப்பை எவ்வளவு பாதிக்கின்றன என்பதைப் புரிந்துகொள்வதற்கான பகுப்பாய்வு.
இந்த தகவலிலிருந்து: குறிப்பிடத்தக்க பண்புகளில் ஏற்படும் மாற்றங்களால் என்ன காரணிகள் பாதிக்கப்பட்டன என்பதைப் புரிந்து கொள்ளுங்கள்.

செயல்படுத்த attribute-importance வெவ்வேறு வழிகளில் சாத்தியம்.

இந்த நோக்கங்களுக்காக, நான் அல்காரிதம் விரும்புகிறேன் randomForest அதே பெயரில் ஆர் தொகுப்பு (ஆவணங்கள்)
randomForest, பொதுவாக அவரது பணி மற்றும் குறிப்பாக பண்புகளின் முக்கியத்துவத்தை மதிப்பிடுவதற்கான அவரது அணுகுமுறையை நான் புரிந்துகொள்வதால், பண்புகளின் மீது பதில் மாறியின் சார்பு ஒரு குறிப்பிட்ட மாதிரியை உருவாக்குகிறது.

எங்கள் விஷயத்தில், பதில் மாறி என்பது சுமை சோதனைகளில் தரவுத்தளத்திலிருந்து பெறப்பட்ட மெட்ரிக் ஆகும்: tps;
மற்றும் பண்புக்கூறுகள் ட்யூனிங் வெக்டரின் கூறுகள்.

அதனால் randomForest ஒவ்வொரு மாதிரி பண்புக்கூறின் முக்கியத்துவத்தை இரண்டு எண்களுடன் மதிப்பிடுகிறது: %IncMSE — ஒரு மாதிரியில் இந்தப் பண்புக்கூறின் இருப்பு/இல்லாதது இந்த மாதிரியின் MSE தரத்தை எவ்வாறு மாற்றுகிறது (சராசரி சதுரப் பிழை);

மேலும் IncNodePurity என்பது இந்த பண்புக்கூறின் மதிப்புகளின் அடிப்படையில், அவதானிப்புகளுடன் கூடிய தரவுத்தொகுப்பை எவ்வளவு நன்றாகப் பிரிக்க முடியும் என்பதைப் பிரதிபலிக்கும் ஒரு எண்ணாகும், இதனால் ஒரு பகுதியில் மெட்ரிக் ஒரு மதிப்புடன் தரவு உள்ளது, மற்றொன்று விளக்கப்பட்டுள்ளது. அளவீட்டின் மற்றொரு மதிப்பு.
சரி, அதாவது: இது எந்த அளவிற்கு வகைப்படுத்தும் பண்பு (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, புள்ளி முக்கியமல்ல.

இதன் விளைவாக, இந்த விஷயத்தில், பண்புகளின் முக்கியத்துவத்தின் அளவை மதிப்பிடுவதற்கு பின்வரும் முடிவு பெறப்படுகிறது:

அறிவியல் குத்து முறை, அல்லது வரையறைகள் மற்றும் ஒரு தேர்வுமுறை அல்காரிதம் பயன்படுத்தி தரவுத்தள உள்ளமைவை எவ்வாறு தேர்ந்தெடுப்பது

சரி. எனவே, உலகளாவிய பிரதிபலிப்பை நாம் தொடங்கலாம்:

  1. இந்த சோதனை நிலைமைகளின் கீழ், மிக முக்கியமான அளவுரு என்று மாறிவிடும் commit_wait
    தொழில்நுட்ப ரீதியாக, இது subdb log buffer இலிருந்து தற்போதைய பதிவுக் குழுவிற்கு redo தரவை எழுதும் io செயல்பாட்டின் செயல்படுத்தும் முறையைக் குறிப்பிடுகிறது: ஒத்திசைவு அல்லது ஒத்திசைவற்றது.
    மதிப்பு nowait இது கிட்டத்தட்ட செங்குத்து, tps மெட்ரிக் மதிப்பில் பல அதிகரிப்பு: இது redo குழுக்களில் ஒத்திசைவற்ற io பயன்முறையைச் சேர்ப்பதாகும்.
    உணவு தரவுத்தளத்தில் இதைச் செய்ய வேண்டுமா இல்லையா என்பது ஒரு தனி கேள்வி. இங்கே நான் கூறுவதற்கு வரம்பிடுகிறேன்: இது ஒரு குறிப்பிடத்தக்க காரணி.
  2. subd இன் பதிவு இடையகத்தின் அளவு ஒரு குறிப்பிடத்தக்க காரணியாக மாறும் என்பது தர்க்கரீதியானது.
    பதிவு இடையகத்தின் அளவு சிறியது, அதன் தாங்கல் திறன் குறைவாக இருக்கும், மேலும் அடிக்கடி அது நிரம்பி வழிகிறது மற்றும்/அல்லது புதிய ரெடாக்ஸ் தரவின் ஒரு பகுதிக்கு அதில் ஒரு இலவச பகுதியை ஒதுக்க இயலாமை.
    இதன் பொருள்: பதிவு இடையகத்தில் இடம் ஒதுக்குவது மற்றும்/அல்லது அதிலிருந்து மீண்டும் செய் தரவை மீண்டும் செய் குழுக்களில் டம்ப் செய்வது தொடர்பான தாமதங்கள்.
    இந்த தாமதங்கள், நிச்சயமாக, பரிவர்த்தனைகளுக்கான தரவுத்தளத்தின் செயல்திறனை பாதிக்க வேண்டும்.
  3. அளவுரு db_block_checksum: சரி, மேலும், பொதுவாக இது தெளிவாக உள்ளது - பரிவர்த்தனை செயலாக்கமானது துணை தரவுத்தளத்தின் இடையக தற்காலிக சேமிப்பில் டார்ட்டி பிளாக்குகளை உருவாக்க வழிவகுக்கிறது.
    டேட்டா பிளாக்குகளின் செக்சம்களை சரிபார்க்கும் போது, ​​தரவுத்தளமானது செயலாக்க வேண்டும் - டேட்டா பிளாக்கின் உடலில் இருந்து இந்த செக்சம்களை கணக்கிடுங்கள், டேட்டா பிளாக் ஹெடரில் எழுதப்பட்டுள்ளதைக் கொண்டு அவற்றைச் சரிபார்க்கவும்: பொருத்தங்கள்/பொருந்தவில்லை.
    அத்தகைய வேலை, மீண்டும், தரவு செயலாக்கத்தை தாமதப்படுத்த முடியாது, அதன்படி, இந்த அளவுருவை அமைக்கும் அளவுரு மற்றும் பொறிமுறையானது குறிப்பிடத்தக்கதாக மாறும்.
    அதனால்தான், விற்பனையாளர் இந்த அளவுருவிற்கான ஆவணத்தில், அதற்கான வெவ்வேறு மதிப்புகளை (அளவுரு) வழங்குகிறார் மற்றும் ஆம், ஒரு தாக்கம் இருக்கும் என்று குறிப்பிடுகிறார், ஆனால், நீங்கள் வெவ்வேறு மதிப்புகளைத் தேர்வு செய்யலாம், "ஆஃப்" மற்றும் வெவ்வேறு தாக்கங்கள்.

சரி, ஒரு உலகளாவிய முடிவு.

அணுகுமுறை, பொதுவாக, மிகவும் வேலை செய்கிறது.

ஒரு குறிப்பிட்ட சேவை அமைப்பின் சுமை சோதனையின் ஆரம்ப கட்டங்களில், சுமைக்கான அதன் (அமைப்பு) உகந்த உள்ளமைவைத் தேர்ந்தெடுப்பதற்காக, சுமைக்கான அமைப்பை அமைப்பதற்கான பிரத்தியேகங்களை அதிகம் ஆராயாமல், அவர் தன்னை அனுமதிக்கிறார்.

ஆனால் அது அதை முழுவதுமாக விலக்கவில்லை - குறைந்தபட்சம் புரிதல் மட்டத்திலாவது: “சரிசெய்தல் கைப்பிடிகள்” மற்றும் இந்த கைப்பிடிகளின் சுழற்சியின் அனுமதிக்கப்பட்ட வரம்புகள் பற்றி கணினி அறிந்திருக்க வேண்டும்.

அணுகுமுறையானது ஒப்பீட்டளவில் விரைவாக உகந்த அமைப்பு உள்ளமைவைக் கண்டறிய முடியும்.
சோதனை முடிவுகளின் அடிப்படையில், கணினி செயல்திறன் அளவீடுகள் மற்றும் கணினி அமைப்புகளின் அளவுருக்களின் மதிப்புகளுக்கு இடையிலான உறவின் தன்மை பற்றிய தகவல்களைப் பெற முடியும்.

இது, நிச்சயமாக, அமைப்பு, அதன் செயல்பாடு, குறைந்தபட்சம் கொடுக்கப்பட்ட சுமையின் கீழ் இந்த மிக ஆழமான புரிதலின் தோற்றத்திற்கு பங்களிக்க வேண்டும்.

நடைமுறையில், இது கணினியின் அத்தகைய சோதனையைத் தயாரிப்பதற்கான செலவினங்களுக்கான தனிப்பயனாக்கப்பட்ட அமைப்பைப் புரிந்துகொள்வதற்கான செலவுகளின் பரிமாற்றமாகும்.

நான் தனித்தனியாக கவனிக்க விரும்புகிறேன்: இந்த அணுகுமுறையில், வணிகச் செயல்பாட்டில் இருக்கும் இயக்க நிலைமைகளுக்கு கணினி சோதனையின் போதுமான அளவு மிகவும் முக்கியமானது.

உங்கள் கவனத்திற்கும் நேரத்திற்கும் நன்றி.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்