본문 바로가기

학교 수업/데이터베이스

데이터베이스 9주차

WORDPRESS

생성

1. 구름IDE

2. 새 컨테이너

3. 이름 입력

4. 소프트웨어 스택에서 WordPress 선택

5. 생성하기

 

준비

1. 컨테이너 실행

2. WordPress 폴더 내에 설정 파일 복사

    └ wp-config-sample.php 복붙 후, wp-config.php로 이름 바꾸기

3. wp-config.php파일 내에 계정 정보 수정

    └ DB_NAME은 wordpress, DB_USER은 wordpressuser, DP_PASSWORD는 password로 변경

4. 저장 후, 상단에 새탭에서 미리보기 클릭

5. 새 탭에서 설치 언어를 선택(한국어)

6. 사이트 정보 입력

    └ 제목: Wordpress_test, 계정: admin, 패스워드: 123123

7. 워드프레스 설치 버튼 클릭

8. 로그인

 

백업

1. 좌측 메뉴에 플러그인 새로추가

2. UpdraftPlus WordPress Backup Plugin 설치

3. 좌측 메뉴에 설정 UpdraftPlus 찾은 후 지금 백업하기 클릭

4. Database클릭 후, 다운로드 (압축파일 형태로 저장됨)

5. 압축 해제 후, 확장자 SQL로 변경

 

내 데이터베이스에 WORDPRESS테이블 가져오기

1. PHPMYADMIN 실행

2. CREATE DATABASE WORDPRESS; 로 워드프레스 스키마 생성

3. WORDPRESS 클릭 후, 가져오기를 통해 백업한 파일 가져오기


인덱스

빠른 검색을 위한 참조 데이터로써 SELECT문의 키를 인덱스라고 본다.

만약 SELECT문에 키가 없다면 "풀 스캔"을 하게 되어 효율직이지 못하다.

PRIMARY키가 있다면 자동으로 인덱스 하나가 생성된다.

INNODB 엔진은 기본 B+TREE 인덱스로 되어있다.

  클러스터 형 비 클러스터 형
방식 저장할 때 인덱스를 기준으로 정렬하여 저장
(인덱스 테이블 = 데이터 페이지)
인덱스 테이블을 추가적으로 생성
특징 검색 속도는 빠르지만, 입력/수정/삭제는 느리다. 검색 속도는 느리지만, 입력/수정/삭제가 빠르다.
정렬 인덱스 키 기준 행을 물리적으로 오름차순 정렬한다. 행을 물리적으로 정렬하지 않는다.
크기 인덱스 페이지 용량이 작다. 인덱스 페이지 용량이 크다.

인덱스가 있는 테이블

show INDEX FROM wp_users;

인덱스가 없는 테이블

show INDEX FROM pet; /*아무것도 뜨지 않는다. 따라서 EXPLAIN구문 활용*/
EXPLAIN SELECT * FROM pet; /*type의 ALL은 풀스캔이다.*/


인덱스 조회

animals 테이블의 모든 인덱스 조회

SHOW INDEX FROM animals;
Table 테이블 명
Non_unique 0이면 중복 불가, 1이면 중복 허용
Key_name 키의 이름

인덱스 생성

animals 테이블의 id를 기준으로 idx라는 이름을 가진 인덱스 생성

CREATE INDEX idx on animals(id);
ALTER TABLE animals ADD INDEX idx(id);

인덱스 삭제

ALTER TABLE animals DROP INDEX idx;

인덱스를 사용할 수 없는 상황

칼럼에 변형을 가하기(substr 등)
IS NULL / IS NOT NULL 사용한 비교
여러 칼럼에 대한 OR조건 사용
부정형(NOT, <>, !=, NOT EXISTS) 비교
LIKE 검색시 변수 앞에 % 사용

쿼리 실행 계획 확인

전체 계획 확인

EXPLAIN SELECT * FROM animals;

부분 계획 확인 - 단일

EXPLAIN SELECT * FROM animals where id = 1;

부분 계획 확인 - 범위

EXPLAIN SELECT * FROM animals where id BETWEEN 1 AND 10;

id 쿼리 내 실행 순서
select_type SELECT 문의 유형
SIMPLE - 단순 SELECT
table 참조하고 있는 테이블 명
type 조인 타입
const - 매치되는 행이 하나만 존재 할 경우
range - 주어진 범위 내의 행을 추출
ref - 여러 행을 검색할 가능성이 있는 접근
ALL - 풀스캔
possible_key 사용 가능한 키
key 실제 사용한 키
key_len 사용한 인덱스의 길이
ref 행을 추출하는 데 키와 함께 사용된 컬럼이나 인덱스
rows 데이터 행의 예상 값

type조건

ALL

풀 스캔

SELECT * FROM sbtest1;

 

INDEX

인덱스 풀 스캔

SELECT id, k FROM sbtest1;
#id, k가 인덱스일 경우

 

 

CONST

기본키를 기준으로 where한 SELECT 문을 단일 조회할 때

SELECT * FROM sbtest1 where id = 1;

 

REF

기본키와 유일키가 아닌 인덱스를 기준으로 where한 SELECT 문을 단일 조회할 때

SELECT * FROM sbtest1 where k = 1;

 

조인 수행을 할 때, 기본키와 유일키가 아닌 인덱스를 기준으로  조회

SELECT * FROM sbtest1 INNER JOIN sbtest2 ON sbtest1.k = sbtest2.k;


EQ_REF

ON절에서 기본키를 기준으로 조인할 때 한 번만 조회된다면(비교하는 id가 하나라도 있으면 가능)

# ON절에 기본키가 하나 들어가서 조인할 경우
SELECT * FROM sbtest1 INNER JOIN sbtest2 ON sbtest1.id=sbtest2.k
# ON절에 기본키가 두 개 들어가서 조인할 경우
SELECT * FROM sbtest1 INNER JOIN sbtest2 ON sbtest1.id = sbtest2.id;



RANGE

인덱스를 기준으로 where한 SELECT 문을 범위 조회할 때

SELECT * FROM sbtest1 where id IN(20, 30, 50);
SELECT * FROM sbtest1 where id BETWEEN 10 AND 30;



'학교 수업 > 데이터베이스' 카테고리의 다른 글

데이터베이스 12주차  (0) 2022.06.12
데이터베이스 11주차  (0) 2022.06.04
데이터베이스 10주차  (0) 2022.06.03
데이터베이스(2) - DCL  (0) 2022.04.16
데이터베이스(2) 기초  (0) 2022.04.16