

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# 동시 쓰기 작업 관리
<a name="c_Concurrent_writes"></a>

일부 애플리케이션은 동시 쿼리 및 로드뿐 아니라 여러 테이블에 또는 같은 테이블 동시에 쓸 수 있는 능력이 필요합니다. 이 맥락에서 *동시에*는 정확히 같은 시간에 실행되도록 예약된 것을 말하는 것이 아니라 중첩된다는 뜻입니다. 첫 번째 트랜잭션이 커밋되기 전에 두 번째 트랜잭션이 시작된다면 두 트랜잭션은 동시적이라고 간주됩니다. 동시 작업은 같은 사용자 또는 서로 다른 사용자에 의해 제어되는 서로 다른 세션에서 비롯될 수 있습니다.

Amazon Redshift는 테이블이 증분적으로 로드되거나 수정되는 동안 테이블을 읽을 수 있도록 함으로써 이런 유형의 애플리케이션을 지원합니다. 쿼리는 다음 버전이 커밋되기를 기다리는 것이 아니라 가장 최근에 커밋된 데이터 버전 또는 *스냅샷*을 단순히 확인합니다. 특정 쿼리가 다른 쓰기 작업으로부터의 커밋을 기다리도록 하려면 그에 따라 일정을 세워야 합니다.

**참고**  
Amazon Redshift는 별도로 실행되는 각각의 SQL 명령이 개별적으로 커밋되는 기본 *자동 커밋* 동작을 지원합니다. 명령 세트를 트랜잭션 블록([BEGIN](r_BEGIN.md) 및 [END](r_END.md) 문에 의해 정의됨)으로 묶는 경우, 이 블록은 하나의 트랜잭션으로 커밋되므로 필요할 경우, 롤백할 수 있습니다. 이 동작에 대한 예외가 TRUNCATE 및 VACUUM 명령으로서 현재 트랜잭션의 대기 중인 모든 변경을 자동으로 커밋합니다.  
일부 SQL 클라이언트는 BEGIN 및 COMMIT 명령을 자동으로 실행하므로 클라이언트는 명령문 그룹이 트랜잭션으로 실행되는지 각 개별 명령문이 자체 트랜잭션으로 실행되는지 여부를 제어합니다. 사용 중인 인터페이스의 설명서를 확인하세요. 예를 들어 Amazon Redshift JDBC 드라이버를 사용할 경우 세미콜론으로 구분된 여러 SQL 명령이 포함된 쿼리 문자열이 있는 JDBC `PreparedStatement`는 모든 명령문을 단일 트랜잭션으로 실행합니다. 반대로 SQL Workbench/J를 사용하고 AUTO COMMIT ON을 설정한 경우 여러 명령문을 실행하면 각 명령문이 자체 트랜잭션으로 실행됩니다.

다음 주제에서는 트랜잭션, 데이터베이스 스냅샷, 업데이트, 동시 동작과 관련하여 몇 가지 주요 개념과 사용 사례를 설명합니다.

**Topics**
+ [Amazon Redshift의 격리 수준](c_serial_isolation.md)
+ [쓰기 및 읽기/쓰기 작업](c_write_readwrite.md)
+ [동시 쓰기 예](r_Serializable_isolation_example.md)
+ [직렬화 가능한 격리 오류 문제 해결](c_serial_isolation-serializable-isolation-troubleshooting.md)