본문 바로가기

BackEnd/DB(SQL)

[DB_MySQL] 이것이 MySQL이다 ch08 테이블과 뷰 3(테이블스페이스)

728x90
반응형

1. 테이블스페이스(oracle)

◎ 테이블스페이스의 개념

   ▷ 물리적인 공간을 뜻함

   ▷ 데이터베이스는 논리적 공간

   ▷ 테이블스페이스를 지정하지 않은 경우

      ▶ 시스템 테이블스페이스(System Tablespace)에 테이블 저장됨

   ▷ 시스템 변수  innodb_data_file_path에 관련 내용 저장됨

   ▷ 시스템 테이블 스페이스 파일 확인

      ▶ MySQL 8.0에서 테이블스 페이스 파일은 기본적으로 ‘C:\Programdata\MySQL\MySQL Server 8.0\Data’ 폴더에 저장 되어 있음

 

 성능 향상을 위한 테이블스페이스 추가

   ▷ 소용량의 데이트를 사용하는 경우에는 테이블스페이스 고려하지 않아도 되나 대용량의 데이터를 운영할 경우에는

        성능 향상을 위해 테이블스페이스의 분리를 적극 고려

 

◎ 테이블 스페이스 예시

1. 테이블 스페이스 설정 확인
show variables like 'innodb_data_file_path';

-- innodb_data_file_path	ibdata1:12M:autoextend  반환

-- ---------------------------
-- 테이블 스페이스 : 대용량 데이터 운영시

-- 별도의 테이블 스페이스 저장이 되도록 설정되어 있는지 확인 : ON
show variables like 'innodb_file_per_table';
-- innodb_file_per_table	ON​



2. 테이블 스페이스 생성

-- 테이블 스페이스 확장명 .ibd
create tablespace ts_a add datafile 'ts_a.ibd';
create tablespace ts_b add datafile 'ts_b.ibd';
create tablespace ts_c add datafile 'ts_c.ibd';​


▷ 폴더 생성 확인



3. 테이블 스페이스 연결
-- 테이블 스페이스 연결 (테이블을 테이블 스페이스 파일에 연결)
use sqldb;

-- 테이블 생성시 테이블 스페이스에 연결
create table table_a(id int)
	tablespace ts_a;
-- 시스템 테이블 스페이스에 저장이 되지 않고 별도의 ts_a라는 테이블 스페이스에 별도로 저장

-- 테이블을 먼저 생성 후 테이블 스페이스에 연결
create table table_b (id int);
alter table table_b tablespace ts_b;

drop table table_c;

-- 테이블 생성시 대용량 데이터를 입력, 테이블 스페이스 연결
create table table_c (select * from employees.salaries);
alter table table_c tablespace ts_c;​


MySQL에서는 쿼리 응답 시간에 제한이 있습니다. 따라서 이 제한을 없애주어야합니다.

Workbench 메뉴의 [Edit] >> [Preferences]를 선택하여 아래와 같이 진행하면 테이블 생성시 많은 양의 데이터를 받아주어도 문제 없이 진행됩니다.

 

 

테이블 스페이스는 대용량의 데이터를 다룰 때 성능 향상을 위해서 테이블 분리를 하기 위해서 사용합니다.

 

DB에서 많은 용량을 다루기 위해서 테이블 스페이스를 잘 다루어야할 것 같아요!!

 

많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

 

728x90
반응형