afv-library/skills/platform-data-manage/references/governor-limits-reference.md

1.8 KiB

Governor Limits Reference

Essential limits for Salesforce data operations.

SOQL Limits

Limit Synchronous Asynchronous
Total queries 100 200
Rows retrieved 50,000 50,000
QueryLocator rows N/A 50,000,000
Query timeout 120 seconds 120 seconds

DML Limits

Limit Synchronous Asynchronous
DML statements 150 150
Rows processed 10,000 10,000

CPU and Memory

Limit Synchronous Asynchronous
CPU time 10,000 ms 60,000 ms
Heap size 6 MB 12 MB

Bulk API Limits

Limit Value
Batches per 24 hours 10,000
Records per 24 hours 10,000,000
Max file size 100 MB
Concurrent jobs 100

Staying Within Limits

SOQL Best Practices

// BAD: Query in loop
for (Account acc : accounts) {
    List<Contact> cons = [SELECT Id FROM Contact WHERE AccountId = :acc.Id];  // ❌
}

// GOOD: Single query with relationship
List<Account> accs = [
    SELECT Id, (SELECT Id FROM Contacts)
    FROM Account
    WHERE Id IN :accountIds
];  // ✓

DML Best Practices

// BAD: DML in loop
for (Account acc : accounts) {
    update acc;  // ❌
}

// GOOD: Bulk DML
update accounts;  // ✓

Monitoring Limits

System.debug('SOQL Queries: ' + Limits.getQueries() + '/' + Limits.getLimitQueries());
System.debug('DML Statements: ' + Limits.getDmlStatements() + '/' + Limits.getLimitDmlStatements());
System.debug('DML Rows: ' + Limits.getDmlRows() + '/' + Limits.getLimitDmlRows());
System.debug('CPU Time: ' + Limits.getCpuTime() + '/' + Limits.getLimitCpuTime());
System.debug('Heap Size: ' + Limits.getHeapSize() + '/' + Limits.getLimitHeapSize());