"안내사항이 실제 도로상황과 다를 수 있으니 이 시스템은 참고용으로 사용하십시오."
자동차 네비게이션을 켤 때마다 나타나는 경고 메시지다
네비게이션 스스로 경고하듯, 자동차 운전자는 본인의 판단과 선택에 따라 운전해야한다
네비게이션 정보는 참고용일 뿐이다
데이터베이스 세계에서도 불완전한 옵티마이저에만 의존할 것이 아니라 개발자 스스로 옵티마이저가 되어야 한다
능력이 없어 맡기는 것이 아니라 바빠서 맡긴다고 생각하기 바란다
바쁘니 일단 옵티마이저에 맡기지만, 그 결과물이 올바른지 실행계획을 통해 늘 점검하고, 더 개선할 여지는 없는지 찾으려고 노력해야 한다
RDBMS를 사용하기 전, 그러니까 데이터 추출 프로그램을 일일이 로직으로 개발하던 시절로 돌아가 보자
그때는 자신이 개발한 프로그램 성능이 느리면 어떻게 해서든 빠르게 개선하려고 많은 노력을 했다 그래야만 했고, 그것을 본인의 역할로 인식했다
RDBMS 환경에서 개발하는 요즘 개발자들은 어떤가 결과가 올바르게 나오도록 SQL과 프로그램 로직을 구현하는 일은 본인 역할이라고 생각하지만,
SQL자체 성능은 DBA 또는 튜닝팀 역할이라고 생각하는 듯 하다
실행계획을 확인하는 방법조차 모르는 개발자도 많다
마치, 지도상에서 현재 자신의 위치가 어디인지도 모른 채 네비게이션에만 의존해 달리는 운전자의 모습과 비슷하다
기본적으로 옵티마이저에게 많은 일을 맡기는 RDBMS 환경에서 SQL 성능을 높이기 위해 개발자가 할 일은 다음과 같다
- 필요한 최소 블록만 읽도록 쿼리를 작성한다
- 최적의 옵티마이징 팩터를 제공한다
- 필요하다면, 옵티마이저 힌트를 사용해 최적의 엑세스 경로로 유도한다
실행계획이 모야
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=hanblueblue&logNo=221555988437
죄송한데 질문 좀 많이 해도 되나요?
저도 주니어 개발자라 아는건 많이 없는데 제가 알고 있는 곳 까지는 말씀드릴게요
이제 막 db 배우고 있는데, 1. WHERE문 사용하면, 해쉬가 아니라 id를 내부적으로 반복문이 도는 구조 같던데 맞죠? 2. 만약 해쉬로 도는 경우 distinct나 group by같은 중복 제거는 해쉬+ 연결리스트로 보장하나요?
ㅇㅅㅇ... 물어볼 것들이 많은데 답변 기다리겠습니다
해시조인에 대한 질문이 아니시면 where문을 사용할 경우 인덱스 테이블에 지정된 키 값이라면 해당 키가 존재하지 않는 곳까지 내부적으로 반복문이 도는 구조가 맞고 distinct의 경우에도 테이블 풀 스캔이나 인덱스 레인지 스캔이 돌면서 해당 값이 있는지 없는지 에어리어에서 확인을 전부 해야하기 때문에 풀 스캔이 맞을 것 같습니다. 그룹바이의 경우에도 그룹바이에 지정된 칼럼의 종류들을 담아둘 공간이 생기고 모든 데이터들이 분류되서 버퍼 캐시에 저장되고 출력되는 것으로 알고 있어요. 연결리스트는 리프에서의 수평탐색을 말씀하시는거면 모든 데이터들을 순회하면서 분류해야하기 때문에 말씀하신게 맞는 것 같습니다.
감사합니다.. 되게 높은 수준의 답변이셨어요.. 백엔드 취준생으로써 db 위주의 개발보다는 서비스로직이나 도메인로직 위주로 접근해야될 것 같네요.... 3.그룹바이에 지정된 칼럼 생성 시점은 테이블 쿼리로 생성 시점일까요? 아니면 테이블 쿼리 호출 시점일까요? 아니면 캐시와 관련된(호출된 데이터에 대해서만 보장) 내용의 말씀이실까요? 4. 쿼리 생성 시점이나 쿼리 호출 시점의 경우에는 내부적으로 해당 공간을 보장해줘야 하는데 이 경우 내부적으로 공간 할당은 os가 주는 4kb 단위겠죠?
쿼리를 어떻게 짜느냐에 따라 다를 것 같은데 지정된 칼럼 생성 시점은 해당 테이블이 생성되는 시점으로 알고 있습니다. 내부적으로 공간 할당은 데이터베이스의 공간이 모자라면 외부 인터럽트가 발생해서 os가 할당해줘야할 것 같습니다. 이 부분에 대해서는 저도 아직 잘 모르겠어요
usercall이 발생하는게 아니고 쿼리일 경우에는 rdbms의 리커시브 콜이 발생할텐데 그 순간에 공간이 모자라면 cpu에 하드웨어 신호를 보내주지 않을까 생각합니다
그러면 4kb 단위나 db에 대해 잘 모르겠지만 db에서 정한 size 단위(4kb 복수) 겠네요 진짜 좋은 답변 감사드립니다...
저도 공부하고 있던 차였는데 좀더 알아볼수있었어요 감사합니다
그러면 dba는 뭐먹고 살라는거냐
비즈니스 로직을 제외한 모든 단발성 튜닝쪽에는 아직 수요가 있다고 알고 있어요
옵티마이저가 뭔가요? 검색하니까 스타크래프트 맵이라고 나오네요.