PostgreSQL 5

PostgreSQL JSONB 인덱스 생성 전후 성능 확인

https://medium.com/geekculture/postgres-jsonb-usage-and-performance-analysis-cdbd1242a018 Postgres JSONB Usage and performance analysis This story focuses on various features that JSONB provides and formulated with a sample and explained with scenarios where unstructured… medium.com 무슨 데이터가 들어올지 모르는 상황이라 JSONB를 쓰는 게 좋을 거 같아서 확인 했다. 테스트에 사용한 데이터는 1,000만 건이고, 사용한 데이터는 https://dummyjson.com/users?l..

Airflow 2버전에서 한글이 있는 DAG이 등록 안 되는 문제

로그를 봤으면 금방 찾았을 건데 정신이 없어서 한글이 문제라는 걸 아는 것도 시간이 좀 걸렸다. 파이썬 오류로 보면 UnicodeEncodeError...가 나올 건데, 이래저래 찾아보니 sql_engine_encoding 옵션을 쓰라거나 sql_alchemy_conn에 charset을 쓰라거나 하는 얘기가 있었지만, helm chart로 설치해서 예전 버전에 있던 옵션들은 존재하지 않았다. https://github.com/apache/airflow/issues/28798 Processor unable to parse DAG with non english characters · Issue #28798 · apache/airflow Apache Airflow version Other Airflow 2 v..

삽질/Airflow 2023.06.08

ChatGPT로 쿼리 튜닝 물어보기

모든 상황에 대해 다 던져주고 최적화(튜닝)를 해달라거나 하는 범위가 넓은 질문과 범위가 넓은 답변을 원하면 chatgpt로 빠르게 답을 구할 수가 없다. 인덱스가 걸린 varchar 컬럼으로 공백이 아닌 것을 ''과 > '' 차이에 대해 알고 있는 건 확인해서, 얘가 어느 정도 할 수 있다는 건 알았으니 어떤 프롬프트를 써야 실무에 사용하기 편할 지 알아보려고 이래저래 해본 걸 정리했다. 일단 chatgpt가 테이블 생성문에서 인덱스 생성한 컬럼이 뭔지 알아낼 수 있나를 확인해봤다. 질문 CREATE TABLE t_datasource_tag ( tag_no bigint DEFAULT nextval('seq_datasource_tag'::regclass) NOT NULL, table_name charac..

ERROR: currval of sequence "seq_table" is not yet defined in this session

DB서버 분리 이후 INSERT > SELECT CURRVAL 사용시 발생한 오류. INSERT한 세션에서 CURRVAL를 할 값이 없으면 나오는 오류인데, 처음에 해당 오류가 발생한다는 게 실제 서비스 중인 서버에서 발생하는 줄 알았다. 실 서비스 하는 서버에서는 pgpool을 적용하지 않아서 커밋 관련 이슈인가 했는데, pgpool로 DB서버에 접근하게 한 서버에서 그런다고 해서 pgpool 설정을 보니 currval 사용시 마스터DB를 보게 되어 있지 않았다. black_function_list = 'currval,lastval,nextval,setval' 수정 후 pgpool을 재시작 해주고 정상 처리 되는 걸 확인 했다. 이후에 마스터DB로 바로 SELECT를 해야 하는 경우를 대비해서 아무 동..

invalid regular expression: regular expression is too complex

파이썬에서 postgresql로 조회하는 페이지에서 해당 오류가 발생하고 있었다. 정규표현식이 너무 복잡하다는 게 뭔가 했는데, 해당 쿼리 오류 로그를 보니 SIMILAR TO에 엄청나게 긴 조건을 넣어서 처리하고 있었다. 정규표현식 조건을 |로 2000개 넘게 넣어서 조회하고 있었는데, 1000개씩 나눠서 테스트를 하다가 Invalid regular expression: parentheses ( ) not balanced 위 오류가 발생했다. 근데 해당 오류가 나온 1000개를 500개로 나눠서 하니까 멀쩡... 결론적으로 너무 복잡하다 = 처리하기 힘드니 나눠서 해라

반응형