2024/07/18 3

[Database] PostgreSQL - Transaction

이번 시간에는 PostgreSQL 에서 트랜젝션이 어떻게 동작하고 어떠한 특성을 가지고 있는지 알아보겠습니다. 개요트랜잭션은 BEGIN 혹은 START TRANSACTION 을 사용하여 명시적으로 생성하고 COMMIT 혹은 ROLLBACK 을 사용하여 종료할 수 있습니다. 명시적 트랜잭션 외부의  SQL 문은 자동으로 단일 문 트랜잭션을 사용합니다. 모든 트랜잭션은 백엔드 ID와 각 백엔드에 로컬로 순차적으로 할당된 번호, 즉 localXID 로 구성된 고유한 VirtualTransactionId 로 식별됩니다. 예를 들어, 가상 트랜잭션 ID 4/12532 의 백엔드 ID 는 4이고 localXID 는 12532 입니다. PostgreSQL 클러스터 내의 모든 데이터베이스에서 사용하는 글로벌 카운터에서..

Database 2024.07.18

[Database] PostgreSQL - Index

지난 시간에는 PostgreSQL 에 대한 보안 정책에 대해 알아보았습니다. 이번 시간에는 PostgreSQL의 Index 에 대해 알아보겠습니다.개요아래와 비슷한 테이블이 있다고 가정해봅시다.CREATE TABLE test1 ( id integer, content varchar); 그리고 해당 테이블을 사용하는 애플리케이션 쪽에서 다음과 같은 쿼리를 수없이 요청했다고 가정해봅시다.SELECT content FROM test1 WHERE id = constant; 만약 기본적인 세팅만 되어있다면, 시스템은 모든 일치하는 항목을 찾기 위해 test1 테이블 전체를 한 줄씩 스캔해야 할 것입니다. test1 에 행이 많고 그러한 쿼리에 의해 반환되는 행이 몇 개에 불과하다면, 이것은 분명히 비효율..

Database 2024.07.18

[Database] PostgreSQL Commands - DCL

개요지난 시간에는 PostgreSQL 데이터베이스의 DML 에 대해서 알아보았습니다. 이번 시간에는 PostgreSQL의 DCL 및 권한 관리 부분에 대해서 알아보겠습니다.Privileges (권한)데이터 개체가 생성되면 해당 개체에는 소유자가 할당됩니다. 소유자는 일반적으로 생성문을 실행한 역할입니다. 대부분의 개체 종류에 대해 초기 상태는 소유자(혹은 슈퍼 어드민) 만 개체에 대한 모든 권한을 가지고 있습니다. 다른 역할에서 개체를 사용할 수 있도록 하려면 권한이 부여되어야 합니다. SELECT, INSERT, UPDATE, DELETE, TRUNKATE, REFERENCE, TRIGER, CREATE, CONNECT, TERIVE, EXECURE, USE, SET, ALTER SYSTEM 등등 다양..

Database 2024.07.18