Governor limits are Salesforce’s way of forcing you to write efficient, scalable code.
The limits count for each Apex transaction. For Batch Apex, these limits are reset for each execution of a batch of records in the execute method.

This table lists limits for synchronous and asynchronous Apex (Batch Apex and future methods) when they’re different. Otherwise, this table lists only one limit that applies to both synchronous and asynchronous Apex.

Description

Synchronous Limit

Asynchronous Limit

Total number of SOQL queries issued (This limit doesn’t apply to custom metadata types. In a single Apex transaction, custom metadata records can have unlimited SOQL queries.)

100

200

Total number of records retrieved by SOQL queries

50000

Total number of records retrieved by Database.getQueryLocator

10000

Total number of SOSL queries issued

20

Total number of records retrieved by a single SOSL query

2000

Total number of DML statements issued

150

Total number of records processed as a result of DML statements, Approval.process, or database.emptyRecycleBin

10000

Total stack depth for any Apex invocation that recursively fires triggers due to insert, update, or delete statements

16

Total number of callouts (HTTP requests or Web services calls) in a transaction

100

Maximum cumulative timeout for all callouts (HTTP requests or Web services calls) in a transaction

120 seconds

Maximum number of methods with the future annotation allowed per Apex invocation

50

Maximum number of Apex jobs added to the queue with System.enqueueJob

50

Total number of sendEmail methods allowed

10

Total heap size4

6 MB

12 MB

Maximum CPU time on the Salesforce servers5

10,000 milliseconds

60,000 milliseconds

Maximum execution time for each Apex transaction

10 minutes

Maximum number of push notification method calls allowed per Apex transaction

10

Maximum number of push notifications that can be sent in each push notification method call

2000