சேல்ஸ்ஃபோர்ஸ் அபெக்ஸ் - கவர்னர் லிமிட்ஸ்

Celshpors Apeks Kavarnar Limits



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

கவர்னர் வரம்புகள்

அலிஷ் மற்றும் சுபாஷ் இருவரும் சேல்ஸ்ஃபோர்ஸ் ஆர்கனைப் பயன்படுத்தும் ஒரு காட்சியைக் கவனியுங்கள். Alice ஒரு பரிவர்த்தனையில் 1000 DML அறிக்கைகளைச் செயல்படுத்த அல்லது செயல்படுத்த விரும்புகிறார். இதற்கு இணையாக, ஒரே நேரத்தில் 5000 பதிவுகளை ஏற்ற சுபாஷ் விரும்புகிறார். அவர்கள் அதை இணையாகச் செய்தால், சேல்ஸ்ஃபோர்ஸ் ஏற்றுக்கொள்ளாது மற்றும் பரபரப்பாக மாறும். எனவே, கவர்னர் வரம்புகள் படத்தில் வருகின்றன. இந்த நிலையில், அலிஷ் ஒரு நேரத்தில் 100 DML ஐ செயலாக்க முடியும் மற்றும் சுபாஷ் ஒரு நேரத்தில் 500 பதிவுகளை செயலாக்க முடியும். அவர்கள் AsynchronousBatch Apexஐப் பயன்படுத்தி, ஒவ்வொரு பரிவர்த்தனையையும் தனித்தனி நூலில் செய்து, அவை ஒவ்வொன்றையும் தொந்தரவு செய்யாமல், தங்கள் பணியை முடிக்க முடியும்.







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



அனுமதிக்கப்பட்ட வரம்புகள்

வெவ்வேறு காட்சிகளுக்கான வரம்பு எண்ணிக்கையைப் பற்றி விவாதிப்போம்:



  1. ஒத்திசைவான அபெக்ஸில் 100 SOQL வினவல்களையும், ஒத்திசைவற்ற அபெக்ஸில் 200 SOQL வினவல்களையும் செயலாக்க/இயக்க முடியும்.
  2. ஒரு SOQL வினவலில் இருந்து 50,000 பதிவுகள் மட்டுமே ஒத்திசைவு மற்றும் ஒத்திசைவற்ற உச்சநிலைக்கு வரும்.
  3. Database.getQueryLocator()ஐப் பயன்படுத்தினால், ஒரே நேரத்தில் 10,000 மட்டுமே ஒத்திசைவு மற்றும் ஒத்திசைவற்ற அபெக்ஸ் இரண்டிற்கும் வழங்கப்படும்.
  4. இரண்டு சூழ்நிலைகளிலும், வழங்கப்பட்ட SOSL வினவல்களின் எண்ணிக்கை 20 ஆகும்.
  5. ஒத்திசைவான அபெக்ஸைச் செயலாக்குவதற்குத் தேவைப்படும் குவியல் அளவு 6 MB ஆகும். ஒத்திசைவற்ற அபெக்ஸுக்கு, தேவைப்படும் குவியல் அளவு இரட்டிப்பாகும், இது 12 எம்பி ஆகும்.
  6. சின்க்ரோனஸ் அபெக்ஸுக்கு அதிகபட்ச CPU நேரம் 10,000 மில்லி விநாடிகள் மற்றும் ஒத்திசைவற்ற அபெக்ஸுக்கு 60,000 மில்லி விநாடிகள் ஆகும்.
  7. அபெக்ஸ் இரண்டிற்கும் 10 நிமிடங்கள் மட்டுமே செயல்படுத்த அனுமதிக்கப்படுகிறது.
  8. இரண்டு சந்தர்ப்பங்களிலும், 100 பெறுநர்களுடன் 10 sendEmail() முறையை மட்டுமே நாம் பயன்படுத்த முடியும்.
  9. Apex class அல்லது Apex தூண்டுதலில் இருக்கும் எழுத்துகள் 1 மில்லியனுக்குள்ளாக இருக்க வேண்டும்.
  10. பேட்ச் அபெக்ஸில் (ஒத்திசைவற்ற), அளவு 200. “டேட்டாபேஸ்” வகுப்பின் QueryLocator() ஒரு பரிவர்த்தனைக்கு 50 மில்லியன் பதிவுகளை வழங்குகிறது.
  11. 5 அபெக்ஸ் வேலைகள் மட்டுமே வரிசையில் அல்லது செயலில் இருக்கும்.

LIMIT வகுப்பு எடுத்துக்காட்டு:

'வரம்பு' வகுப்பில் கவர்னர் வரம்புகளை அபெக்ஸ் குறிப்பிடலாம். இந்த வகுப்பு ஆளுநருக்கு வரம்புகளைக் கூறும் சில முறைகளை வழங்குகிறது. சில கவர்னர் வரம்புகளைக் காட்டும் பின்வரும் உதாரணத்தைப் பார்ப்போம்:





System.debug('ஒட்டுமொத்த வினவல்களின் எண்ணிக்கை செயலாக்கப்படலாம்: '+ Limits.getLimitAggregateQueries());

System.debug('வலை சேவை அறிக்கைகளின் எண்ணிக்கை செயலாக்கப்படலாம்: '+ Limits.getLimitCallouts());

System.debug('பதிவுகளின் எண்ணிக்கை செயலாக்கப்படலாம்: '+ Limits.getLimitDmlRows());

System.debug('DML அறிக்கைகளின் எண்ணிக்கையை அழைக்கலாம்: '+ Limits.getLimitDmlStatements());

