본문 바로가기

DBA42

mysqlのSQLをoracleで書く(一覧) concat文字列を結合する。Oracleでは2つしか結合不可。CONCAT(char1, char2)Oracleで3つ以上の文字列を結合する場合は||を使用char1||char2||char3format date_format time_format値を指定のフォーマットで整形した文字列を取得する。FORMAT(string,format)DATE_FORMAT(date,format)TIME_FORMAT(time,format)OracleではTO_CHARを用いる。また、フォーマットに%Yや%hは使えない。(YYYY/MM/DDなどを使用)TO_CHAR(date, 'YYYY/MM/DD')IFNULL値がNULLか判別する。 IFNULL(カラム名, ‘置き換える値’)OracleではNVLを用いる。NVL(カラム名, ‘置き換える値’)coalesceという関数も.. 2024. 5. 10.
[Django] HTTP error code 401, 403, 404, 405, 415, 500 요즘 프로젝트를 진행하면서 정말 자주 접하는 HTTP 에러 코드들이 있습니다. 매번 볼때마다 당황하지 않고 빠르게 해결하기 위해서 다시 한번 머릿속으로 복습해보려고 이 글을 써봅니다. #401 UnAuthorized 인증 문제 : Token을 잘못보낸 케이스 ( JS headers확인, Authorization: Bearer + token) 자주 발생. 주로 JS에서 api의 headers를 확인해보면 오타가 있거나 , token을 올바르지 않은 형식으로 보내고있거나, payload에서 토큰을 정상적으로 가져오고 있지 못할때 발생했었습니다. #403 Forbidden 주로 권한 문제, 현재 열려고 하는 웹페이지 또는 리소스가 액세스 할 수 없는 경우 발생을 합니다. 과거에 한번 발생을 했었는데, 검색을 .. 2024. 4. 3.
DB 모니터링 구축 (PMM) PMM을 사용하여 모니터링 시스템 구축하기 RDS mysql을 사용중인데 기본적인 DB 인스턴스에서 모니터링을 하고 있다. 매번 aws console로 모니터링하기 번거롭기도 하고 좀 더 세부적인 DB 매트릭에 대해 모니터링 하고자 어떤 조합을 사용할지 고민하다가 PMM이라는 DB 모니터링 솔루션으로 구축하기로 함 PMM은 기본적으로 프로메테우스+그라파나 기반이라 PMM 클라이언트가 DB 매트릭을 수집하고 PMM 서버에서 수집한 매트릭을 시각화하여 보여준다. PMM Percona Monitoring and Management = 무료 오픈 소스 Database 통합 모니터링 솔루션 위와 같은 아키텍처이고 PMM 클라이언트가 DB 매트릭을 수집하고 수집한 매트릭을 PMM 서버에서 대시보드화하여 보여주는 방.. 2024. 3. 21.
Real Mysql 8.0 : 옵티마이저 옵티마이저 쿼리를 최적으로 실행하기 위해 각 테이블의 데이터가 어떤 분포로 저장돼 있는지 통계 정보를 참조하며, 그러한 기본 데이터를 비교해 최적의 실행 계획을 수립한다. 우리들은 실행 계획의 이해해야 실행 계획의 불합리한 부분, 더 최적화된 방법으로 실행 계획을 수립하도록 유도할 수 있습니다. 쿼리 실행 절차 1. SQL 파싱 사용자로부터 요청된 SQL문장을 잘게 쪼개서 MySQL 서버가 이해할 수 있는 수준으로 분리해서 파스 트리가 만들어짐 설명 : SQL문장이 문법적으로 잘못됐다면 이단계에서 걸러짐, MySQL서버는 SQL문장 그자체가 아니라 파스 트리를 이용해 쿼리를 실행 2. 최적화 및 실행 계획 수립 SQL의 파스 트리를 확인하면서 어떤 테이블부터 읽고 어떤 인덱스를 이용해 테이블을 읽을지 선.. 2024. 3. 11.
MySQL Query Cache은 무조건 좋을까? (Feat. query cache lock) MySQL에서는 한 SELECT 쿼리의 결과를 캐싱해주는 Query Cache 라는 최적화 기능을 제공해주고 있다. (하지만, 5.7.20 버전부터 deprecate되었고, 8.0 버전에서부터는 제거되었다고 한다. - 참고 글) 그렇다면, Query Cache은 항상 사용하면 좋은 것일까? (모든 캐싱이 그러하듯, 당연히 아닐 듯 하다.) 실습과 함께 한번 확인해보자. 실습 준비 MySQL 5.7.20 Docker Container 환경에서 실습하였습니다. 참고로 query_cache_type 의 default 값은 OFF이다. 이 값은 MySQL을 구동한 이후에는 변경할 수 없으므로, 아래와 같이 설정파일을 변경한 후, 한번 재기동해주어야 한다. [mysqld] query_cache_type = 2 #.. 2024. 3. 11.
[Real MySQL 8.0] 옵티마이저의 기본 데이터 처리 1 / 2 요청된 쿼리는 같은 결과를 반환하지만, 내부적으로 그 결과를 어떻게 만들어낼 것인지에 대한 방법은 매우 다양하다. 따라서 어떤 방법이 최적이고 최소의 비용이 소모되는지 결정해야 한다. MySQL에서는 테이블의 데이터가 어떤 분포로 저장돼 있는지 통계 정보를 참조해 최적의 실행 계획을 수립한다. 대부분의 DBMS에서도 옵티마이저가 이러한 기능을 담당하고 있다. 쿼리 실행 절차 쿼리가 실행되는 과정은 크게 세 단계로 나눌 수 있다. 요청된 SQL 문장을 쪼개서 MySQL 서버가 이해할 수 있는 수준으로 분리(파스 트리) SQL 파싱 단계로 SQL 파서 모듈로 처리 SQL 문법 오류(Syntax Error)가 이 단계에서 걸러짐 SQL 파스 트리 생성 SQL의 파싱 정보(파스 트리)를 확인해 어떤 테이블을 읽.. 2024. 3. 11.