본문 바로가기

DB

PostgreSQL DELETE, TRUNCATE, DROP은 뭐가 다를까? PostgreSQL에서 데이터를 삭제하다 보면 DELETE, TRUNCATE, DROP을 만나게 된다.셋 다 무언가를 지우는 명령어라 처음에는 비슷하게 느껴질 수 있다. DELETE FROM sample;TRUNCATE TABLE sample;DROP TABLE sample; 위 세 명령어를 실행하면 모두 테이블에 있던 데이터가 사라진다.그런데 결과는 완전히 다르다.가장 간단하게 정리하면:DELETE→ 데이터를 지운다.TRUNCATE→ 테이블의 데이터를 한꺼번에 비운다.DROP→ 테이블 자체를 없앤다. 이번에는 각각 어떤 차이가 있는지 직접 비교해봤다.테스트용 테이블 만들기먼저 간단한 테이블을 하나 만들어보자. CREATE TABLE sample_user ( id SERIAL PRIMARY KEY,.. 더보기
PostgreSQL에서 누가 어떤 SQL을 실행했는지 확인할 수 있을까? 이전에 PostgreSQL에서 현재 접속 중인 사용자를 확인하는 방법을 정리한 적이 있다.pg_stat_activity를 조회하면 어떤 사용자가 어느 IP에서 접속하고 있는지 확인할 수 있었다. SELECT datname, usename, client_addr, application_name, stateFROM pg_stat_activity; 그런데 접속자를 확인하고 나니 또 하나 궁금해졌다.누가 접속했는지는 알겠는데, 그 사용자가 어떤 SQL을 실행했는지도 확인할 수 있을까?결론부터 말하면 현재 실행 중인 SQL은 비교적 쉽게 확인할 수 있다.문제는 이미 실행이 끝난 SQL을 확인하고 싶을 때다.현재 실행 중인 SQL 확인하기pg_stat_activity에는 접속 정보뿐만 아.. 더보기
PostgreSQL에서 누가 접속했는지 확인할 수 있을까? PostgreSQL을 사용하다가 문득 궁금한 게 생겼다.지금 DB에 누가 접속해 있는지는 알 수 있을 것 같은데,예전에 누가 접속했는지도 확인할 수 있을까? DBeaver나 pgAdmin 같은 툴로 DB에 접속하면 당연히 PostgreSQL 서버와 연결이 만들어진다.그렇다면 서버 어딘가에는 접속한 계정이나 IP 같은 정보가 남아 있지 않을까 싶어서 확인해봤다.결론부터 말하면 현재 접속 정보와 과거 접속 이력은 따로 생각해야 했다.현재 누가 접속해 있는지는 확인할 수 있다PostgreSQL에는 pg_stat_activity라는 시스템 뷰가 있다.현재 DB에 연결되어 있는 세션을 확인할 때 사용할 수 있다. SELECT datname, usename, client_addr, applic.. 더보기