DB가 죽는 이유 그리고 객체지향의 문제점에 대한 조금... 아니 어려운 이야기를 해주셨습니다 앞으로 진행될 강의와 우리가 고민해야 할 문제들도 포함된 중요한 이야기여서 정리해보겠습니다
DB가 죽는이유?
DB는 기본적으로 여러 사람이 처리할 수 있게 만들어져 있다 그러다 보면 Close(); 를 해줘야 하는데 안 해줘도 처음에는 티가 안 나다가 점점 시스템이 느려지고 결국은 먹통이 된다 시스템이 먹통이 되는 여러 경우 중 하나가 Full GC이다
Full GC가 발생하는 순간, 자바 애플리케이션이 멈춘다. (Stop-the-world). 따라서 Full GC는 성능과 안정성에 아주 큰 영향을 미친다.
그래서 대부분의 경우에는 서버를 한대가 아닌 2대 이상을 보유한다
⭐객체 하나에 Thread가 여러 개 객체지향의 문제점

이 상황에서 close를 하게 되면 C만 close 되고 나머지는 살아있게 된다 이런 것이 반복된다면 DB의 공간은 꽉 차게 되고 이러면 DB는 일을 멈추고 기다리게 된다 객체 하나에 스레드가 여러 개이다 보니 이러한 문제가 발생한다
ex) 지하철역에서 우산을 빌려주는 서비스를 한다고 했을 때 반납을 아무도 안 하게 되면 나중에는 결국 빌려줄 우산이 없어서 빌려줄 수 없게 된다 DB , 서버에서도 똑같이 이런 상황이 생긴다 그래서 처음 설계가 잘못된다면 나중에 돌이킬 수 없게 된다
👍<이런 상황을 안전하게 만들 수 있는 방법이 없을까? 이 코드가 안전한걸까? 하는 고민을 많이하는 개발자가 되어야한다 >
⭐이 상황을 안전하게 만들수있는 방법은?
바로 함수!!!! 로컬 변수!! 로컬 변수는 객체 안에서 만들어졌다가 함수가 끝나면 없어진다 위에 적용해보면
A Thread 가 지나가면 A Thread 만 쓰는 getTime 가 생긴다 B , C 도 마찬가지이다
이러면 각자의 지역변수들은 간섭할 수 없게 된다
'개발자 성장 일지' 카테고리의 다른 글
2022.03.28 Servlet 그리고 모델 1 , 모델 2 (0) | 2022.03.28 |
---|---|
2022.03.27 주말 공부 <크롤링 , Lombok 오류> (0) | 2022.03.27 |
2022.03.24 수업일지 (0) | 2022.03.24 |
2022.03.23 채팅 IO (0) | 2022.03.23 |
2022.03.23 IO를 활용한 파일 보내기 (0) | 2022.03.23 |