전체 글(185)
-
2024년 아마존 리눅스 MySQL 설치
[ 작성 이유 ] 아마존 리눅스 리전을 잘못 설정해서 변경하려다가 EC2를 새로 깔면서 MySQL을 다시 깔게 되었다. 그런데내부 명령어가 제대로 동작하지 않았고 MySQL을 까는데 문제가 발생했다. 인터넷 방법을 뒤져보다가 문제점을 찾았고, 링크를 찾을 수 없어 직접 글을 남긴다.[ 설치 방법 ] AWS와 EC2 설치에 대해서는 말을 하지 않겠다. 문제의 원인은 EC2 최신 버전을 사용하면 기존 인터넷에 떠돌아다니는 MySQL 설치방법을 사용할 수 없다. 그 이유는 해당 파일 버전이 리눅스 서버 내에서 지원하지 않기 때문이다. 만약에 아래와 같이 c언어 패키지가 없어서 오류가 생기는 오류가 난다면, 이 글을 통해 해결할 수 있다. Error: Problem: conflicting requests - ..
2024.05.19 -
조인 실행 과정(TIL)
1. NL 조인 Nested Loops는 가장 기본적인 조인 실행 방법으로, 외부 테이블과 내부 테이블 전체를 하나하나 스캔하며 결합 방식에 맞으면 리턴하는 방식이다. 친절한 SQL 튜닝에서는 다음과 같은 SQL과 PL/SQL이 대응된다. // SQLselect e.사원명, c.고객명, c.전화번호 from 사원 e, 고객 cwhere e.입사일자 >= '19960101' and c.관리사원번호 = e.사원번호// PL/SQL 코드begin for outer in (select 사원번호, 사원명 from 사원 where 입사일자 >= '199600101') loop -- outer 루프 for inner in (select 고객명, 전화번호 from 고객 wher..
2024.04.30 -
Index를 잘 사용하는 방법 - 중급(TIL)
1. 인덱스 스캔량과 필터 조건 이전 글에서 쿼리 실행 계획과 관련된 설명을 하였다. 그 글에서는 인덱스를 사용한 실행 계획을 세울 때, 인덱스 범위 스캔처럼 인덱스를 통해 스캔하는 시작점과 끝점의 범위를 줄이는 게 중요함을 이야기했었다. 그래야 찾아 가는 블록의 수가 적어지며 랜덤 엑세스 횟수가 줄어들기 때문이다. 그런데, 인덱스를 설계하는 단계에서 이것이 가능하지만 이미 만들어진 인덱스를 확장하는 단계에서 이는 불가능하다. 책에 나온 예시는 아래와 같았는데, 만약에 인덱스를 dept_id와 job으로 만들었다고 해보자. 그러면 아래의 쿼리 문에서 탐색하는 인원은 둘리부터 마이콜까지 총 4명이다. salary 조건을 인덱스 자체로는 거를 수 없기 때문에, 해당 레코드의 salary 값을 얻기 위해 ..
2024.04.25 -
쿼리 실행 계획(TIL)
1. SQL 옵티마이저 개발자가 작성한 SQL은 적절하게 파싱이 되어 SQL 옵티마이저로 넘어가게 된다. SQL 옵티마이저의 역할은 사용자가 원하는 작업을 수행할 수 있는 방법을 찾고 최적의 경로를 선택해주는 역할이다. 안타깝게도, 옵티마이저가 선택하는 내용은 완벽하지 않을 수 있다. 옵티마이저가 완벽하지 않은 첫 번째 이유는 사용하는 정보 때문이다. 옵티마이저가 비용을 산출할 때에는 DBMS 내부에 테이블 통계 정보를 활용한다. 이를 카탈로그라고 하는데, 카탈로그 내부에는 테이블 레코드 수, 필드 수와 크기, 필드 카디너리티, 필드값 히스토그램 정보가 들어있다. DBMS 종류에 따라 다르겠지만 해당 내용을 갱신 명령어로 수동으로 갱신해주어야하거나, 일정 비율 이상으로 데이터가 변경되어야만 카..
2024.04.24 -
데이터 베이스 메모리(TIL)
잡담더보기데이터 베이스를 공부하면서 특정 DB가 아닌 여러 개를 공부하다보니, 용어 등에 대해서 굉장히 혼란이 왔다. 특히 메모리 구조에 관한 이야기가 나올 때 갑자기 불쑥불쑥 등장하는 용어들이 헷갈린다. 예를 들면, Oracle에서는 워킹 메모리를 PGA라고 부르는데, MySQL에서는 정렬 버퍼라고 부르는 등 이런 내용이 헷갈렸다. 처음에 이 글을 쓸 때에도 Oracle 기준으로 PGA와 SGA에 관해 쓰는게 맞을까를 고민했는데, 어느정도 정리를 하다보니 데이터 베이스 메모리가 가장 좋지 않을까 싶었다. 이 글을 통해서 데이터 베이스에서 사용되는 메모리의 종류와 해당 메모리를 잘 쓰기 위한 방법이 약간이나마 정리되었으면 하여 작성한다.1. 메모리, 디스크, 캐시 ○ 디스크가 메모리보다 느린 이유? 데이..
2024.04.22 -
JOIN의 종류와 주의사항 (TIL)
1. 크로스 조인(CROSS JOIN) 크로스 조인은 테이블 두 개의 카테시안 곱을 결과로 만들어주는 조인이다. 이미지로 보는 게 더 이해가 빠르다. 크로스 조인을 하면 다음과 같이 두 개의 테이블 컬럼을 결합해서 가져온다. 만약 사원의 테이블의 레코드가 3, 부서 테이블의 레코드가 2이면 총 6개의 데이터가 나온다. 데이터의 내용을 보면 알 수 있듯이 결과가 의미가 없고, 모든 테이블의 내용을 곱 연산으로 가져오기 때문에 비용이 많이 들어서 거의 사용할 일이 없다. 따라서, 크로스 조인은 되도록 피해야 하는 조인이다. 하지만 SQL을 잘못 작성하게 되면 크로스 조인이 의도하지 않게 나오게 된다. [ 의도하지 않은 크로스 조인 - 결합 조건이 없는 경우 ] 잘 일어나지 않겠지만 테이..
2024.04.21