DataBase
![[DB]분산 저장 기법(파티셔닝,샤딩,레플리케이션)의 개념](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFFYr3%2FbtrHuS0qnP7%2Fx1v3Ip80quKqYU7AEqYUsk%2Fimg.png)
[DB]분산 저장 기법(파티셔닝,샤딩,레플리케이션)의 개념
개 요 개발을 하는데에 있어서 서비스의 성능향상 또는 안정화에 관한 문제는 항상 고려해야하고 그만큼 중요하다. 가령 대부분의 서비스에서 클라이언트-서버와 통신을 할 때 데이터 I/O는 필수적이라고 볼 수 있고 그만큼 이용하는 유저들이 늘어났을 때의 트래픽을 감당하기 위한 적절한 조치와 방법을 찾아야한다. 다양한 방법이 존재하지만 이 포스팅에서는 서버가 DB와 통신해 데이터 I/O 작업을 할 때 이슈를 최소화하고 성능을 향상시키는 대표적인 방법(파티셔닝, 샤딩, 레플리케이션)에 대해서 알아보려고 한다. 개 념 파티셔닝(Partitioning) 파티셔닝이란 데이터베이스를 특정 조건을 적용해 여러 부분으로 분할하는 것이다. 하나의 DBMS에 데이터가 너무 큰 테이블이 들어가면서 용량과 성능 측면에서 이슈가 발..
[MySQL] 스토어드 프로시저(Stored Procedure) 기본
개요 평소 SQL을 사용할 때 일반적인 쿼리문을 자주 사용하게 되는데 특정한 경우 프로시저를 사용하면 편리성면에서 높은 효과를 볼 수 있을 것 같다는 생각이 문득 들었고 또, 자주 사용하는 문법이길래 이번 기회에 포스팅을 하려고 한다. 먼저, 프로시저란 무엇일까 간단하게 한 마디로 설명해보자면 여러 쿼리를 한번에 수행하는 것 마치 SQL문법의 함수(Function)와 아주 유사한 느낌이다. 하지만 우리가 아는 SQL함수와는 차이가 있다. 함수(Function) : 클라이언트에서 처리, 리턴값 필수, 리턴값 하나만 반환가능 프로시저(Procedure) : 서버로 보내서 처리, 리턴값 선택, 리턴값 여러개 반환가능 SQL 처리를 하는 위치에서의 차이점인데 속도면에서는 프로시저가 더 빠른 성능을 보인다고 한다..
[MySQL] 인덱스(INDEX) 정리(효과적인 INDEX 설계)
개요 MySQL 스키마 설계는 자주 해보았지만 효율적인 데이터타입, 인덱스 설계에 대한 부분은 이해도가 낮은 것 같아 조사 후 남기는 포스팅이다. 인덱스의 개념 인덱스는 테이블의 동작속도(조회)를 높여주는 자료구조이다. 인덱스로 데이터의 위치를 빠르게 찾아주는 역할이고 쉽게 예를 들어보면 책 뒷편에 '색인'이 인덱스의 역할과 동일하다고 볼 수 있다. (예를들어 '홍길동'이라는 단어를 찾고싶으면 색인페이지에서 '홍'으로 시작하거나 'ㅎ'으로 시작하는 색인을 찾아보면 빠르게 찾을 수 있다.) 인덱스는 MYI(MySQL Index)파일에 저장되며, 인덱스가 설정되지 않았다면 Table Full Scan이 일어나 성능이 저하되거나 치명적인 장애가 발생한다. 조회속도는 빨라지지만 UPDATE, INSERT, DE..
[MySQL] 데이터 타입(data_type) 정리
개요 MySQL 데이터 타입을 기록용으로 저장하기 위한 포스팅 공통 데이터 형식(M) : M 부동소수점 및 고정소수점 타입의 경우 정수타입의 최대 출력 폭을 나타낸다. ( 자릿 수 ) 문자형 타입의 경우 M은 최대 길이를 나타낸다.( M의 최대 사용 가능 값은 데이터 타입에 따라 다름 ) 숫자 데이터 형식 데이터 형식 바이트 수 숫자 범위 설명 BIT(N) N/8 1~64Bit 표현, b'0000'형식으로 표현 TINYINT 1 -128 ~ 127 정수 SMALLINT 2 -32,768 ~ 32,767 정수 MEDIUMINT 3 -8,388,608 ~ 8,388,607 정수 INT INTEGER 4 약-21억 ~ +21억 정수 BIGINT 8 약 -900경 ~ +900경 정수 FLOAT 4 -3.40E+..