2017년 8월 16일 수요일

[Cassandra 레퍼런스] [Data Manipulation] BATCH 문

이 문서는 개인적인 목적이나 배포하기 위해서 복사할 수 있다. 출력물이든 디지털 문서든 각 복사본에 어떤 비용도 청구할 수 없고 모든 복사본에는 이 카피라이트 문구가 있어야 한다.




BATCH

여러 개의 INSERT, UPDATE 및 DELETE는 BATCH 문을 통해 그룹화하여 단일 명령문에서 실행할 수 있습니다.

batch_statement        ::=  BEGIN [ UNLOGGED | COUNTER ] BATCH
                            [ USING update_parameter ( AND update_parameter )* ]
                            modification_statement ( ';' modification_statement )*
                            APPLY BATCH
modification_statement ::=  insert_statement | update_statement | delete_statement

예를 들어 :

BEGIN BATCH
   INSERT INTO users (userid, password, name) VALUES ('user2', 'ch@ngem3b', 'second user');
   UPDATE users SET password = 'ps22dhds' WHERE userid = 'user3';
   INSERT INTO users (userid, password) VALUES ('user4', 'ch@ngem3c');
   DELETE name FROM users WHERE userid = 'user1';
APPLY BATCH;

BATCH 문은 여러 수정 문 (삽입 / 업데이트 및 삭제)을 단일 문으로 그룹화하며, 다음과 같은 여러 가지 용도로 사용됩니다.

- 여러 개의 업데이트를 일괄 처리하며 클라이언트와 서버 간 (때로는 서버 코디네이터와 복제본 간) 네트워크 왕복을 절약합니다.

- 주어진 파티션 키에 속한 BATCH의 모든 업데이트는 독립적으로 수행됩니다.

- 기본적으로 일괄 처리의 모든 작업은 기록 된대로 수행되므로 모든 수정이 결국 완료됩니다 (또는 전혀 수행되지 않습니다). 자세한 내용은 UNLOGGED batch에 대한 참고 사항을 참조하십시오.

참고 사항 :

- BATCH 문은 UPDATE, INSERT 및 DELETE 문만 포함 할 수 있습니다 (예를 들어 다른 batch는 포함 불가).

- batch는 SQL 트랜잭션의 완전히 동일하지는 않습니다.

- 각 작업에 timestamp가 지정되어 있지 않으면 모든 작업이 동일한 timestamp (자동으로 생성 된 timestamp 또는 batch 수준에서 제공된 timestamp)와 함께 적용됩니다.

- 카산드라의 timestamp 충돌 해결 절차로 인해 작업은 BATCH 문에 나열된 순서와 다른 순서로 적용될 수 있습니다.

- 단일 파티션에 대한 LOGGED batch는 최적화된 UNLOGGED batch로 변환됩니다.


UNLOGGED batches

기본적으로 Cassandra는 batch log를 사용하여 batch의 모든 작업이 완료되거나 전혀 수행되지 않도록합니다 (단, 작업은 단일 파티션 내에서만 격리됩니다).

batch가 여러 파티션에 걸쳐있을 때 batch의 개별성에 의해서 성능 저하가 있습니다.
이 페널티를 원하지 않는다면 UNLOGGED 옵션으로 배치 로그를 건너 뛰도록 Cassandra에게 알릴 수 있습니다.
UNLOGGED 옵션을 사용하면 실패한 배치는 부분적으로 적용할 수 있는 patch를 남기게 됩니다.


COUNTER batches

배치 카운터 업데이트를 위해 COUNTER 옵션을 사용하십시오.


출처 : http://cassandra.apache.org/doc/latest/cql/dml.html

댓글 없음 :

댓글 쓰기