2017-04-03 8 views
2

테이블에 백만 행이 있다고 가정합니다. 열에서 플래그를 true에서 false로 바꾸고 싶습니다. 단일 성명서로 스패너에서 어떻게 수행합니까?Bulk Update 백만 행

즉, 다음 DML 문을 수행하고 싶습니다.

업데이트 mytable 세트 myflag = true 여기서 1 = 1;

답변

1

SQuirreL 또는 SQL Workbench과 같은 표준 JDBC 도구와 함께 this open source JDBC driver을 사용할 수 있습니다. 이러한 도구를 사용하여 드라이버를 사용 방법에 대해 설명 여기를 보라 : http://www.googlecloudspanner.com/2017/10/using-standard-database-tools-with.html

JDBC 드라이버가 모두 DML- 및 DDL 명령문을 지원하므로이 문장은 아웃 - 오브 - 박스 작동합니다 :

Update mytable set myflag=true 

많은 수의 행에서 작동하는 DML 명령문이 지원되지만 Cloud Spanner의 기본 트랜잭션 할당량 (한 트랜잭션에서 최대 20,000 개의 변형)이 계속 적용됩니다. AllowExtendedMode = true 연결 속성을 설정하여이를 무시할 수 있습니다 (드라이버의 Wiki 페이지 참조). 이렇게하면 큰 업데이트가 여러 개의 작은 업데이트로 나뉘어져 각각의 트랜잭션이 자체 트랜잭션에서 실행됩니다. 또한 업데이트 구문을 여러 다른 부분으로 나눠서 일괄 처리 할 수도 있습니다.

2

Cloud Spanner는 현재 DML을 지원하지 않지만 대량 돌연변이를 허용하는 Dataflow 커넥터 (Apache Beam)를 개발 중입니다.