본문 바로가기

개발/Database

(20)
MySQL sysbench 부하테스트 sysbench 를 사용하여 MySQL 부하테스트를 진행한다. 오픈소스로 H/W(CPU, Memory, I/O), MySQL/MariaDB 등 다양한 성능 테스트를 할 수 있다. github : github.com/akopytov/sysbench 1. 설치 ## Linux ## ## Debian/Ubuntu curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash sudo apt -y install sysbench ## RHEL/CentOS curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh..
고가용성 (High Availability) 고가용성 (HA, High Availability) 이란 긴 시간동안 지속적으로 운영이 가능한 시스템이나 컴포넌트를 말한다. HA의 방법으로는 클러스터링, 이중화, RAID 구성 등이 있다. 클러스터링은 여러개를 모아서 하나를 구성하는것을 의미하며 네트워크 부하에 의한 장애를 대비하기 위한 방법이다. 이중화는 고장에 대비하기 위한 방법이며 보통 Active와 Stand by 라고 한다. 네트워크 이중화, 서버 이중화 등이 있다. RAID는 고장에 대비하기 위한 방법이며 하드디스크에 사용한다. 물리적으로 두개인 하드를 논리적으로 한개의 하드디스크로 관리하는 방법이다. # 참고자료 - www.linux-ha.org/wiki/Main_Page
DB Sharding 샤딩(Sharding)은 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산 저장하는 방법을 말한다. Horizontal Partitioning 이라고 볼 수 있다. 샤딩(Sharding)을 적용하게 되면 프로그래밍, 운영적 복잡도는 증가. 분산이 잘 되지 않을 경우, 한쪽으로 Data 가 집중되어 Hotspot 이 발생. 샤딩은 Shard Key를 어떻게 정의하는지에 따라 데이터의 효율적인 분산을 결정. - Hash Sharding Shard Key : Database id 를 Hashing (Cluster 안의 Node 개수로 Hash 크기 결정) Cluster 의 Node 개수의 변경에 따라 ReSharding 이 필요할 수 있다. - Dynamic Sharding Naming 을 기준으..
MySQL 8.0 Remote 설정 1. /etc/mysql/mysql.conf.d/mysqld.cnf 파일 내 아래 부분 수정 bind-address = 0.0.0.0 혹은 bind-address 부분 주석 처리 # bind-address = 127.0.0.1 2. remote 접속용 user 생성 CREATE USER 'USERNAME'@'HOSTNAME' IDENTIFIED BY 'PASSWORD';
MySQL 8.0 Requested authentication method unknown to the client 이슈 해결 1. /etc/mysql/my.cnf 에 다음 내용 추가 [mysqld] default_authentication_plugin= mysql_native_password 2. mysql 에서 root 사용자로 다음 명령 실행 FLUSH PRIVILEGES;
Lock DBMS는 각 트랜잭션의 오퍼레이션 별로 적당한 수준의 Lock을 자동으로 설정한다. 가장 기본이 되는 Lock 모드는 공유 Lock와 배타적 Lock이다. - 공유 Lock 공유 Lock은 데이터를 읽고자 할 때 사용하며 다른 공유 Lock와는 호환되지만 배타적 Lock와는 호환되지 않는다. 여기서 호환됨은 하나의 리소스에 두개 이상의 락을 동시에 설정할 수 있음을 말한다. 다른 사용자가 동시에 한 리소스를 읽을 수는 있으나 변경은 불가능하다. 반대로 다른 사용자가 읽고 있는 리소스를 동시에 읽을 수는 있어도 사용중인 리소스를 동시에 읽을 수는 없다. - 배타 Lock 데이터를 변경하고자 할 경우 사용되며 트랜잭션의 완료 시까지 유지된다. 해당 락이 해제되기 전까지 다른 트랜잭션은 해당 리소스에 접근할..
Oracle, SQL Server Architecture Oracle에서는 디스크에 저장된 데이터 집합(Datafile, Redo Log File, Control File 등)을 데이터베이스라고 칭한다. SGA 공유 메모리 영역과 이를 엑세스하는 프로세스 집합을 합쳐서 Instance라고 한다. 하나의 Instance는 하나의 데이터베이스만 엑세스하지만 RAC(Real Application Cluster) 환경에서는 여러 인스턴스가 하나의 데이터베이스를 엑세스할 수 있다. 하나의 인스턴스가 여러 데이터베이스를 엑세스할 수는 없다. SQL Server 는 하나의 Instance 당 최고 32767 개의 데이터베이스를 정의하여 사용할 수 있다. 기본적으로 시스템 데이터베이스가 만들어지며 사용자 데이터베이스를 추가로 생성하는 구조로 이루어져 있다. 데이터베이스를 만..
규칙 기반 옵티마이저(RBO), 비용 기반 옵티마이저(CBO) 규칙 기반 옵티마이저 (Rule Based Optimizer), 비용 기반 옵티마이저(Cost Based Optimizer) 에 대해 작성한다. 규칙 기반 옵티마이저는 규칙(우선 순위)을 가지고 실행 계획을 생성한다. 실행계획을 생성하는 규칙을 이해하면 누구나 실행계획을 비교적 쉽게 예측할 수 있다. 옵티마이저가 참조하는 정보에는 인덱스 유무와 종류, 연산자의 종류, 참조 객체의 종류 등이 있다. 이러한 참조 정보에 따라 우선순위의 규칙이 정해져 있고 이 순위를 기반으로 실행계획을 생성한다. 결과적으로 규칙기반 옵티마이저는 우선순위가 높은 규칙이 적은 일량으로 해당 작업을 수행하는 방법이라고 판단하는 것이다. 오라클의 규칙기반 옵티마이저의 15규칙은 다음과 같다. 순위 엑세스 기법 1 Single row..