개발자

DB 뷰가 메모리에 적재된다면

2023년 04월 30일조회 190

얼마전 질문을 받았는데 답변이 궁금해서 남깁니다. 메모리에 올라가는 뷰를 생성했는데, 용량이 큰 뷰가 메모리에 올라가 적재되어 메모리가 가득차는 상황이 됐다. 이때 해결방법은? 제가 뷰를 많이 사용하지 않아 해결방법을 잘 모르겠습니다. 개발자분들의 의견이 궁금합니다!

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

김병수님의 프로필 사진

안녕하세요~~ "메모리에 올라가는 뷰를 생성했는데~~~"라고 하셨다고 create view로 정의하신 데이터가 모두 메모리에 올라가신다고 생각하시는 걸가요? view는 실제 데이터를 memory or disk에 저장하지 않고 실행되는 시점에 저장된 쿼리를 실행시킵니다 즉 view는 쿼리를 저장하고 있는게 맞는 표현입니다 "Views are stored queries that when invoked produce a result set." <- 참고 : https://dev.mysql.com/doc/refman/8.0/en/views.html 그렇다고 메모리를 이용 안하는건 아닙니다 정확한 내부 동작은 잘 모르지만 일반적인 select와 유사할것이라 판단되고 특정 조건이나 limit을 주지 않으면 걱정하시는 문제가 발생할 수 있습니다 대용량 데이터가 저장된 table을 where or limit 없이 select 하지 않는 이유와 같다고 생각됩니다 결론적으로 디비에는 엄청 많은 데이터가 저장될 수 있고 select ~ from table or view 할 시점에 조건을 잘 정의하셔야합니다

profile picture

익명

작성자

2023년 05월 04일

뷰에 대한 지식이 부족해 명확하지 않은 질문을 올렸음에도 불구하고 잘 답변해주셔서 감사합니다! 말씀주신 내용 관련해서 더 학습해보고 내부원리도 찾아봐야겠네요 지식과 공유해주신 링크 감사히 읽도록 하겠습니다. 행복한 연휴 보내세요!

커리어리 AI 봇님의 프로필 사진

메모리에 올라가는 뷰를 생성했을 때 메모리 용량이 부족해지는 상황이 발생할 수 있습니다. 이 경우 해결 방법은 다음과 같습니다. 1. 메모리 용량을 늘리는 것 - 시스템에서 사용 가능한 메모리 용량을 늘리는 것으로, 더 많은 메모리를 추가하거나 클라우드 서비스를 사용할 수 있습니다. 2. 뷰를 분할하여 사용하는 것 - 대용량 뷰를 작은 조각으로 나누어 사용하는 방법입니다. 예를 들어, 뷰를 연도별로 분할하거나, 중요한 데이터만 선택해서 뷰를 만들어 사용하는 방법 등이 있습니다. 3. 인덱스를 최적화하는 것 - 인덱스는 적절하게 최적화하여 뷰의 성능을 개선할 수 있습니다. 인덱스를 잘 설계하면 뷰에 접근하는데 필요한 시간을 줄일 수 있습니다. 4. 뷰 대신 테이블을 사용하는 것 - 뷰를 사용하지 않고 테이블을 직접 사용하는 것으로, 뷰를 생성하지 않고 필요한 데이터를 직접 가져와서 처리하는 방법입니다. 이 방법은 뷰를 사용할 때보다 더 많은 시간과 노력이 필요하지만 메모리 사용량을 줄일 수 있습니다. 위와 같은 방법으로 메모리 용량을 줄이거나 최적화하여 대용량 뷰를 안정적으로 사용할 수 있습니다.

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!