READ UNCOMMITTED정의다른 트랜잭션에서 아직 커밋되지 않은 데이터도 조회할 수 있다.부정합'더티 리드(Dirty Reads)'가 발생할 수 있다. 아직 확정되지 않은 데이터를 읽어서 그 트랜잭션이 롤백되었을 경우 잘못된 정보를 기반으로 작업을 수행할 위험이 있다.상황 설명:도서관에서 책을 읽기 시작했다.다른 사람이 책에 메모를 하고 있지만, 아직 메모를 완성하지 않았다.READ UNCOMMITTED 상황에서는, 본인이 그 미완성 메모를 읽을 수 있다.즉, 작성자가 아직 메모를 확정하지 않았음에도 불구하고, 그 내용을 볼 수 있다.READ UNCOMMITTED는 다른 사람이 최종적으로 확정하지 않은 정보에 접근할 수 있다.이는 메모가 나중에 변경되거나 삭제될 수 있음을 의미하며, 이로 인해 잘못..
날짜로 필터링을 하거나 데이터 중복을 제거할 때 인덱스에서 데이터를 찾는지 또는 추가적인 작업을 하는지는 쿼리 속도에 영향을 준다. 이 간단한 작업으로도 큰 효과를 가져올 수 있었다. 당시 회사내 쿼리 개선 된 결과) 분류 쿼리 속도 행 수 기존 쿼리 약 26401ms 약1800만건 개선 된 쿼리 약 190ms 약6만8천건 가정 예를 들어 이런 쿼리가 있다고 가정해 보자.(날짜에 파티션은 제외하고 가정) SELECT student, count(DISTINCT class_uid) as total FROM school.class1 WHERE date_format(plan_dt, '%Y%m') = '202307' GROUP BY student; 1. class1에는 plan_dt에 인덱스가 생성되어 있다. 2..
원인 파악 gcc 컴파일러나 다른 필수 라이브러리가 누락되었거나, 해당 EC2 인스턴스에 설치되어 있지 않음을 의미할 수 있다. 원인 해결 1. 개발 도구 설치: gcc를 포함한 필요한 개발 도구들이 시스템에 설치되어 있지 않다면, 이를 설치 이 그룹에는 GCC, Make, Autoconf 등과 같은 일반적인 개발 도구들이 포함되어 있다. 이러한 도구들은 소프트웨어 개발과 컴파일에 필요 - Ubuntu 같은 Debian 기반 시스템 sudo apt-get update sudo apt-get install build-essential - CentOS 같은 Red Hat 기반 시스템 sudo yum groupinstall -y "Development Tools" 2. 파이썬 개발 헤더와 라이브러리 설치: 파..
클라우드와 DBA의 역할 분류 내용 배경 현재 회사에서는 Aurora를 사용하고 있지만, 인프라 관리는 따로 인프라 담당자님이 하고 있습니다. 세부 내용 Aurora와 같은 클라우드 기반 DB 서비스의 경우, 기존의 온프레미스 환경과는 달리 물리적인 서버 관리보다는 성능 최적화와 데이터 관리에 중점을 둘 필요가 있습니다. 결론 클라우드 환경에서의 DBA는 데이터 구조 최적화, 쿼리 튜닝, 백업 및 복구 전략 등의 역할에 더욱 집중해야 함을 깨달았습니다. 다만, Aurora의 관리는 중점은 누구인가?에 대해서는 의문이 들었습니다. DBA와 파이썬의 조화 분류 내용 배경 최근에는 DBA가 자동화 스크립트나 데이터 처리 작업을 위해 프로그래밍 언어를 활용하는 경우가 많아지고 있다고 합니다. 세부 내용 파이썬은..
1년 반정도 데이터 매니저로 일을 하다가 최근 DBA로 경력을 시작한 지 5개월 차에 접어들었습니다. 회사에서 DBA로서의 첫 5개월을 마치며, 5개월이라는 시간이 그렇게 길지는 않지만, 1개의 서비스를 오픈하며 DBA로서 많은 것을 배우고, 다양한 고민을 해보며 성장하는 계기가 되었습니다. 아직 주니어라 많이 부족하지만, 이 과정에서 느낀 점과 배운 것들을 공유하고자 합니다. 어디까지나 개인적인 견해입니다. 개발자와의 협업 분류 내용 배경 신입 DBA로 들어왔을 때, 가장 먼저 느낀 점은 개발자와의 소통의 중요성이었습니다. 세부 내용 정규화와 성능의 균형, 테이블 구조 설계 시 개발자의 요구 사항과 DBA의 논리적 구조 설계 간의 균형을 찾는 과정에서 두 직군 간의 소통의 중요성을 느꼈습니다. 결론 서..
집에 남는 Window 노트북을 어떻게 활용할까 생각을 하다가 DB로 사용하면 좋겠다고 생각했다. 그래서 이 노트북에 MySQL Workbench와 서버 설치부터 외부 IP로 접속하는 방법까지 순차적으로 정리해보려고 한다. DB 컴퓨터: Window 11(사양 구림..) 버전: MySQL 8 Version 접속 컴퓨터: MacOS MySQL Workbench와 Server 설치하기 먼저, Window 컴퓨터에 MySQL Workbench와 Server를 설치하는 것이 필요하다. 설치 링크 : MySQL 공식 사이트 MySQL Workbench와 Server를 다운로드하고 설치할 수 있다. Workbench는 MySQL Server8.0과 호환이 되기 때문에 8.1이 아닌 8.xx 버전을 다운로드하자 새로..
로컬 DB를 외부에서 사용하기 위해 포트포워딩이 꼭 필요했다. 그래서 까먹지 않게 방법을 정리해보려고 한다. 하려고 하는 공유기는 SK브로드밴드이지만 Iptime이든 타 공유기도 비슷하지 않을까 싶다. 컴퓨터: Window 11 공유기: SK브로드밴드(RUSH-337AC) 공유기 관리자 페이지에 접속하기 먼저, 관리자 페이지에 접속하기 위해서는 해당 공유기의 IP 주소를 알아야 한다. IP 주소 알아보기 (Windows) 1. 시작 메뉴를 클릭하고 cmd 혹은 명령 프롬프트를 입력하여 프로그램을 실행시킨다. 2. 명령 프롬프트에 ipconfig를 입력하고 엔터를 누른다. 이때 본인이 노트북과 공유기가 어떻게 연결했는지에 따라 다르게 보면 된다. 본인은 Wi-Fi로 연결했기 때문에 Wi-Fi 쪽만 확인하면..
기본적으로 CASE 문에서는 복수의 조건을 테스트할 때 OR를 사용하곤 한다. 그러나, 같은 컬럼의 값이 특정 집합에 속하는지를 검사하려면 IN 연산자를 사용하는 것이 더 간결하고 읽기 쉬웠다. 예를 들어, lm.subj_nm 값이 '국어' 또는 '국어선택학습'인지를 검사하려면 다음과 같이 OR를 사용할 수 있다: when lm.subj_nm = '국어' or lm.subj_nm = '국어선택학습' then '1' 그러나 이것은 IN을 사용하면 더 간결하게 표현할 수 있다: WHEN lm.subj_nm IN ('국어', '국어선택학습') THEN '1' 두 쿼리는 완전히 동일한 결과를 내지만, 후자는 명확성과 가독성 면에서 더 우수하다고 생각한다. 특히 조건이 많아질수록 IN 연산자를 사용하는 것이 코드..
MySQL의 --login-path 옵션은 MySQL 5.6.6. 버전부터 추가된 옵션으로, 서버에 로그인하기 위한 사용자 이름, 패스워드, 그리고 기타 연결 매개변수를 설정 파일에 저장하고, 이를 불러올 수 있게 해주는 매우 유용한 기능이다. MySQL --login-path의 중요성 MySQL에 접속할 때 일반적으로 사용자 이름과 패스워드를 직접 입력하는 방식을 사용한다. 그러나 이런 방식은 다음과 같은 문제점이 있다. 보안 문제 : 패스워드를 직접 입력하는 방식은 보안에 취약해진다. 특히, 스크립트나 명령 히스토리에서 패스워드가 노출될 수 있다. 편의성 문제 : 빈번하게 MySQL에 접속해야 할 경우 매번 패스워드를 입력하는 것은 매우 번거로울 수 있다. 그래서 문제점을 보완하기 위해 mysql_c..
데이터베이스에서 쿼리를 수행할 때, 조건 판단 방식이 쿼리의 성능에 큰 영향을 미칠 수 있다. 이 포스팅에서는 WHERE 절에 CASE WHEN 구문을 사용하는 방식과 UNION을 사용하는 방식을 비교하며, 어떤 방식이 더 효율적인 쿼리 성능을 제공하는지 알아보려고 한다. 이 문제는 https://okky.kr/questions/389347 이 사이트에서 확인했다. 우선, SQL 쿼리에서 CASE WHEN 구문은 각 행을 하나씩 검사하면서 조건을 판단한다. 이로 인해 데이터베이스는 모든 행을 전체 검색(Full Scan)해야 하며, 이는 쿼리의 성능을 저하시킨다. SELECT F.friend_one, F.friend_two, F.requested_id, F.status FROM users U, frien..