전체보기(194)
-
MYSQL 5.7 특징
JSON 지원 일반적으로 text 컬럼에 json 데이터를 넣으면 나중에 검색할 때 어려움이 많습니다. 데이터를 모두 읽어서 다시 파싱하고, 특정 항목을 찾아서 테이블의 별도 컬럼에 저장한 다음에 그 컬럼으로 인덱스 생성하는 등 작업할게 많습니다. 하지만 이제 native json 데이터 타입 컬럼에 넣어두면 이 모든 작업을 간편하게 진행할 수 있습니다. 쿼리 성능 향상 임시 테이블 엔진 변경 기존에는 sub query를 사용할 때 만들어지는 임시 테이블이 MyISAM이었습니다. 그런데 MYSQL 5.7부터는 INNODB 엔진으로 바꾸면서 성능이 더 좋아졌습니다. UNION ALL 수정 더 이상 UNION ALL을 진행할 때, 임시 테이블을 생성하지 않습니다. Optimizer Hint 수정 Optimi..
2022.04.23 -
asnyc & await
async async 키워드는 function 앞에 위치합니다. function 앞에 async를 붙이면 해당 함수는 항상 Promise를 반환합니다. Promise가 아닌 값을 반환하더라도 이행 상태의 Promise로 값을 감싸 이행된 Promise가 반환되도록 합니다. 아래의 예시로 테스트해보면 f()와 t() 모두 같은 결과를 보여줍니다. async function f() { return 1; } f().then(alert); async function t() { return Promise.resolve(1); } t().then(alert); await awiat은 async 함수 안에서만 동작합니다. JavaScript는 await 키워드를 만나면 Promise가 처리될 때까지 기다립니다. 결과..
2022.04.20 -
Clustering Factor
Clustering Factor란 Clustering Factor란 Index의 테이블에 대한 정렬 정도를 의미합니다. 정렬 정도를 측정하기 위해 DB는 Index를 scan하는 동안 방문하게 되는 Table의 데이터 블록의 갯수로 나타냅니다. 이는 Clustering Factor가 높아지면 읽어들이는 Data Block의 갯수가 많아지기 때문에 Physical Read가 높게 나온다는 것을 의미합니다. Physical Read는 성능과 밀접한 관련이 있기 때문에 Clustering Factor를 최소화하는 것이 튜닝의 중요 요소 중 하나라고 할 수 있습니다. Good Clustering Factor Good Clustering Factor란 Index 순서와 Table의 순서가 거의 완벽하게 일치하는 ..
2022.04.17 -
Optimizer
Optimizer의 개념 Optimizer란 SQL 개발자가 SQL을 작성하고 실행할 때, Optimizer는 SQL을 어떻게 실행할 것인지를 계획합니다. Optimizer는 SQL 실행 계획을 수립하고 SQL을 실행하는 DBMS의 소프트웨어입니다. 동일한 결과가 나오는 SQL도 어떻게 실행하느냐에 따라 설능이 달라집니다. Optimizer 특징 Optimizer는 데이터 딕셔너리에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해서 예상되는 비용을 산정합니다. Optimizer는 여러 개의 실행 계획 중에서 최저 비용을 가지고 있는 계획을 선택해서 SQL을 실행합니다. Optimizer의 필요성 개발자가 작성한 SQL문을 어떻게 실행하느냐에 따라 성능이 달라집니다. Optimizer가 비효율적으로 ..
2022.04.03 -
Index Scan 종류
Index Range Scan B-tree 인덱스의 가장 일반적이고 정상적인 형태의 액세스 방식입니다. 인덱스 루트에서 리프 블록까지 수직적 탐색을 하고 필요한 범위만큼 수평정 탐색하는 스캔 방식입니다. Index Range Scan을 하려면 선두 컬럼을 가공하지 않은 상태로 조건절에 사용해야 합니다. Index Full Scan Index Full Scan은 수직적 탐색 없이 인덱스 리프 블록 처음부터 끝까지 수평적으로 탐색하는 방식입니다. 데이터 검색을 위한 최적의 인덱스가 없을 때 차선으로 선택됩니다. 만약, 인덱스 선두 컬럼이 조건절에 없으면 옵티마이저는 먼저 Table Full Scan 방식을 고려합니다. 그런데 대용량 테이블인 경우에 Table Full Scan 방식이 부담된다면 옵티마이저는 ..
2022.03.31 -
Maven
빌드 빌드란 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정 혹은 그에 대한 결과물을 의미합니다. 즉, 우리가 작성한 소스 코드, 각종 파일 및 자원 등을 WAS가 인식할 수 있는 구조로 패키징하는 과정 및 결과물을 빌드라고 합니다. 빌드 도구 빌드 도구란 프로젝트 생성, 테스트, 빌드, 배포 등의 작업을 위한 프로그램을 의미합니다. 빠른 기간 동안 계속 늘어나는 라이브러리 추가, 라이브러리 버전 동기화의 어려움을 해소하고자 등장했습니다. Maven Maven이란 프로젝트의 전체적인 라이프 사이클을 관리하는 도구의 일종입니다. 필요한 특정 라이브러리를 pom.xml에 정의해 놓으면 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데 필요한 다른 라이브러리들까..
2022.02.27