반응형

오라클 공부를 시작한지 얼마되지 않아 나의 습관대로 , 용어를 미리 공부하려 한다.

 

OTN SITE를 뒤지던중 Materialized View 라는 단어를 발견하게 되었다.

 

이것에 대해서 공부한 내역을 적어보도록 하겠다.

 

(1) Materialized View 란?

 

: 흔히 MView 라고 불리는 이것은, 일반적인 DBMS에서 말하는 View하고는 조금 개념이 틀리다. 사전의 의미를

  찾아보면 Materialized(구체화되어있는) View 라는 뜻이다. 즉, 일반적인 View하고는 다르게, 실제 물리적인 테이블이

  존재하여 메모리상에만 존재하는 View와는 달리 HDD에 데이터 영역을 할당한다는 의미이다.

 

Wiki depia에 보면 아래와 같이 영어로 적혀있다.

A materialized view is a database object that contains the results of a query. For example, it may be a local copy of data located remotely, or may be a subset of the rows and/or columns of a table or join result, or may be a summary based on aggregations of a table's data. Materialized views, which store data based on remote tables, are also known as snapshots. A snapshot can be redefined as a materialized view.

 

(해석)

: MView는 쿼리의 결과를 포함하고 있는 Database 오브젝트이다. 예를들어 서로다른 물리적공간에 저장된 데이터의 LOCAL COPY 데이터 , 조인된 결과 또는 테이블의 컬럼 이나 로우의 일부, 테이블 데이터의 요약된 정보 가 Mview로 저장된다. 테이블 단위로 저장되는 Mview는 snapshots 이라는 용어로 불려지기도 한다. snapshot은 MView를 정의한 또다른 용어이다.

: 영어가 맞는지 모르겠다. 아~~ 영어 공부 해야겠군. 흠....

 

하여튼 결론적으로 MView에 대해서 몇 마디 더 적어보자면 9i 이전까지는 snapshot이란 용어로도 불려졌으나, 이제는

MView 라는 용어로 불려지고 있따.

 

(2) Mview와 일반 View의 차이점 ?

 

: 위의 내용을 읽으신 분들은 차이점에 대해서 어느정도 이해가 가실 거라 생각되지만, MView와 일반 View의 차이점에

대해서 알아보도록 하자.

 

     가장 큰 차이점은 MView의 경우 물리적으로 Table의 형태로 저장하는 것이고, 일반 View는 그렇지 않다는 것이다. 

     일반 View의 경우 , 자주 사용하는 Query에 대해서, Dictionary 에 저장하고 있기 때문에, 다시금 재 실행되는 경우

     일반 SQL로 조회하는 것 보다 조금 빠를 뿐, 물리적인 DB의 데이터를 조회하는 ROW수는 같다.      

     그러나 MView의 경우, 자주 사용하는 SQL에 대한 결과SET을 물리적인 Table에 저장해 두는 것이기 때문에

     실제 조회되는 ROW수 자체가 줄어들어 보다 빠른 속도 효과를 느낄 수 있다.

 

휴~ 문법적인 것까지 MView에 대해서 알아 보고 싶지만, 우선 개념을 익히는 단계에서 그만두도록 하겠다.

 

지금까지 MView에 대한 설명이었다.

 

                                                                                                - 2013.05.16 랑이씀 -

반응형
반응형

연구실에서 정부과제 용으로 특허데이터를 활용한 DB 구성 중 데이터가 꽉차서 더이상 저장할 수 없는 문제가 발생되었다.


이 문제를 해결하기 위해 인터넷을 여기저기 뒤졌지만, 확실한 해답이 나와있는 글들은 찾을 수 없었다.


결국, 별의별 짓을 다해보다가 드디어 해답을 찾게 되었다. Mysql에서 Data의 저장소를 변경하고자 하는 사람들이 있다면


나의 글을 참조하여 많은 도움이 되었으면 한다.


[1] Data Full 이 되었을때 발생되는 에러


 111215 22:30:15 [ERROR] /usr/sbin/mysqld: Disk is full writing './patent_trend/#sql-6aba_52c.MYD' (Errcode: 28). Waiting for someone to free space... (Expect up to 60 secs delay for server to continue after freeing disk space)


위와 같이 Disk Full Error가 발생하게 되면 현재 /var/lib/mysql 안의 데이터의 저장공간이 꽉차있다는 것이다.


[2] 개발환경


환경 구분

개발환경

 운영체제 (os)

 Ubuntu 11.04

 Mysql Version 

 5.1.54

 DB Engine

 My Isam, InnoDB 혼합형


[3] Mysql 저장소 변경 실시


(1) Mysql Daemon Stop


 user_id$ sudo /etc/init.d/mysql stop 


(2) 기존 Physical Repository Copy


 user_id$ sudo cp -Rp /var/lib/mysql /새로운 경로/mysql_repository


(3) Mysql 보안모듈 내 경로 수정(apparmor.d)


 user_id$ vi /etc/apparmor.d/usr.sbin.mysqld


(기존 Link 정보를 주석처리한다)

# /var/lib/mysql/ r,

# /var/lib/mysql/** rwk,


(새로운 경로를 추가한다)

/새로운경로/.mysqldb r,

