Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발일지

Salesforce APEX Excetion Limit 모음 본문

Apex

Salesforce APEX Excetion Limit 모음

청일쓰 2025. 1. 22. 13:01

1. Apex 실행 제한 (Execution Limits)

1.1 CPU 시간 제한

  • 동기식 Apex에서 사용할 수 있는 CPU 시간은 최대 10초입니다.
  • 비동기식 Apex(@future, Queueable Apex, Batch Apex)의 경우 60초까지 사용할 수 있습니다.
  • CPU 시간 제한을 초과하면 System.LimitException이 발생합니다.

1.2 힙 메모리 제한 (Heap Size Limit)

  • 동기식 Apex6MB까지 힙 메모리를 사용할 수 있습니다.
  • 비동기식 Apex12MB까지 사용할 수 있습니다.
  • 이 제한을 초과하면 System.LimitException이 발생합니다.

1.3 SOQL 쿼리 제한 (SOQL Query Limit)

  • 한 트랜잭션 내에서 실행할 수 있는 SOQL 쿼리의 최대 수는 100번입니다.
  • 쿼리 수가 초과되면 System.LimitException이 발생합니다.

1.4 DML 작업 제한 (DML Operation Limit)

  • 150번의 DML 작업까지 허용됩니다. (insert, update, delete, undelete)
  • DML 작업을 150번 이상 실행하려 하면 System.LimitException이 발생합니다.

1.5 연속 호출 제한 (Recursive Trigger Limit)

  • 트리거가 연속적으로 호출될 수 있는 최대 횟수는 16번입니다.
  • 트리거가 연속적으로 호출되면 재귀 호출을 방지하는 재귀 제한을 초과할 수 있습니다.

2. 비동기 처리 (Asynchronous Limits)

Salesforce는 비동기 작업을 @future, Queueable Apex, Batch Apex 등 여러 방식으로 처리할 수 있습니다. 비동기 처리 작업에 대해서도 별도의 제한이 존재합니다.

2.1 비동기 작업 한도 (Asynchronous Apex Limits)

  • 비동기 Apex 실행 횟수: 하루에 250,000번의 비동기 Apex 작업을 실행할 수 있습니다.
  • 배치 작업 한도 (Batch Apex): 한 배치에서 처리할 수 있는 최대 레코드 수는 50,000개입니다.
  • Queueable Apex는 한 트랜잭션에서 최대 50번까지 실행할 수 있습니다.

비동기 작업을 남용하면 시스템이 과부하에 걸릴 수 있기 때문에 이를 적절히 분배하여 사용해야 합니다.

2.2 비동기 호출 및 콜아웃 제한 (Asynchronous Callouts)

  • 비동기 작업에서는 외부 시스템과 HTTP 호출(콜아웃)을 할 수 있습니다.
  • 한 트랜잭션 내에서 HTTP 콜아웃을 최대 100번까지 실행할 수 있습니다.

3. Apex 트리거 및 리스너 제한 (Trigger Limits)

Apex 트리거는 데이터 변경에 따른 로직을 실행하기 위해 사용됩니다. 트리거의 실행 횟수 및 호출 방식에도 제한이 있습니다.

3.1 트리거 실행 횟수

  • 한 트랜잭션에서 최대 1,000번의 트리거를 실행할 수 있습니다.
  • 너무 많은 트리거를 한 트랜잭션에서 실행하지 않도록 설계해야 합니다.

3.2 트리거 실행 순서

  • 트리거가 실행되는 순서는 Insert → Update → Delete → Undelete의 순서로 처리됩니다.
  • 여러 트리거가 동일한 객체에 대해 실행될 수 있으며, 그 순서에 따른 최적화를 고려해야 합니다.

4. Apex 코드에서의 제한

4.1 Apex 비동기 트랜잭션에서의 제한 (Asynchronous Limits)

  • @future 메서드는 동기적으로 실행되지만, 비동기적으로 실행되어야 할 때 사용됩니다. 한 트랜잭션에서 호출할 수 있는 @future 메서드의 최대 수50번입니다.

4.2 쿼리 및 트랜잭션 제한

  • DML 작업SOQL 쿼리가 초과되면 System.LimitException이 발생하며, 이로 인해 트랜잭션이 중단됩니다.
  • SELECT 문에서 다중 필드를 사용하는 경우, 처리할 수 있는 결과의 수행(row)의 개수가 제한됩니다.

5. 기타 제한

5.1 스케줄된 Apex (Scheduled Apex)

  • 스케줄된 Apex 작업을 예약할 수 있는 최대 개수는 100개입니다.
  • 예약된 작업은 특정 시간에 자동 실행되도록 예약됩니다.

5.2 동기 및 비동기 요청

  • 동기식 Apex 요청은 CPU 시간메모리 사용에 대한 제한이 있으며, 비동기식 Apex 요청은 좀 더 넉넉한 시간과 리소스를 할당받습니다

 

apex에서의 실행제한들을 미리 숙지하고 있으면  코드를 작성하는데 있어 올바른 코드를 사용할 수 있다.