System.debug('பைட்டுகளில் உள்ள மொத்த நினைவக அளவு: '+ Limits.getLimitHeapSize());

System.debug('SOQL வினவல்களின் எண்ணிக்கை வழங்கப்படலாம்: '+ Limits.getLimitQueries());

System.debug('பதிவுகளின் எண்ணிக்கை வழங்கப்படலாம்: '+ Limits.getLimitQueryRows());

System.debug('SOSL வினவல்களின் எண்ணிக்கை வழங்கப்படலாம்:  '+ Limits.getLimitSoslQueries());

வெளியீடு:

'எல்ஐஎம்ஐடி' வகுப்பில் இருக்கும் 'டோம்' முறைகளைப் பயன்படுத்தி எத்தனை டிஎம்எல் அறிக்கைகள்/வரிசைகளை திரும்பப் பெறலாம் என்பதைச் சரிபார்க்கவும் முடியும்.



  1. Limits.getDMLStatements() ஒரு நிகழ்வில் பயன்படுத்தப்படும் மொத்த DML அறிக்கைகளை வழங்குகிறது.
  2. Limits.getDMLRows() DML அறிக்கைகள் மூலம் வழங்கப்படும் மொத்த வரிசைகளின் எண்ணிக்கையை வழங்குகிறது.
  3. Limits.getCpuTime() தற்போதைய பரிவர்த்தனைக்கான CPU பயன்படுத்தப்பட்ட நேரத்தை மில்லி விநாடிகளில் வழங்குகிறது.

பயன்பாட்டு உதாரணம்:

'WorkOrder' பொருளிலிருந்து இரண்டு பதிவுகளை வழங்கும் SOQL வினவலை எழுதுவோம். அதன் பிறகு, 'நீக்கு' DML ஐப் பயன்படுத்தி இந்த இரண்டு பதிவுகளையும் நீக்கவும்.

System.debug('DML அறிக்கைகள்:'+Limits.getDMLStatements());

System.debug('வரிசைகள்: '+Limits.getDmlRows());

System.debug('CPU நேரம் '+Limits.getCpuTime());

// SOQL வினவல் ஒர்க்ஆர்டர் பொருளிலிருந்து 2 வரிசைகளைத் தேர்ந்தெடுக்கவும்

பட்டியல் கணக்குகள் = [Workorder LIMIT 2 இலிருந்து ஐடியைத் தேர்ந்தெடுக்கவும்];

//இரண்டு வரிசைகளை நீக்க டெலிட் டிஎம்எல் பயன்படுத்தவும்

கணக்குகளை நீக்கு;

System.debug('**SOQL க்குப் பிறகு:**');

System.debug('DML அறிக்கைகள்:'+Limits.getDMLStatements());

System.debug('வரிசைகள்: '+Limits.getDmlRows());

System.debug('CPU நேரம் '+Limits.getCpuTime());

வெளியீடு:

கொடுக்கப்பட்ட எடுத்துக்காட்டில், DML அறிக்கைகள் மற்றும் 0 வரிசைகள் இல்லை. தற்போதுள்ள CPU நேரம் 1 மில்லி விநாடி. SOQL வினவலில் இருந்து 2 வரிசைகளைத் திருப்பி, இந்த இரண்டு வரிசைகளை நீக்கிய பிறகு, Limits.getDMLStatements() மூலம் வழங்கப்படும் DML அறிக்கைகளின் மொத்த எண்ணிக்கை 1, Limits.getDMLRows()  மூலம் வழங்கப்படும் மொத்த வரிசைகள் 2 மற்றும் CPU இந்த பரிவர்த்தனையை செயல்படுத்த தேவைப்படும் நேரம் 51 மில்லி விநாடிகள்.

சிறந்த பயிற்சி உதாரணம்:  “லூப் உள்ளே டிஎம்எல் பயன்படுத்த வேண்டாம்”

கவர்னர் வரம்பை பெறாமல் குறியீட்டை எவ்வாறு இயக்குவது என்று பார்ப்போம். முதலில் 'தயாரிப்பு' பொருளில் (API - Product2)  'WorkOrder' ஆப்ஜெக்டில் இருந்து 'வொர்க் ஆர்டர்' என்பதை 'தயாரிப்புப் பெயருக்கு' 'for' லூப்பிலேயே ஒதுக்குவதன் மூலம் ஒரு பதிவை உருவாக்குவோம். பின்வரும் குறியீட்டைப் பார்ப்போம்:

தயாரிப்பு2 prod_obj;

க்கு (Workorder wo_object : [ஒர்க் ஆர்டரில் இருந்து விஷயத்தைத் தேர்ந்தெடுக்கவும்])

{

prod_obj = புதிய தயாரிப்பு2(பெயர் = wo_object.Subject);

prod_obj செருகவும்;

}

ஒரு பட்டியலை (prod_s) அறிவித்து, பின்னர் பட்டியலில் prod_obj ஐ சேமிப்பதன் மூலம் இதை சிறந்த முறையில் செய்யலாம். இந்த பட்டியலை வளையத்திற்கு வெளியே உள்ள தயாரிப்பில் நாம் செருகலாம்.

பட்டியல் prod_s = புதிய பட்டியல்();

தயாரிப்பு2 prod_obj;

க்கு (Workorder wo_object : [ஒர்க் ஆர்டரில் இருந்து விஷயத்தைத் தேர்ந்தெடுக்கவும்])

{

prod_obj = புதிய தயாரிப்பு2(பெயர் = wo_object.Subject);

prod_s.add (prod_obj);

}

prod_obj செருகவும்;

முடிவுரை

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