본문 바로가기

전체 글35

MySQL 아키텍처 - 2 1. 글로벌 메모리 글로벌 메모리 영역은 클라이언트의 스레드 수와 관계없이 한 개의 메모리 공간만 할당이 된다. 하지만 필요에 따라 2개 이상의 메모리 공간을 할당받기도 하지만, 스레드 수와는 관계없으며, 생성된 글로벌 영역이 다수라 하더라도 모든 스레드에 의해 공유된다. InnoDB 버퍼 풀 InnoDB 어댑티브 해시 인덱스 InnoDB 리두 로그 버퍼 테이블 캐시 2. 로컬 메모리 로컬 메모리는 세션 메모리 영역이라 표현하기도 하며, DB 서버상에 존재하는 클라이언트 스레드가 쿼리를 처리하는 데 사용하는 메모리 영역이다. 클라이언트가 DB 서버에 접속하면 DB 서버에서는 클라이언트 커넥션으로부터 요청 처리를 위해 스레드를 하나씩 할당하게 된다. 클라이언트 스레드가 사용하는 메모리 공간이라고 해서 클라.. 2022. 9. 27.
MySQL 아키텍처 - 1 1. 개요 1) MySQL 엔진: 사람으로 치면 두뇌역할 2) MySQL 스토리지 엔진: 사람으로 치면 손, 발 역할 (InnoDB, MyISAM) 2. MySQL 엔진 구조 MySQL은 다른 RDBMS와 마찬가지로 대부분 프로그래밍 언어로부터 접근을 지원한다. JDBC, ODBC 등 의 표준 드라이버를 이용해 자바나 파이썬 등 MySQL 서버에서 쿼리를 사용할 수 있도록 지원한다. 1) MySQL 엔진 요청된 SQL 문장을 분석하거나 최적화 등 두뇌에 해당하는 처리를 수행한다. 클라이언트로부터 접속이나 쿼리 요청을 처리하는 커넥션 핸들러와 SQL 파서 및 전처리기, 쿼리 최적화된 실행을 위해 옵티마이저가 중심을 이룬다. 또한 MySQL은 표준 SQL 문법을 지원하기 때문에 다른 RDBMS에 호환될 수 .. 2022. 9. 26.
MySQL 사용자 계정 관리 - 1 1. 식별 관리 MySQL의 사용자 식별은 다른 DBMS와 조금 차이가 있다. 사용자의 계정뿐만 아니라 사용자의 접속 지점(클라이언트가 실행된 호스트명 도메인, IP 주소 등)도 계정의 일부가 된다. MySQL의 계정의 개념을 말할 때는 항상 아이디와 호스트를 함께 명시해야 한다. 아이디와 IP 주소를 감싸고 있는 역 따옴표 (`)는 MySQL에서 식별자를 감싸는 따옴표 역할을 하는데 홑 따옴표(')로 변경하여 사용하기도 한다. 아래 사용자 계정은 항상 MySQL 서버가 가동 중인 로컬 호스트에서 test_id라는 아이디로 접속할 때만 사용할 수 있는 계정이다. 만약 사용자 계정에 다음 계정만 등록돼 있다면 다른 컴퓨터에서는 test_id라는 아이디로 접속할 수 없다. 'test_id'@'127.0.0... 2022. 9. 21.
MySQL 정적 변수와 동적 변수 1. 개념 MySQL DB 서버의 시스템 변수는 MySQL이 가동 중인 상태에서 변경이 가능한지 여부에 따라 동적 변수 및 정적 변수로 나뉜다. MySQL DB의 파라미터 값(변수)은 디스크에 저장된 My.cnf, my.ini 파일을 변경하는 경우와 가동 중인 MySQL DB의 메모리에 있는 MySQL DB 시스템 파라미터를 변경하는 경우로 구분 가능하다. 디스크에 저장된 설정 파일의 설정이 변경되더라도 MySQL DB 서버를 재시작하기 전에는 적용되지 않는다. 하지만 SHOW 명령어로 MySQL DB 서버에 적용된 변숫값을 확인(LIKE 검색처럼 %를 사용해서 검색 가능), SET 명령어로 변숫값을 변경할 수도 있다. 예) SHOW GLOBAL VARIABLES 'wait_timeout'; SHOW G.. 2022. 9. 19.
CITUS DB - 기본 개념 Postgres Extension으로 최신 Postgres 기능, 도구 및 에코시스템을 이용할 수 있습니다. Postgres를 샤딩, 분산 SQL 엔진, 참조 / 분산 테이블과 같은 기능을 갖춘 분산 데이터베이스로 Scale-out 수 있도록 합니다. 쿼리 엔진은 요청받는 SQL 쿼리를 서버 간 병렬 처리로 빅 데이터 세트에 대하여 더 빠르게 응답합니다. 일반적으로 100GB의 데이터에 이상의 워크로드를 처리합니다. 1. 분산 테이블 분산 테이블은 Citus 성능의 핵심이라 할 수 있습니다. 위 그림은 분산 테이블인 'table'에 대한 SELECT 문 실행의 예시입니다. 애플리케이션으로부터 코디네이터 노드의 테이블에 대한 SELECT문 요청이 들어왔을 때, 메타정보를 참조하여 각 워커 노드에 분산 저장.. 2022. 9. 19.
스파크 실행과 언어 API 1. 개요 스파크 대다수의 코드는 대화형 실행 방식으로 수행할 수 있습니다. 스파크는 스칼라로 구형되어 자바 가상 머신 기반으로 동작하고 사용자는 파이썬, JAVA, 스칼라, R, SQL로 스파크를 사용할 수 있습니다. 그러므로 작업 환경에서 자바를 반드시 설치해야 합니다. 파이썬 API를 사용하려면 파이썬 인터프리터 2.7 버전 이상이 필요합니다. R을 사용하려면 작업 컴퓨터에 R을 설치해야 합니다. 2. 스파크 다운로드하기 1) 로컬 환경 로컬 환경에서는 자바가 설치되어야 있어야 하며 파이썬으로 스파크를 사용하려면 설치된 파이썬 버전을 확인합니다. 스파크 공식 홈페이지 (http://spark.apache.org/dowloads.html)에 접속해 패키지 유형을 Pre-built for hadoop .. 2022. 9. 7.