정말 기본적인 생각임에도 불구하고, 처음부터 다시 생각해보는 의미로 작성하게 되었다.SQL에서 JOIN을 사용할 때 ON 조건을 작성하는 방식은 개발자마다 다를 수 있다. 하지만 드라이빙 테이블(Driving Table)을 JOIN 조건의 좌변에 두는 것이 더 좋은지에 대한 고민은 필요하다.이번 글에서는 드라이빙 테이블의 개념과 JOIN 조건에서 좌변과 우변의 차이를 살펴보고, 어떤 방식이 가독성과 유지보수에 유리한지 정리해 보았다.1. 드라이빙 테이블이란?JOIN이 실행될 때, SQL 옵티마이저는 어떤 테이블을 기준으로 다른 테이블과 매칭할지 결정한다. 이때 먼저 처리되는 테이블을 드라이빙 테이블(Driving Table) 이라고 한다.예제를 살펴보겠다.SELECT o.order_id, o.order_..
데이터베이스를 공부하면서 데이터베이스와 인스턴스, 그리고 하드웨어 코어위에 어떻게 올라가서 돌아가는지 궁금해져서 찾아보게 되었다.물리적 하드웨어 코어, 하이퍼스레딩, 멀티스레딩, 멀티프로세싱이냐 멀티스레딩이냐 에 대한 개념들도 나오게 되었고, 오라클(Oracle)과 MySQL이 각각 어떤 방식을 쓰는지, 그리고 그게 실제 성능에 어떤 영향을 주는지 알아려고 한다. → DBMS는 기본적으로 여러 코어를 활용하며, 코어 수에 따라 성능이 좌우된다.근데 잠깐, 멀티프로세싱이랑 멀티스레딩이 뭐야? 🤔1. 멀티프로세싱 vs 멀티스레딩, 뭐가 다른데?1) 멀티프로세싱 (Multi-processing)쉽게 말해서 여러 개의 독립된 프로세스를 만들어서 동시에 작업하는 방식프로세스끼리는 메모리를 따로 갖고 있어서 안전..

프로그래밍이나 데이터 관련 공부를 하다보면 관련 용어들이 많이 등장하는데 용어들이 서로 비슷하기도 하고 서로간에 어떠한 관계가 있는지 정리할 필요성을 느껴 기록하게 되었다. 용어들이 점차 확장되도록 정리하려고 했다. 데이터란 ?데이터는 실세계의 가공되지 않는 모든 자료들을 말한다.우리는 실세계에서 가공되지 않은 자료들이 넘쳐나는 시대에 살고 있는데, 그 중에는 우리에게 유의미한 자료들도 있을것이고, 필요하지 않은 무의미한 정보들도 섞여 있을 것이다.정보란 ?그 많은 데이터들 중 우리에게 쓸모있고 의미있는 내용으로 추출하고 가공하여 체계적으로 조직한 데이터를 의미한다.데이터베이스(Database, DB) 란 무엇일까 ? 한마디로 '데이터의 집합'이라고 할 수 있다. 위에서 얘기한 수많은 방대한 데이터들을..

자바로 백업모듈을 만들어야 했는데, 자바에서 pg_dump를 실행해 sql파일을 떨구는 일이다.우리가 가져가고자 하는 백업 프로세스를 간단히 말하자면전체백업은 하루에 한번, 특정 테이블 데이터는 데이터특성에 따른 주기별로 1) 기존 백업스키마 데이터 삭제2) 백업테이블 갱신3) 백업스키마 sql 백업4) DB 전체 sql 백업순으로 이루어 진다.기존에는 리눅스에 쉘스크립트 생성후 cron으로 돌려 파일백업, 전체백업을 진행했는데 이번에는 자바모듈안에서 해결했으면 좋겠다고 하셨다. 백업모듈은 데몬으로 돌아야하는데, 이렇게 실행하나 저렇게 실행하나 데몬역할을 하는거라고 보면 된다고 하셨는데, 서비스로 띄우는것과 약간 차이가 있지 않나 더 알아봐야 할 것 같다.이 작업을 하기 위해 자바에서 커맨드명령어를 날려..

