목록[Web]/[DB & Mybatis] (28)
요르딩딩
옛날에는 데이터를 file형태로 저장했으나, 1960년대에 누구나 테이터를 정리정돈하여 사용할 수 있도록 관계형데이터베이스가 등장했다. 이를 고안해낸 사람은 에드거 F. 커드로 관계형 데이터베이스 이론을 기술하였다. 실행방법 - mysql 공식홈페이지: 다운받으면 되지만, 번거로움 (mysql - community) - 리눅스에서 mysql를 설치하는법 (리눅스의 우분투를 활용) > 검색을 통해 명령어를 터미널에 입력하면 된다. 쉬움 - 집 : mysql를 쉽게 설치해 주는 프로그램 > bitnami를 사용 > 터미널(cmd)를 사용하여 실행가능 - codeamywhere : 컴퓨터를 임대해 줘서 다운받지 않고 사용가능. 실행 : mysql 설치 디렉토리로 이동 > bin > ./mysql - uroot..
포괄 열 인덱스는 인덱스에 인덱스 키(정렬) 열과 함께 키가 아닌 열(비정렬)들을 포함할 수 있게 확장된 비 클러스터형 인덱스를 말한다. 포괄 열 인덱스는 인덱스 키 값에 포함하지 않아 정렬이 발생하지 않고, leaf level에 데이터가 같이 있어 Lookup 연산도 발생하지 않아 쿼리 성능에 도움을 준다. 또한 인덱스 키와 달리 데이터의 추가, 변경, 삭제 시 재정렬이 일어나지 않으므로 인덱스 관리 비용이 적다는 장점이 있다.
인덱스 :책의 목차와 비슷한 개념(색인) rowid :데이터를 삽입할 때 DB 내부에서 자동적으로 생성하는 값으로, 해당 row(행)의 고유한 주소 값을 가리킨다. (rowid를 통한 검색은 DB에서 가장 빠르게 데이터를 찾아낼 수 있는 검색 방법) [설명] 인덱스는 내부적으로 데이터를 B-tree구조로 저장하기때문에, 원하는 값을 찾은 후에는 더이상 조회를 하지 않는다. 즉, full-scan을 하지않는다는것이다 (효율적), 인덱스는 생성해 놓으면 내부적으로 알아서 동작한다. 그러므로, 인덱스를 통해 rowid를 찾은 후, 원하는 테이블에서 rowid를 통한 검색은 무척 효율적이게된다.
읽음카운트에 대해서 얘기하자. 예를들어서 500명이 있는 단톡방에 대화 400개 이상 안읽었던 사람이 오랜만에 들어간다! 라고 하면 i/o가 기하급수적으로 늘어납니다. Update문을 실행시킬때, DBMS내에서는 내부적으로 delete 후 insert 하는 방식으로 처리됩니다. update문 1회실행하는데 I/O는 2회 발생하는거죠. 순차탐색으로 특정일 이전의 데이터들을 전부 업데이트 치면 성능이 급격하게 떨어짐니다. 이는 업무 특성에 맞는 db설계만으로 i/o를 획기적으로 줄일수가 있습니다. 예를들어 설명해볼게요. 홍길동이 t_chat 테이블에 unread_users라는 필드를 두고.. chat 별로 unread_users 필드에 "1001,1002,1003" 으로 저장해두고 유저 1002가 해당 챗을..