/새로운경로/.mysqldb/** rwk,


(4) Mysql 설정파일 수정 (my.cnf)


 user_id$ sudo vi /etc/mysql/my.cnf


(Add)
datadir = /새로운경로/mysql_repository

(5) 보안모듈 및 Mysql 재시작


 user_id$ sudo /etc/init.d/apparmor restart

 user_id$ sudo /etc/init.d/mysql restart


이상이다. 위 예제는 Debian 계열의 Ubuntu Server에서 진행한 사항이기 떄문에 Pedora나 CentOS 와 같은


타 OS에서는 정상적으로 구동될지 의문이다. 하지만 Ubuntu에서는 100% 호환되기 떄문에 참고하길 바란다.

 

참조 사이트 :

http://www.ubuntu.or.kr/viewtopic.php?p=58100
http://www.ubuntu.or.kr/viewtopic.php?p=80681


                                                     - 2012.12.31 2012년의 마지막날 랑이씀 - 

반응형

'DB > Maria & Mysql' 카테고리의 다른 글

Maria DB 설치 후기  (3) 2013.12.04
MS-SQL 주석달기  (0) 2013.08.28
MYSQL 자주쓰는 명령어  (0) 2012.09.10
[ MYSQL PROCESS LIST 보기 ]  (0) 2011.12.27
PK & UI 무엇이 올바른가?  (0) 2011.01.31
반응형


1.회원관련 명령어


(1) root 비밀번호 변경

mysql> use mysql;

Database changed

mysql> update user set authentication_string=password('10djraks^^') where user='root';

Query OK, 1 row affected, 1 warning (0.02 sec)

Rows matched: 1  Changed: 1  Warnings: 1


mysql> flush privileges;

Query OK, 0 rows affected (0.21 sec)


mysql> 



2.INDEX 관련 명령어


(1) 인덱스 생성

mysql)ALTER TABLE 테이블명 ADD INDEX `IDX_인덱스 이름` (`인덱스 컬럼명`) 


3.권한 관련 명령어


(1) 권한 생성


mysql> grant all privileges on DB명.* to 계정명@localhost identified by '비밀번호';

Query OK, 0 rows affected, 1 warning (0.23 sec)


mysql> grant all privileges on DB명.* to 계정명@'%' identified by '비밀번호';

Query OK, 0 rows affected, 1 warning (0.00 sec)


mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

 



(2) 권한 삭제


mysql> revoke all on DB명..* from 계정명@'%'; 

Query OK, 0 rows affected, 1 warning (0.23 sec)


mysql> revoke all on DB명..* from 계정명@'localhost'; 

Query OK, 0 rows affected, 1 warning (0.23 sec)




반응형

'DB > Maria & Mysql' 카테고리의 다른 글

MS-SQL 주석달기  (0) 2013.08.28
MYSQL Data Repository(저장소) 변경방법  (0) 2012.12.31
[ MYSQL PROCESS LIST 보기 ]  (0) 2011.12.27
PK & UI 무엇이 올바른가?  (0) 2011.01.31
[ Mysql Concat 한글깨짐 ]  (0) 2011.01.13
반응형
Mysql에서 Process 관리를 하기 위해 종종 툴을 사용한다.

Mysql Administrator 란 Tool을 쓰기도 하는데, GUI 환경이어서 아주 편하게 되어있다.

오늘 이시간에는 콘솔에서 Process list를 보여주고 죽이고 하는 등등의 내용과 Tool 상에서

할 수 있는 것들에 대해 알아보겠다.

[1] 콘솔에서 접속 후 알아보기

콘솔이던 어디던 확실하게 전체 user의 상태를 체크해보기 위해서는 root 계정으로 들어가
확인해 보는것이 제일 확실하다.

로그인 하였다 가정하고 아래 메시지를 보도록 하자.

[1-1] Process List 를 조회하는 방법

 mysql> show full processlist;
+-------+--------+-----------------------+--------------+---------+------+-------+-----------------------+
| Id       | User   | Host                          | db               | Command | Time | State | Info                               |
+-------+--------+-----------------------+--------------+---------+------+-------+-----------------------+
| 48892 | testu    | localhost:33072           | gxxxxxxxe    | Sleep        | 5360 |           | NULL                           |
| 48899 | mxxxx | xxx.1xx.217.139:49333  | paxxxxxxxd  | Sleep        | 3582 |           | NULL                           |
| 48901 | mxxxx | xxx.1xx.217.139:49336  | paxxxxxxxd  | Sleep        | 3573 |           | NULL                           |
| 48903 | mxxxx | xxx.1xx.217.139:49343  | paxxxxxxxd  | Sleep        |     8 |            | NULL                           |
| 48961 | root     | localhost                    | NULL           | Query        |     0 |  NULL  | show full processlist     |
+-------+--------+-----------------------+--------------+---------+------+-------+-----------------------+

위 내용을 보면 show full processlist 란 명령어를 입력시 다음과 같이 현재 수행중인 Thread의 종류가 나오게 된다.

[1-2] Process List를 삭제하는 방법
mysql> kill 48899;

linux와 동일하게 kill이라는 명령어를 사용해서 상대방의 Thread를 강제 종료 가능하다.

[2] GUI를 통해서 확인하는 방법

Mysql Administrator를 이용하여 보면 위에 내용보다 조금 더 쉽게 조회 할 수 있다.
역시나 root계정으로 접속했을때 전체 유저에 대해 조회 가능하다.


위 내용에서 보듯이 각 유저별로 접속현황을 GUI환경에서 아주 쉽게 조회가능하다. 오른쪽 끝에 INFO 를 보면 알겠지만,
콘솔에서 show full processlist 명령어를 한것과 같은 효과이다.

지금까지 Mysql 상에서 Thread 조회 , 삭제 방법을 알아보았다. 다양한 view방법이 옵션별로 존재하지만, 크게 신경안써도
될듯하다. 추가적으로, 필요한 부분이 생기면 다시금 기록 하도록 하겠다.


                                                                                                         - 2012.12.27 랑이씀 -
반응형

+ Recent posts