프로그래밍 언어/DB

    postgresql 최대 동시 접속자 수를 초과했습니다 해결

    postgresql 최대 동시 접속자 수를 초과했습니다 해결

    postgresql 을 재시작한다. systemctl restart postgresql-11.service 만약 DB의 설정 파일을 변경할 수 있는 권한이 있다면 postgresql.conf 설정파일에서 max_connection 의 수를 변경해서 접속자 수를 늘려주는 방법도 있다.

    [postgresql] dt did not find any relations

    [postgresql] dt did not find any relations

    psql에서 database gtck 에 postgres 사용자로 접속했다. sudo -u postgres psql # \c [DBname] [Connection User] \c gtck postgres 데이터 베이스에 접속 후 테이블 목록을 조회했는데 결과가 나오지 않았다. 다음 명령어로 현재 데이터베이스의 권한을 확인해보면 Access privileges 에 아무것도 없는것을 확인할 수 있다. (L 의 소문자) \l 다음 명령어로 현재 테이블의 권한을 확인해보면 Access privileges 에 아무것도 없는것을 확인할 수 있다. \dn+ Database 와 Schema 에 권한 Grant CONNECT to the database # GRANT CONNECT ON DATABASE database_..

    postgresql 테이블 데이터 모두 삭제 (truncate)

    truncate 명령어는 테이블의 모든 데이터를 삭제하는 명령어이다. truncate table 테이블이름 delete 명령어와의 차이점은 delete는 행이 삭제될떄마다 자원이 소모되는데 truncate 은 비교적 데이터가 빠르게 삭제되며 삭제에 대해서 롤백 정보를 만들지 않고 바로 커밋한다. 시퀀스(자동증가 값)을 재시작하며 테이블 정보를 모두 삭제 truncate table 테이블이름 restart ientity 시퀀스 값은 리셋하지 않고 데이터만 삭제 truncate table 테이블이름 continue ientity

    postgresql 테이블 lock 조회 및 lock 해제

    Lock 이란 트랜잭션 처리의 순차성을 보장하기 위한 방법이다. Lock 의 종류에도 공유 Lock 과 베타 Lock 이 있다. 공유 Lock 은 데이터를 읽을 때 사용되어지는 Lock 으로 하나의 데이터를 읽는 것은 여러 사용자가 동시에 할 수 있다. 베타 Lock은 데이터를 변경하고자 할 때 사용되며 트랜잭션이 완료될 때까지 유지된다. 베타 Lock 은 락이 해제될 때까지 다른 트랜잭션은 해당 리소스에 접근할 수 없는 것이다. 나의 경우 베타 락이 걸려있는 것 같았다. 아래 내용을 락을 해제하고 트랜잭션을 다시 사용할 수 있도록 하는 방법이다. DB 는 Postgresql을 사용했다. 현재 수행중인 SQL 전체 조회 select datname, pid, usename, application_name,..

    [mysql] cannot check if timestamp is between varchar(23) and varchar(23) - 날짜 조회 쿼리

    sql에서 timestamp 형식의 날짜에서 날짜와 날짜 사이의 데이터를 조회하고자 한다. date 컬럼의 날짜의 형식은 timestamp 이며, 조회하고자 하는 날짜는 문자열로 조회하려고 했다. 기존쿼리문 select * from table1 where date between '2021-09-28 12:00:00.000' and '2021-09-28 18:00:00.000' 문자열로 표시한 날짜 앞에 timestamp 를 붙여서 사용하면 조회가 가능하다. select * from table1 where date between timestamp '2021-09-28 12:00:00.000' and timestamp '2021-09-28 18:00:00.000'

    select limit ? offset ? (페이징 활용)

    select * from table LIMIT a OFFSET b LIMIT 는 개수를 제한하는 것이며 OFFSET 은 시작 위치를 지정해준다 ex) 처음 10개의 게시글을 가져온다. select * from table LIMIT 10 OFFSET 0 select * from table LIMIT 10 11번째부터 10개의 게시글을 가져온다. select * from table LIMIT 10 OFFSET 10

    [SQL] COALESCE , LEAD, LAG 함수 (NULL이 아닌 첫번째 값, 이전값, 다음값)

    [SQL] COALESCE , LEAD, LAG 함수 (NULL이 아닌 첫번째 값, 이전값, 다음값)

    LAG : 절 기준으로 이전의 로우의 값 변환 LAG(조건, 순서, 디폴트) OVER ( PARTITION BY 절) LEAD : 절 기준으로 이후의 로우의 값 변환 LEAD(조건, 순서, 디폴트) OVER ( PARTITION BY 절) COALESCE 함수 : 해당 칼럼들 중 NULL이 아닌 첫번째 값을 반환하는 함수 (오라클 NVL과 비슷한 기능) COALESCE(a_1, a_2, ..., a_N) a_1 부터 a_N까지 순서대로 비교 후 null 이 아닌 값을 반환한다. 모두 null이면 null을 리턴한다. grade 에 값이 null일 경우 #으로 치환한다. select coalesce(grade,'#') from student

    [sql] case - when - then - else - end

    조건에 따라 값을 지정해주는 case문이다. CASE 컬럼명|표현식 WHEN 조건1 THEN 결과1 WHEN 조건2 THEN 결과2 ELSE 결과3 END 컬럼명|표현식 이 조건1일 때는 결과1 SELECT grade_code, content_id, k_key, (case when grade_code = '1' then '1학년' when grade_code = '2' then '2학년' when grade_code = '3' then '3학년' when grade_code = '3' then '4학년' when grade_code = '3' then '5학년' when grade_code = '3' then '6학년' else '없음' end) grade_code_desc FROM database_na..

    [DB] Star Schema / Snowflake schema / Fact Table / Dimension Table

    [DB] Star Schema / Snowflake schema / Fact Table / Dimension Table

    Star Schema 정규화 모델 기법으로 dimension테이블에 다른 dimension테이블이 연결되지 않는 구조 Snowflake schema 정규화 모델 기법으로 dimension테이블에 또 다른 dimension테이블이 연결되는 구조 클라우드 자체의 플랫폼으로 별도의 저장소가 존재하지 않는다. (폴더같은 저장소 개념이 아님) Fact Table Start Schema 또는 Snowflake Schema 의 중심에 있는 테이블 Fact 테이블은 수치(measure)를 가지고 있고, 이상적으로는 각각의 모든 값은 모든 디멘션에 걸쳐 연결된다 Dimension Table row가 적고 column이 많은 형태를 취함 팩트 테이블에서 값을 한정해 보여주는 테이블 디멘션은 두가지 중요한 역활을 한다. 쿼..

    [SQL] UNION과 UNION ALL의 차이

    UNION은 여러개의 sql문을 합쳐 하나의 sql문을 만들어준다. 두 쿼리의 합집합이라고 생각하면 된다. UNION은 두 쿼리의 결과에서 중복되는 값을 삭제해 보여준다. UNION ALL은 두 쿼리의 결과에서 중복되는 값을 모두 보여준다. 중복체크 여부에 따라 속도차이가 나는데 UNION ALL이 더 빠르다.