Batch Apex:
Batch Apex is a very useful mechanism for running a single job that can be broken up into manageable chunks that will be processed separately. The batch processing will be done asynchronously in the back-end with out any user invocation, if a scheduler is set correctly. The most common scenario when we prefer batch will where we want to traverse through a large amount of records and process some complex business logic automatically. We can manage the issue with the apex governor limits that may occur while handling large data sets by running the batch in smaller chunks.
When to use Batch Apex:
The typical use of batch apex is when you want to do a bulk job, but if you do it in a regular apex you’re bound to hit the governor limits. Batch Classes process the set of records you pass to it in batches of maximum 200 per batch.