일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- c#
- 자바 프로젝트
- 운영체제
- 파이썬
- jsp
- 학점
- JVM
- smart cast
- 파이썬 소스
- SQL
- MongoDB
- auto configure
- 리눅스
- 유사코드
- 백준 알고리즘
- K6
- hyperledger
- resilience4j
- spring
- gradle
- 프로젝트
- 티스토리
- 초대장
- 자바
- 오라클
- oracle
- 알고리즘
- 문법 정리
- dynamic query
- 오라클 디비
- Today
- Total
목록전체 글 (231)
모종닷컴
MySQL 스레딩 구조 MySQL 서버는 프로세스 기반이 아닌 스레드 기반으로 동작한다. 그리고 이 스레드는 크게 포그라운드 스레드와 백그라운드 스레드로 나뉜다. 41개의 백그라운드 스레드와 3개의 포그라운드 스레드로 총 44개의 스레드가 실행중이다. 위는 MySQL 서버가 전통적으로 가지고 있는 스레드 모델이며, 서버의 설정이나 어떤 에디션을 사용하는지에 따라 다를 수 있다. 포그라운드 스레드 = 클라이언트 스레드 MySQL 서버에 접속된 클라이언트의 수만큼 존재하며 클라이언트 사용자가 요청하는 쿼리 문을 처리 사용자가 작업을 마치고 커넥션을 종료하면 해당 커넥션을 담당하던 스레드는 스레드 캐시로 되돌아간다 스레드 캐시에 일정 개수 이상의 대기 중인 스레드가 있으면 스레드 캐시에 넣지 않고 스레드를 종..

MySQL 서버는 사람의 머리역할을 담당하는 MySQL 엔진과 손발 역할을 담당하는 스토리지 엔진으로 구분할 수 있다. 그리고 손과 발의 역할을 담당하는 스토리지 엔진은 핸들러 API를 만족하면 누구든지 스토리지 엔진을 구현해서 MySQL 서버에 추가해서 사용할 수 있다. MySQL 아키텍처 MySQL 서버는 일반적인 다른 DBMS에 비해 구조가 살짝 독특하다. 이러한 구조는 다른 DBMS에서는 가질 수 없는 이점도 있지만 반대로 문제가 되기도 한다. 아래의 사진에서 SQL 파서, SQL 옵티마이저, 캐시 & 버퍼, CRUD 인터페이스와 + 보이지는 않지만 커넥션 핸들러를 포함하여 MySQL 엔진이라 부르며, MySQL 엔진 + 스토리지 엔진 = MySQL 서버라 부른다. 아래 파일 시스템 부분은 운영체..

구세주 등장 2021년 1월 회사에 시니어 개발자 한 분이 오셨습니다. 오시자마자 엄청 바쁜 하루를 보내시면서도 다양한 시도도 많이 하시고 리팩토링도 아주 예쁘게 해서 꾸준히 PR을 올려주시더라고요. (리뷰하느라 엄청 힘들었던 건 씨끄릿) 그 비법이 알고 싶다. 평소 저는 겁이 많다고 해야 하나 자신감이 없었다고나 해야 할까.. 아무튼 굉장히 소극적인 태도였습니다. 내가 이걸 올렸는데 사람들이 비웃으면 어떡하지, 이렇게 수정했는데 대형사고 치는 거 아니겠지.. 이렇게 말을 하는 게 맞는 건가..? 아무튼 저는 시니어분께 용기 내서 물어봤습니다. "○○○(닉네임)은 이런 다양한 시도나 리팩토링 하시면 안 무서우신가요? 저는 버그(실수) 낼 것 같고 엄청 쫄리더라구요" 시니어분이 대답하시더라고요. "음.. ..

지난 1편에서는 리팩토링 중 스프링 프록시와 관련한 문제를 경험하였고 이에 대한 해결책 3가지를 알아보았습니다. 이번 포스트에서는 스프링이 프록시를 생성하는 방법 2가지에 대해 알아보는 시간을 가지려고 합니다. 그리고 스프링 부트에서 설정된 프록시 생성방법에 대해 설명드리겠습니다. 프록시란? 프록시를 검색해보면 아래와 같은 의미를 지니고 있음을 볼 수 있습니다. 어떤 일을 대신 맡아서 행하는 걸 뜻한다는 걸 알수 있습니다. 저희가 흔하게 듣는 프록시 서버가 바로 이러한 뜻입니다. 그리고 지금 포스트하려는 스프링에서 프록시는 어떠한 A객체의 일을 대신 위임받아 행하는 객체라고 이해해주시면 될 것 같습니다. 스프링에서 프록시 생성 방법 스프링에서 프록시를 생성하는 방법은 크게 2가지가 있습니다. CGLIB를..

에플리케이션 테이블 중 거의 로그성으로 전문의 일부 내용을 저장하는 테이블이 있었습니다. 이 데이터는 RDB에 저장이 되고 있었는데 막상 만들고 유지하려고 하다보니 업데이트할 필요도 물론 없었고 검색도 사실상 거의 한적이 없는 테이블이었습니다. 그렇다면 이게 굳이? RDB에 있어야하나 라는 생각을 했습니다. RDB는 이름에서 짐작할 수 있듯이 관계를 가지고 유지하기 위한 데이터베이스라서 전문 데이터를 삽입한다고 했을 때 이러저러한 조건들을 따지기 시작합니다. RDB의 MBTI는 J에 가깝다고 볼 수 있죠 이러저러한 조건을 피곤하게 따지는 이녀석은 조금 느립니다. 아래는 nosql과 삽입 성능을 비고하는 표입니다. 더이상 RDB에 있을 필요가 없는 녀석이기에 NoSQL로 옮기자는 결정을 내렸죠. (물론 삽..