배운 내용을 적용해보면서 궁금한 점이 생겨 질문드립니다. 게시판 특성상 계속해서 게시물이 쌓이게 되어 데이터의 양이 늘어날 것이라 생각합니다. 일반적으로 게시글 상세 페이지로 들어가기 전에 페이징된 게시물 리스트를 보면 해당 게시글의 제목, 조회 수, 좋아요 수 등이 표시되기도 하는데 그렇다면 보통 현업에서는 각각의 좋아요 수 쿼리와 조회 수 쿼리를 날려서 많은 데이터들을 그때그때 full scan하도록 하는지 아니면 역정규화를 수행하여 원래 테이블에 좋아요 수나 조회 수 컬럼을 붙여 넣는지 궁금합니다.
안녕하세요. MySQL 사용에 있어 Where절 내 조건의 순서가 쿼리 성능에 영향을 미치는지 여쭙고자 문의드립니다. 기본적으로는 옵티마이저가 쿼리를 최적화하기 때문에 Where절의 순서가 중요하지 않은 것으로 알고 있는데, DBMS에 따라 통계정보를 활용하는 데 있어 차이가 있다는 이야기를 들은 바 있어 호기심에 여쭤봅니다. (MySQL 공식문서에는 관련된 내용을 못 찾겠네요..)
안녕하세요 선생님, 집계연산자 다가 궁금한게 생겨서 질문드려요. 이 쿼리를 쓸때 여러 수식을 중복해서 쓰는데 and 를 쓰면 왜 오류가 나나요? 여러함수를 같이 쓴다 = and를 써서 이어줘야 한다 라고 이해하고 있는데 제가 잘못 이해한 부분이 있는 것 같아서요. 피드백 부탁드립니다!
안녕하세요 ㅠㅠ 제가 알기론 궁극적으로 목표한 테이블이 연결되면 어떤 방식으로 조인을 하든 상관없는걸로 알고있는데 이렇게하니까 하나의 행도 반환되지 않더라고요.... 혹시 무슨 문제가 있는건지 알 수 있을까요?? 조인 기준 컬럼이 중복되면 안되는걸까요? 조인 문제를 풀 때 조인을 먼저하려고 SELECT절은 *로 먼저 두고 시작을 하는데 그때는 오류코드로 Error Code: 1060. Duplicate column name 'category_id' 다음과 같이 나오더라고요 ㅠㅠ
안녕하세요. 좋은 강의 감사드립니다. 강의 내용 중, VARCHAR타입 컬럼에 더 긴 문자열로 UPDATE 작업 시 이전 공간은 delete marking 된다고 하셨습니다. PostgreSQL의 경우에도 비슷한 매커니즘을 사용하기 때문에 VACUUM을 사용해 단편화 문제를 해결하는 것으로 알고 있고, 찾아보니 OPTIMIZE TABLE문을 통해 비슷한 작업을 할 수 있는 것 같습니다. PostgreSQL의 경우에는 VACUUM을 주기적으로 수동으로 해줘야 한다고 알고 있습니다만 MySQL의 경우에는 OPTIMIZE TABLE을 수동으로 해줄 필요가 있는지, 있다면 어느 정도 주기가 좋은지 궁금합니다.
MariaDB 사용하고 있고 버전은 아래와 같은데 회사 DB로 버전 변경은 불가능한 상태입니다. 버전 : 10.4.12-6-MariaDB-enterprise-log EXPLAIN ANALYZE 사용 시 에러가 발생하여 구글링 해보니 MariaDB 에서는 사용이 불가능한 것 같더라고요. Mysql 에서 EXPLAIN ANALYZE 로 조회되는 내용을 동일하거나 유사하게 볼 수 있는 방법이 없을까요?
설치 중 이 단계에서 계속 에러가 납니다 구글링 해보니까 pc명이 한글이라서 그렇다는데 제 pc명은 영어거든요...... 그외의 블로그나 구글에서 할 수 있는 모든 조치를 했지만..안되네요 이제 포맷 하나 남았는데..포맷까진 가고 싶지 않아요 너무 귀찮습니다.. 도와주세요..
안녕하세요. 1,2 강의 전부 잘봤습니다!! 많은 도움 되었습니다. 근데 강의에 대한 질문은 아닌데 도저히 여쭤볼 사람이 딱히 없어서요.. 현재 백엔드 취준생인데 프로젝트에 mysql 레플리카를 도입해서 master / slave1,2 아키텍처를 구성 하였습니다. --master [mysqld] log_bin = mysql-bin server_id = 10 binlog_do_db = reservation default_authentication_plugin = mysql_native_password -- slave [mysqld] log_bin = mysql-bin server_id = 11 relay_log = /var/lib/mysql/mysql-relay-bin log_slave_updates = ON read_only = ON default_authentication_plugin = mysql_native_password master와 slave에 맞게 설정을 해주고 master의 LOG_FILE, LOG_POS를 토대로 각각의 슬레이브에 설정하여 Slave_IO_Running , Slave_SQL_Running slave1,2 각각 YES 인걸 확인하고 데이터 복제 및 인덱스 복제 까지 잘 동작하는것 까지 확인하였습니다. 그래서 백엔드 로직에서 ReadOnly 쿼리 비지니스로직은 SLAVE1,2의 dataSource가 할당 되어서 동작 하도록 구성하였고 실제로 테스트 해봤는데 master가 아닌 SLAVE1,2에서만 읽는것을 확인 하였습니다. 근데 여기서 문제인게 읽기작업에 대해서만 부하를 줘서 성능테스트를 진행하였는데 실제로 레플리카를 도입하기 이전 1대의 mysql 서버만 존재했을때가 성능이 20~30% 가 더좋게 나옵니다. 저는 실제로 이미 쓰기작업을 끝낸 데이터에 대해 읽기 작업을 slave1,2가 트래픽을 분산(라운드 로빈 방식으로 정확히 50프로 확률로 분산) 하여 처리하니까 성능이 올라갈것으로 기대했는데 왜그런지 도저히 모르겠습니다. 추가로 쓰기작업(JPA 긍정적 락), 읽기작업을 동시에 요청하는 부하테스트도 진행 했는데 물론 이 경우도 쓰기는 master만 진행하고 읽기작업은 나머지 slave1,2에서만 진행하는걸 확인했지만 성능 결과 1대의 mysql서버가 읽기,쓰기를 다 처리하는것이 성능이 더 좋았습니다. 그래서 제가 내린 결론은 만약 제가 한 테스트 방법이 잘못되지 않았다고 가정할 경우 SLAVE 아키텍처를 가져 갈 경우 성능 향상보다는 부하를 분산시켜 최대 허용 TPS 향상 및 아키텍쳐의 안정성을더 해주는게 의미가 있다고 생각되고, 만약에 SLAVE1,2를 두었는데 무조건 읽기작업의 성능향상이 이뤄져야 한다고 말씀 하시면 어떤 부분에서 제가 무엇을 잘못 설정한걸 수 도있는지 아니면 어떤 이유가 존재할 수도 있는지 해결가능성이 있는 키워드정도 알려주시면 정말 감사하겠습니다. 추가로 상황에 따라 다르겠지만, 마스터 슬레이브 간의 동기화 문제를 해결하는 가장 보편적이고 추천 해주실만한 방법(제가 생각한 방법은 쓰기작업 직후의 읽기작업은 슬레이브가 아닌 마스터에서 하는 방식)이 있는지 알려주시면 정말 감사하겠습니다! 긴글 읽어주셔서 감사합니다.
인덱스가 null인 컬럼을 포함하고 있고 대상컬럼이 nullable column인지 not null column인지 상관없이 어떤 인덱스를 읽어도 테이블의 정확한 레코드 수를 가져올 수 있다는게 무슨 뜻인지 이해가 잘안가서 질문 드립니다. 1. 인덱스가 null인 컬럼을 포함하고 있다는것은, 인덱스가 존재하지 않는 컬럼을 의미하는 건가요 아니면 nullable 컬럼에 생성한 인덱스를 의미하는 건가요? 2.nullable column이 존재하더라도 not null column에서 레코드를 읽는 덕분에 라는 건가요?
안녕하세요 수업을 듣다가 궁금한게 생겨서 질문드립니다~ 서브 태스크 설계는 대댓글과 같은 계층형 구조로 가져가면 될까요? 무한대댓글(네이버 카페 대댓글 구조)일 때 보통 db 설계를 어떻게 가져가나요?찾아보니 인접리스트랑, 클로저테이블 등 db 패턴이 있다는데 어떤 형태로 가져가는지 궁금합니다!
강의를 보다가 궁금증이 생겨서 질문합니다. 만약 로그인 안 한 사용자(회원X)도 볼 수 있는 게시글이라고 할 때, 조회수를 어떻게 해야하는 건가요? 로그인 한 사람(회원O)만 게시글을 볼 경우 중간테이블을 만들어 이미 봤다면 조회수를 안 올리기 위해 만든 다는 것까지는 이해했습니다. 제가 생각한 방식은 게시글에 컬럼에 로그인 안 한 사용자의 조회수 넣기(그냥 수로 관리) 로그인한 사용자의 경우는 중간테이블로 조회수 관리 데이터를 따로 관리해서 이 둘을 합산해서 총 조회수로 만든다 인데 제가 너무 복잡하게 생각한 건지, 다른 좋은 방법이 있는지 궁금합니다