쿼라 튜닝은 왜 필요한가 MySQL의 실행계획을 통해 동작방식을 확인하고 성능개선을 하기 위해 필요하다. 문제가 발생했을 때 해결하기 위해 - 암달의 법칙 프로그램은 병렬처리가 가능한 부분과 불가능한 순차적인 부분으로 구성되므로 프로세서를 아무리 병렬화 시켜도 더 이상 성능이 향상되지 않는 한계가 존재 한다는 법칙 많이 쓰이는 거를 향상시켜야 함 I. 프로세스 병렬화 속도 한계성에 대한 암달의 법칙 가. 암달(Amdahl)의 법칙 정의 프로그램은 병렬처리가 가능한 부분과 불가능한 순차적인 부분으로 구성되므로 프로세서를 아무리 병렬화 시켜도 더 이상 성능이 향상되지 않는 한계가 존재 한다는 법칙 나. 암달의 법칙 의미 성능 한계는 캐쉬, 메모리, 버스와 같이 제한된 자원을 프로세스가 서로 점유하려고 쟁탈 ..
Database
mysql 데이터 베이스를 설계하면서 pk를 auto increment 로 하면 왠지 안될 것 같다는 느낌이 들어 이유를 찾아 보았다. PK 를 auto increment(자동 증가) 할 경우 생기는 문제점 1씩 증가하는 형식은 ID 의 앞 뒤로 다른 user 의 PK 값임을 쉽게 예측할 수 있으며 악의적인 공격에 취약하다. 새 항목을 생성하고 해당 ID 를 검사하면 테이블의 행 수를 알 수 있다.(정보가 공개된다.) 각 테이블이 순차적인 값을 가지므로, 동일한 값이 다른 엔티티의 기본키로 발견된다. 1씩 증가하는 방식은 범위가 한정적이기 때문에 서비스를 이용하는 수가 폭발적으로 증가하면 고갈이 될 수 있다. 그런데 unsigned bigint로 데이터 타입을 정의한다면, UNSIGNED BIGINT는 ..
초기 DB, user 생성 $ sudo mysql # mysql 접속 $ mysql> show databases; # DB 목록 확인하기 $ mysql> create database [DB 이름] # DB 생성 # user 생성 및 권한 부여 $ mysql> CREATE USER [user 이름]@localhost IDENTIFIED BY '[password]'; # user 생성 $ mysql> GRANT ALL PRIVILEGES ON [DB 이름].* TO '[user 이름]'@'%'; # 외부접속 모두 허용 '%', user 권한부여 $ mysql> flush privileges; # 변경사항 적용하기 생성한 DB 확인 $ mysql -h[호스트 명] -u [DB 계정명] -p [DB 이름] # ..
데이터란: 전기적으로 저장할 수 있는 값들 Database 데이터베이스란? 데이터베이스란 데이터의 모음을 말한다. 일반적으로 컴퓨터 시스템에 전자적으로 저장되는 조직화된 데이터 모음을 말한다. 이렇게 데이터를 조직화하면 데이터에 의미가 생긴다. 또한 대량의 데이터를 효율적으로 관리할 수 있다. 이러한 데이터를 조직화하는 방식(데이터베이스를 만드는 방식)에는 여러가지가 있다. 데이터베이스를 만들고 관리하는 방식에 따라 데이터베이스 유형을 구분할 수 있다. 데이터베이스의 유형의 구분 오늘날 데이터베이스는 주로 아래와 같이 구분되어 설명된다. 관계형 데이터베이스 vs 비관계형 데이터베이스 SQL 기반 데이터베이스 vs. NoSQL 기반 데이터베이스 관계형 데이터베이스 vs. NoSQL SQL vs. NoSQL..
트랜잭션 데이터베이스에서 데이터에 대한 하나의 논리적 실행단계 EX) 은행에서의 계좌이체 계좌이체 자체의 구현은 내부적으로 여러 단계로 이루어질 수 있지만 전체적으로는 '송신자 계좌의 금액 감소', '수신자 계좌의 금액 증가'가 한 동작으로 이루어져야 하는 것을 의미한다. ACID 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질 원자성(Atomicity) 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력이다. 중간 단계까지 실행되고 실패하는 일이 없도록 하는 것 EX) 자금 이체는 성공할 수도 실패할 수도 있지만 보내는 쪽에서 돈을 빼 오는 작업만 성공하고 받는 쪽에 돈을 넣는 작업을 실패해서는 안된다. 정합성(Consistency) 트랜잭션 처리 전과..
1. MySql 설치 $ sudo apt update $ sudo apt install mysql-server $ sudo systemctl start mysql.service : MySql 시작 2. Configuring MySQL $ sudo mysql : MySql prompt 열기 $ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; mysql_secure_installation 스크립트는 MySQL 설치를 안전하게 유지하는 데 유용한 여러 가지 다른 작업을 수행하므로 MySQL을 사용하여 데이터를 관리하기 전에 스크립트를 실행하는 것이 좋습니다. 하지만 이 재귀 루프에 들어가는 것을 방지하려면 먼저..