업무에서 리눅스 서버 설치, 서비스 배포 등 다룰일이 있어서, 관련 지식을 갖출 겸 공부를 해야겠다고 생각하고리눅스 마스터 2급 시험을 신청하게 되었다. 리눅스마스터 시험은 1차, 2차에 걸쳐 시행된다.1차는 온라인(오픈북)시험, 2차는 우리가 익히 아는 실기 시험장에 가서 치루는 CBT 시험으로 이루어진다.나도 시험을 치루기 전 가장 단기간에 효율적으로 공부하기 위한 방법을 찾아봤고, 다행히도 1차, 2차 모두 합격했고, 빠르게 준비해서 시험을 치루고자 하는 이들을 위해 공부하는 법을 공유하고자 한다.사실 특별한 방법은 없다. 1차 시험준비필요 X1차시험은 집에서 pc로 시험을 치면 된다. 오픈북 시험이라고 봐도 무방하다.인터넷에 리눅스마스터 2급 족보 를 검색하면 이것저것 많이 나온다. 족보들을 모아..

jvm에 대해 검색하면 자주 보이는 부분이 heap메모리 영역과 runtime data area 에 대한 글들을 많이 볼 수 있다. 나는 우리가 작성하는 소스코드가 메모리에 어떻게 올라가고 어떻게 동작하는지 궁금하여 JVM에 관한 책들을 읽게 되었다. 간략하게 말하자면 우리가 작성한 자바 소스코드는 먼저 자바컴파일러에 의해 컴파일 되어 JVM이 실행할수있는 class 파일로 변환되고 클래스 로더가 JVM으로 클래스를 로드 한 후 로딩, 링킹 과정을 거쳐 runtime data area에 배치한다. JVM에서 Class파일의 실행은 Class Loader를 통해 로딩되면서 시작되기 때문에, Class Loader에 대한 이야기를 먼저 정리해보려고 한다. 🔸Class Loader Java의 특성 중 하나는 ..

운영중이던 작은 서비스에서 그동안 없던 힙덤프가 생성되었다며 분석을 해 볼 기회가 생겼다. 관련 툴을 다운받고 어떻게 힙덤프파일을 보는지 간단히 기록해보고자 한다. Heap Dump 분석하기 생성된 Heap Dump를 Eclipse Memory Analyzer(MAT) 툴을 이용하여 분석할 수 있다. 다운로드 받은 후 MemoryAnalyzer.exe 파일을 실행한다. 그런데 MAT를 실행하니 아래와 같은 오류가 발생했다. JVM 버전 1.8.0_181은이 제품에 적합하지 않습니다. 버전 : 17 이상이 필요합니다. 이런 이야기이다. 실행 버전을 충족시키기 위해 아래링크에서 jdk 17을 다운받고 Download the Latest Java LTS Free Download the Latest Java L..

소켓 통신, 서버소켓을 구현하고 수신한 데이터(바이트)를 문자로 변환하는 작업을 해보게 되었다. 그 과정에서 알게 된 개념과 정보들을 기록해보고자 한다. 소켓(Socket) **소켓(Socket)**은 TCP/IP 기반 네트워크 통신에서 데이터 송수신의 마지막 접점을 말한다. 소켓통신은 이러한 소켓을 통해 서버-클라이언트간 데이터를 주고받는 양방향 연결 지향성 통신을 말하는데, 보통 지속적으로 연결을 유지하면서 실시간으로 데이터를 주고받아야 하는 경우에 사용된다. 소켓은 클라이언트 소켓과 서버 소켓으로 구분되며, 소켓간 통신을 위해서는 네트워크상에서 클라이언트와 서버에 해당되는 컴퓨터를 식별하기 위한 IP주소와 해당 컴퓨터내에서 현재 통신에 사용되는 응용프로그램을 식별하기 위한 포트번호가 사용된다. 서버..
- Total
- Today
- Yesterday
- JavaScript
- AWS
- Spark
- spring
- 인덱스
- EC2
- 데브캠프
- @Configuration
- 스프링 빈
- 자바스크립트
- 자바의정석
- 스프링의정석
- Node.js
- 남궁성
- 데이터베이스
- Oracle
- 친절한SQL튜닝
- MySQL
- 코드로 배우는 스프링 웹 프로젝트
- 시큐리티
- SQL
- 리액트
- node
- 스프링 프로젝트
- 한입크기로 잘라먹는 리액트
- 옵티마이저
- React
- 이정환
- 멀티스레딩
- 스프링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |