본문 바로가기

Database

(9)
Host 'host_name' is blocked because of many connection errors.Unblock with 'mysqladmin flush-hosts' Intro. 데이터베이스에 외부에서 접속 시 connection이 lock걸리는 현상인데, 문제는 뭐고, 어떻게 해결해야 하는지 알아보겠다. 1. 문제점 너무 많은 연결 오류로 해당 호스트가 block되는 경우이다. (1) 문제 확인 방법 [1] select @@global.max_connect_errors; 해당 명령어로 error 카운트 개수를 확인할 수 있다. 해당 카운트를 넘으면 host가 블록이 된다. [2] show variables like '%host%'; 해당 명령어를 입력하면 host_cache_size를 확인할 수 있다. [3] host_cache_size란? host_cache 내용을 가진 스키마 테이블 크기를 지정 0으로 설정하면 호스트 캐시가 비활성화된다. [4] host_cac..
데이터베이스 반정규화(Denormalization) 1. DB 반정규화란? 성능 향상을 위해 정규화를 포기하는 것. 즉, 성능 향상을 위해서 데이터 중복을 허용하고 조인을 줄이는 용도로 사용한다. 당연한 이야기지만, 모델 간 종속성이 높아지고 확장성이 떨어지지만, 조회 속도를 향상시킬 수 있다. 1) 반정규화 문제점 데이터의 무결성이 항상 보장되지는 않으므로 제한적으로 사용해야한다. 2. 테이블 반정규화 테이블 병합, 분할, 추가로 반정규화를 진행한다. 1) 테이블 병합 join을 수행하지 않도록 테이블을 통합하여 성능을 높이는 것을 의미 2) 테이블 분할 (1) vertical partitioning 컬럼 단위로 테이블을 1:1 분리 [1] 수직 분할 예시 id name phone 1 dexter 01022223333 2 bob 01033334444 v..
데이터베이스 정규화(Normalization) 1. DB 정규화(Normalization)란? 테이블 간에 중복된 데이터를 허용하지 않는다는 의미 데이터의 무결성(Integrity)을 유지 무결성이란 데이터의 일관성, 정확성을 유지하고 보증하는 것을 의미 데이터의 중복배제와 확장성을 위해 테이블을 잘게 나누는 것을 의미한다.** 2. 정규화 단계 테이블을 어떻게 재조정할지에 따라 정규화 단계가 나누어짐. 각 단계는 이 전 단계의 내용을 포함한다. 예를 들어, 제 2정규화 단계라면, 제 1정규화가 진행된 테이블을 가지고 제 2정규화를 진행한다. 3. 제 1정규화(1NF) 원자성 모든 속성은 반드시 하나의 값만 가져야 한다. 1) 제 1정규화 위배되는 경우 (1) 하나의 레코드가 다중 값을 가지는 경우 이름 sns 덱스터 인스타그램, 트위터 sns 칼럼..
트랜잭션 특징 1. Atomicity : 원자성 트랜잭션의 작업은 모두 실행되거나 모두 실행되지 않는다는 것을 보장. 2. Consistency: 일관성 일관적인 데이터, DB 상태를 유지함을 의미. ex) type=int면 끝까지 int 3. Isolation: 격리성 한 트랜잭션 수행 시 다른 트랜잭션이 간섭할 수 없음. 4. Durability: 지속성 commit 하면 데이터 영구보존
PK, FK 특징 레코드는 행(row)을 의미한다. 1. PK(Primary Key) 기본키는 레코드(row)를 유일한 값으로 만들어주는 역할을 한다. 하나의 칼럼 혹은 여러 개의 칼럼을 지정해 유일한 값으로 만들 수 있다. ps. pk는 테이블 당 하나만 설정 가능. 하지만 unique는 여러 개 설정 가능. 2. FK(Foreign Key) 외래키는 테이블 간 연관관계를 표현하기 위해 사용. 3. FK 제약 조건 특징 먼저 참조무결성이 뭔지부터 알고, cacade가 왜 필요한지 생각해보자. *참조무결성(referential integrity)이란? PK를 참조하고 있는 FK가 존재한다면, PK를 삭제 혹은 참조하는 값을 수정할 수 없다. 예를 들어, p = person (id, name) values (1, 'dext..
mysql settings macOS 1. 설치 brew install mysql 2. 설치 후 비밀번호 설정 mysql_secure_installation Mysql 설치 후 이 명령어로 비밀번호를 설정하는 것이 좋다. (다른 방식으로 설정하면 안 되는 경우도 존재) 1) 질문들 1 비밀번호 복잡도에 대한 질문 - n - 당연히 실서버에서 사용되는 비밀번호는 y 2 root 계정 비밀번호 설정 - y 3 익명 사용자 삭제 여부 y : 즉 -u 옵션을 통해서 mysql에 접근해야 한다. 4 root 계정의 원격 접속 허용 여부 - n (허용) 5 test database 삭제 여부 : y 6 설정 사항 반영여부 : y 3. 접속 mysql -u root -p 4. run server mysql.server start mysql.s..
redis settings macOS brew install redis # 설정 파일 vi /usr/local/etc/redis.conf # set password # requirepass foobared # run redis redis-server # cli redis-cli # 장고에서 redis settings # django-redis package 사용 https://pypi.org/project/django-redis/
Redis 1. how to use brew install redis brew services start redis brew services stop redis brew services restart redis 2. rails with redis with database 1) redis - database database 내 자료를 서버 메모리에 key와 value 형태로 저장(caching) 2) rails - redis 메모리에 저장(캐싱)된 key를 참조해서 value를 가져옴. 3. RDBMS vs Redis DB 1) RDBMS 파일 기반의 데이터 저장 구조 의미 사용자가 입력, 수정, 삭제, 조회하는 모든 데이터는 1차적으로 메모리에 우선 저장된다. 2차적으로 디스크에 존재하는 파일에 저장되며 파일들은 ..