DML

BigQuery DML을 사용하면 BigQuery 테이블에서 데이터를 업데이트, 삽입, 삭제할 수 있습니다.

다음 조건에 따라 SELECT 문을 실행할 때와 같은 방식으로 DML 문을 실행할 수 있습니다.

  • 표준 SQL을 사용해야 합니다. 표준 SQL을 사용 설정하려면 SQL 언어 전환을 참조하세요.
  • 대상 테이블을 지정할 수 없습니다. 예를 들어 웹 UI에서 대상 테이블선택된 테이블 없음으로 설정해야 합니다.

    대상 테이블이 선택되지 않은 것을 보여주는 BigQuery 웹 UI

제한사항

  • 각 DML 문은 암시적 트랜잭션을 시작합니다. 즉, 각 DML 문이 성공적으로 종료될 때마다 문에서 발생한 변경사항이 자동으로 커밋됩니다. 멀티 문 트랜잭션은 지원되지 않습니다.

  • 최근에 스트리밍(tabledata.insertall 메서드 사용)을 통해 테이블에 기록된 행은 UPDATE, DELETE, MERGE 문을 사용하여 수정할 수 없습니다. 일반적으로 최근 쓰기 작업은 최근 30분 내에 발생한 작업입니다. 테이블에 있는 다른 모든 행은 UPDATE, DELETE 또는 MERGE 문을 사용해서 수정 가능한 상태로 유지됩니다.

  • when_clause, search_condition, merge_update_clause, merge_insert_clause 내의 상관 서브 쿼리는 MERGE 문에 지원되지 않습니다.

  • DML 문을 포함하는 쿼리는 와일드 카드 테이블을 쿼리 대상으로 사용할 수 없습니다. 예를 들어 와일드 카드 테이블은 UPDATE 쿼리의 FROM 절에서 사용할 수 있지만 와일드 카드 테이블을 UPDATE 작업의 대상으로 사용할 수는 없습니다.

동시 작업

BigQuery는 테이블의 행을 추가, 수정 또는 삭제하는 DML 문의 동시 실행을 관리합니다.

INSERT DML 동시 실행

24시간 동안 테이블로 INSERT되는 처음 1,000개의 문이 동시에 실행됩니다. 이 한도에 도달하면 테이블에 쓰는 INSERT 문의 동시 실행이 10개로 제한됩니다. 10개를 초과하는 모든 INSERT DML 작업은 PENDING 상태로 큐에 추가됩니다. 이전 작업이 완료되면 다음 PENDING 작업이 큐에서 제거되고 실행됩니다. 현재 특정 테이블에 대해 큐에 추가될 수 있는 INSERT DML 문은 최대 100개입니다.

UPDATE, DELETE, MERGE DML 동시 실행

UPDATE, DELETE, MERGE DML 문을 변형 DML 문이라고 합니다. 테이블에 둘 이상의 변형 DML 문을 동시에 제출하면 BigQuery는 이 중 고정된 수의 문을 동시에 실행합니다. 해당 테이블에 대한 추가 변형 DML 작업은 자동으로 PENDING 상태로 큐에 추가됩니다. 이전에 실행 중인 작업이 완료되면 다음 PENDING 작업이 큐에서 제거되고 실행됩니다.

6시간 넘게 큐에 있는 INTERACTIVE 우선순위 DML 작업은 실패합니다.

DML 문 충돌

테이블에서 동시에 변형 DML 문을 실행하면 변경사항이 충돌하여 실패할 수 있습니다. BigQuery는 이러한 실패를 다시 시도합니다.

  • 테이블에 행을 삽입하는 INSERT DML 문은 동시에 실행되는 다른 DML 문과 충돌하지 않습니다.

  • UPDATE 또는 DELETE 절이 없고 INSERT 절만 포함된 MERGE DML 문은 동시에 실행되는 다른 DML 문과 충돌하지 않습니다.

  • MERGE 문이 기존 행을 업데이트하거나 삭제하지 않는 한 UPDATE 또는 DELETE 절을 포함하는 MERGE DML 문은 동시에 실행되는 다른 DML 문과 충돌하지 않습니다.

가격 책정

DML 가격 책정에 대한 자세한 내용은 가격 책정 페이지의 DML 가격 책정을 참조하세요.

다음 단계

  • DML 구문 페이지에서 DML 구문과 샘플을 참조하세요.