본문 바로가기

분류 전체보기621

[SQL] IN, EXISTS 비교 및 속도 비교 IN in은 입력된 값들 중 하나라도 일치하는 것이 있으면 조회된다. 쿼리가 실행될 때 내부적으로 or 연산자로 변경되어 실행되는 것이다. select e.emp_no from employees.employees e where emp_no in (SELECT s.emp_no from employees.salaries s); select e.* from employees.employees e where emp_no in (SELECT s.emp_no from employees.salaries s) employees 데이터는 300,024개 salaries 데이터는 2,844,047개이다 시간 초가 계속 변하긴 하지만 select 값 하나를 조회할 때는 3-5ms select 값을 전체 조회할 때는 4-5m.. 2023. 9. 10.
Docker를 사용해 mysql 설치하고 원격접속하기 docker 컨테이너 생성하기 docker run -it -d --name mysql -e MYSQL_ROOT_PASSWORD={비밀번호 입력} -p 3306:3306 mysql:{tags} docker 리스트 출력해서 Mysql 설치 되었는지 확인하기 docker 컨텍스트 안에 접속 docker exec -it mysql bash 원격 접속 허용하기 grant all privileges on *.* to 'root'@'%'; root 에 다른 user 이름을 넣고 허용해도 된다. DBeaver 로 접속하기 DBeaver로 데이터베이스 연결할 때 Driver properties에서 다음 옵션의 내용을 변경해주어야 한다. autoReconnect=true useSSL=false allowPublicKeyR.. 2023. 9. 6.
[DB] MySQL 샘플 데이터 MySQL 을 공부하다보면 데이터 샘플이 필요할 때가 있는데 MySQL 홈페이지에서 제공하는 데이터가 있다. https://dev.mysql.com/doc/index-other.html 데이터 다운로드 Employee 데이터를 GitHub에서 다운받을 수 있다. $> unzip test_db-master.zip $> cd test_db-master/ 압축을 풀고 엔진 세팅을 해준다. set storage_engine = InnoDB; -- set storage_engine = MyISAM; -- set storage_engine = Falcon; -- set storage_engine = PBXT; -- set storage_engine = Maria; git clone 으로도 사용이 가능하다. Inte.. 2023. 9. 2.
[SQL 튜닝] 옵티마이저(optimizer) 옵티마이저란? SQL을 가장 빠르고 효율적으로 수행할 최적(최적비용)의 처리 경로를 생성해주는 DBMS 내부의 핵심엔진이다. 개발자가 SQL을 작성하고 실행하면 즉시 실행되는 것이 아니라 옵티마이저에서 해당 쿼리문을 어떻게 실행시킬지 실행계획을 세우고 쿼리를 최적으로 실행하기 위해 각 테이블의 데이터가 어떻게 분포 되어있는지 참조하고 데이터를 기반으로 최적의 실행 계획을 처리해준다. 옵티마이저 종류 옵티마이저는 실행 계획을 세우는 방식에 따라 규칙 기반 옵티마이저와 비용 기반 옵티마이저로 나뉜다. 규칙 기반 옵티마이저 실행 속도가 빠른 수능로 규칙을 먼저 세워두고 우선순위가 앞서는 방법을 채택하는 것이다. 과거에 옵티마이저의 비용 예측하는 능력이 좋지 않아 해당 방식을 사용했었다. 우선순위는 다음과 같다.. 2023. 8. 27.
[자료구조] B-Tree, B+Tree B-Tree, B+Tree는 학부때 공부하면서 배우지만 내용을 다시 정리하는 이유는 InnoDB 의 엔진이 B+Tree로 이루어져 있고 B+Tree는 B-Tree 의 확장된 개념으로 InnoDB에 대해 공부할 겸 두개의 내용에 대해서 정리하고자 한다. B-Tree B트리라고 부르고, 트리 자료 구조의 일종으로 이진 트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 구조이다. B-Tree는 자료를 정렬된 상태로 유지되어 있는것이 특징이다. key값을 이용해 찾고자 하는 데이터를 트리 구조를 이용해 찾는 것이다. B-Tree의 장점으로는 어떤 값에 대해서도 같은 시간에 결과를 얻을 수 있다.(균일성) 사각형으로 표시된 한개 한개를 '노드(Node)' 라고 한다. 가장 상단의.. 2023. 8. 20.
[Spring] Swagger Error - Failed to load API definition. Failed to load API definition. Fetch error undefined http://localhost:8080/v3/api-docs Spring 에서 Swagger3을 사용하고 있는데 해당 오류가 발생했다. 해결 방법 (1) Spring Security도 사용하고 있어서 permitAll()을 사용했다. ... .antMatchers("/swagger-ui/**", "/v3/api-docs/").permitAll(); 해결 방법 (2) permitAll을 사용해도 안된다면 @ApiImplicitParam 이라는 어노테이션을 사용하고 있을때 @RequestBody와 요구되는 Param이 일치하지 않아서 생기는 오류일 수 있어서 해당 부분도 확인해보면 좋다. 2023. 8. 17.