SQL(9)
-
n+1 문제
n+1 문제는 데이터베이스 쿼리 최적화와 관련된 성능 문제로, 주로 ORM(Object Relational Mapping) 프레임워크에서 발생한다. 간단히 말하면, 한 번에 해결할 수 있는 작업을 불필요하게 여러 번 쿼리하는 문제다. 기본 개념 n+1 쿼리는 특정 객체를 가져오고 관련된 객체를 로드할 때, 1개의 메인 쿼리로 상위 데이터를 가져온 후,n개의 추가 쿼리로 관련 데이터를 각각 개별적으로 가져오는 경우를 말한다.이로 인해 필요 이상으로 많은 데이터베이스 호출이 발생하게 되고, 성능 저하를 초래한다. 예제 게시글과 댓글이 1:N 관계에 있다고 가정하자. 그리고 게시글 리스트를 조회하면서 각 게시글에 달린 댓글도 가져오려는 경우를 생각해보자. 이때 n+1 쿼리가 발생할 수 있다.-- 1개의 메인 ..
2024.11.22 -
[npm] Sequelize X MySQL 에서 헷갈리거나 어려울만한 것 정리
👍 기본 개념 1. Sequelize는 ORM이다. 2. ORM이란, Object-Relational Mapping의 약자로 JavaScript의 자료형인 "Object"와 실제 DB에 저장된 "Relation"을 "대응(Mapping)"시켜주는 도구를 말한다. 3. Sequelize와 연결될 수 있는 DB는 관계형 DB면 상관없다. 만약 MySQL DB와 연결하려면 npm mysql2를 설치해야 한다. 4. MySQL은 오픈소스 관계형 DBMS이다. 5. 우리가 하려는 것은 다음과 같다. 웹 서비스의 데이터들 간에 관계가 명확하므로 관계형 데이터베이스를 사용할 것임 그리고 그 관계형 데이터베이스를 조작하기 위해 오픈소스 DBMS인 MySQL을 사용할 것임 그리고 그 DBMS를 Node.js & Expr..
2020.10.26 -
SQL 성능 튜닝
👍 SQL 성능 튜닝 순서 👊 문제있는 SQL 식별 애플리케이션의 성능을 관리하거나 모니터링하기 위한 툴인 APM(Application Performance Management) 등을 활용 Oracle의 경우 TKPROF 또는 SQL_Trace 등 유틸리티 사용 👊 옵티마이저 통계 확인 옵티마이저 : 개발자가 작성한 SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는 데이터베이스 핵심 모듈 Oracle은 CBO(Cost Based Optimizer)와 RBO(Rule Based Optimizer) 모드를 지원하고, 이주중에서 비용기반인 CBO 모드를 기본으로 지원 비용기반 옵티마이저 모드에서 최적의 처리경로를 생성하기 위해서는 옵티마이저가 활용하는 통계정보를 주기적으로 현행화해야 함 👊..
2020.08.02 -
커서 - 내장형 SQL로 반환되는 단 하나의 튜플을 여러개로 늘리는 반복문
👍 What is Cursor? SQL은 여러 개의 튜플을 다루는 데 반해, C++, JAVA 등 언어는 한 번의 연산의 결과를 하나의 변수에 저장하기 때문에 단 하나의 튜플만 다룰 수 있다. 커서는 SQL이 다른 프로그래밍 언어에 내장될 때의 한계를 해결하고자 나온 일종의 "포인터"이다. 2020/06/21 - [컴퓨터언어/Database] - 내장형(Embedded) SQL - 다른 프로그램 내에 삽입된 SQL 내장형(Embedded) SQL - 다른 프로그램 내에 삽입된 SQL 지금까지의 SQL은 모두 사용자가 명령어를 내리는 즉시 DBMS가 결과를 보여주는, "대화식 SQL"이었다. 하지만 현대 응용프로그램은 데이터베이스와 연동되는 경우가 매우 많기 때문에, 프로그램 구 an-onymous.tis..
2020.06.21 -
[SQL] DBA가 DBMS와 대화하는 언어
👍 SQL이란? 사용자의 요구분석에 따라 개념적 설계, 논리적 설계, 물리적 설계를 했다면, 이제는 실제로 DBMS를 이용하여 테이블을 구현할 수 있다. SQL은 DBA(데이터베이스 관리자)가 DBMS를 이용하여 데이터를 처리할 때 사용하는 언어다. SQL을 세부적으로 나누어보면, 인터페이스(상호작용)와 구성요소로 달리 구분할 수 있다. 👊 SQL의 인터페이스에 따른 분류 대화식 SQL DBA가 DBMS 안에서 SQL을 직접 사용하며 정보를 계속 주고받는 방식 내장 SQL 다른 프로그램 안에 삽입되어, 그 프로그램이 사용자의 요청에 따라 DB에 접근할 때 이미 등록된 SQL에 따라 정보를 보여주는 방식 👊 SQL의 구성요소에 따른 분류 DDL(데이터 정의어) DCL(데이터 제어어) DML(데이터 조작어)..
2020.06.18 -
[SQL vs NoSQL]관계설정
SQL : 테이블을 같은 비중으로 합침 SELECT 합친후출력할필드명1, ... FROM 기준이되는테이블 INNER JOIN 한곳으로모을곳 ON 조건 MongoDB : Object의 한 Key의 Value에 또다른 Object가 들어간다. db.webdev.insert( { _id: 4, name: "html", category: "structure", editor: [ { name: "Notepad", company: "Apple", convenience: 0 }, { name: "Visual Studio Code", company: "Microsoft", convenience: 100 }, ] } )
2020.05.13