SlideShare a Scribd company logo
EXEM seminar report no. 008 (2016.07.12)
Research & Contents Team
제 8회 수요 세미나 자료
Table of Agenda
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
제 8회 수요 세미나
1. [PostgreSQL] Vacuum의 거의 모든 것 (4차)
2. [MySQL] Lock (1차)
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
[PostgreSQL] Vacuum의 거의 모든 것 (4차)
발표자: 연구컨텐츠팀 이근오
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
[PostgreSQL]
Vacuum의 거의 모든 것(4차)
Page Layout ( 1/2 )
 Dump
0.
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
[PostgreSQL]
Vacuum의 거의 모든 것(4차)
 SELECT * from heap_page_items(get_raw_page('t2', 0));
Page Layout ( 1/2 )
 Dump
0.
00 7c 9f c0 00 7c 9f 80
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
[PostgreSQL]
Vacuum의 거의 모든 것(4차)
 SELECT * from heap_page_items(get_raw_page('t2', 0));
create table t2 ( c1 char(19),c2 char(8),c3 char(8) );
insert into t2 values('A1001','A','A');
insert into t2 values('A1002','A','A');
 Dump
all line pointers on a heap page
1.
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
[PostgreSQL]
Vacuum의 거의 모든 것(4차)
 SELECT * from heap_page_items(get_raw_page('t2', 0));
update t2 set c2='B' where c1 = 'A1001' ;
 Dump
2.
새로운 위치에
변경데이타 “B” 레코드를 추가.
ItemIdData 부분도 추가됨.
“A1001” 원본은 “xmax” 값을 변경
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
[PostgreSQL]
Vacuum의 거의 모든 것(4차)
update t2 set c2='B' where c1 = 'A1001' ;
 tab.sql
2.
select xmin,xmax,ctid,* from t1;
 select txid_current() ;
select xmin,xmax,ctid,* from t2;
“A1001” item 의 xmin 변경됨.
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
[PostgreSQL]
Vacuum의 거의 모든 것(4차)
 SELECT * from heap_page_items(get_raw_page('t2', 0));
vacuum t2 ;
 Dump
3.
“순서가 변경됨”
• A1002가 제일 아래로 내려감
• A1001 위치도 아래로 변경
• A1001 원래 위치의 데이터는 그대로
두고 ItemIdData만 삭제.
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
[PostgreSQL]
Vacuum의 거의 모든 것(4차)
vacuum t2 ;
 tab.sql
3.
select xmin,xmax,ctid,* from t1;
 select txid_current() ;
select xmin,xmax,ctid,* from t2;
변경안됨
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
[PostgreSQL]
Vacuum의 거의 모든 것(4차)
vacuum freeze t2 ;
 tab.sql
4.
select xmin,xmax,ctid,* from t1;
select xmin,xmax,ctid,* from t2;
1807012522에서 변경됨
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
[PostgreSQL]
Vacuum의 거의 모든 것(4차)
vacuum full t2 ;
 tab.sql
5.
select xmin,xmax,ctid,* from t1;
select xmin,xmax,ctid,* from t2;
136677에서 변경됨 변경안됨
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
[PostgreSQL]
Vacuum의 거의 모든 것(4차)
vacuum full t2 ;
 Dump
5.
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
[PostgreSQL]
Vacuum의 거의 모든 것(4차)
autovacuum_analyze_scale_factor = 0.1
autovacuum_analyze_threshold = 50
6.
1. 1000건 insert
2. autovacuum_naptime=60s 이상 wait 후 확인 : autoanalyze OK.
3. autovacuum_analyze_scale_factor=0.1 인 100건 insert  wait 후 확인 : autoanalyze NOT OK.
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
[PostgreSQL]
Vacuum의 거의 모든 것(4차)
autovacuum_analyze_scale_factor = 0.1
autovacuum_analyze_threshold = 50
6.
4. autovacuum_analyze_threshold=50 인 50건 insert  wait 후 확인 : autoanalyze NOT OK.
5. Only 1건 insert  wait 후 확인 : autoanalyze OK.
autovacuum analyze 대상 조건
변경건수(insert포함) > ( reltuples * 0.1(autovacuum_analyze_scale_factor) )
+ 50(autovacuum_analyze_scale_factor)
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
[PostgreSQL]
Vacuum의 거의 모든 것(4차)
autovacuum_vacuum_scale_factor = 0.2
autovacuum_vacuum_threshold = 50
7.
1. 1000건 insert  wait 후 확인 : autovacuum NOT OK.
2. autovacuum_vacuum_scale_factor=0.2 인 200건 update  wait 후 확인 : autovacuum NOT OK.
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
[PostgreSQL]
Vacuum의 거의 모든 것(4차)
autovacuum_vacuum_scale_factor = 0.2
autovacuum_vacuum_threshold = 50
7.
3. autovacuum_vacuum_threshold=50 인 50건 update  wait 후 확인 : autovacuum NOT OK.
4. Only 1건 update  wait 후 확인 : autovacuum OK.
autovacuum vacuum 대상 조건
변경건수(insert제외) > ( reltuples * 0.2(autovacuum_vacuum_scale_factor) )
+ 50(autovacuum_vacuum_threshold)
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
[MySQL] Lock (1차)
발표자: 연구컨텐츠팀 이대덕
02. [MySQL] MySQL Lock
2-1. Global Read Lock
2-2. Table Lock
2-3. String Lock
2-4. Name Lock
Table of Agenda
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
FLUSH TABLES WITH READ LOCK;
UNLOCK TABLES;
• 서버 전체(모든 스토리지 엔진)에 Global Read Lock획득
• Table Cache에 있는 테이블을 Flush (기존의 문장이 Table Lock을 가지고 수행 중이라
면 대기함)
• SELECT문을 제외한 문장은 Global Read Lock이 해제될 때까지 대기 (State: Waiting
for global read lock)
• 주로 DB전체의 일관성 있는 백업을 받기 위해 사용
2-1. Global Read Lock
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
(root@localhost)[(none)] 13:48:51>show status like 'open_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_tables | 54 |
+---------------+-------+
1 row in set (0.00 sec)
(root@localhost)[(none)] 13:48:53>flush tables with read lock;
Query OK, 0 rows affected (9.06 sec)
(root@localhost)[(none)] 13:49:10>show status like 'open_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_tables | 1 |
+---------------+-------+
1 row in set (0.00 sec)
(root@localhost)[(none)] 14:00:20>unlock tables;
Query OK, 0 rows affected (0.00 sec)
2-1. Global Read Lock
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
(root@localhost)[exem_i] 13:32:41>select connection_id();
+-----------------+
| connection_id() |
+-----------------+
| 14286 |
+-----------------+
1 row in set (0.00 sec)
(root@localhost)[exem_i] 13:33:16>lock table foo write;
Query OK, 0 rows affected (10.97 sec)
2-1. Global Read Lock
(root@localhost)[(none)] 13:34:37>select connection_id();
+-----------------+
| connection_id() |
+-----------------+
| 13 |
+-----------------+
1 row in set (0.00 sec)
(root@localhost)[(none)] 13:34:44>flush tables with read lock;
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
2-1. Global Read Lock
(root@localhost)[exem_i] 13:33:34>show processlist;
+-------+------+-----------+--------+---------+------+------------------------------+----------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-------+------+-----------+--------+---------+------+------------------------------+----------------------------+
| 13 | root | localhost | NULL | Query | 20 | Waiting for global read lock | flush table with read lock |
| 14286 | root | localhost | exem_i | Query | 0 | starting | show processlist |
+-------+------+-----------+--------+---------+------+------------------------------+----------------------------+
2 rows in set (0.00 sec)
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
LOCK TABLES tbl_name [[AS] alias] lock_type [, tbl_name [[AS] alias] lock_type...
UNLOCK TABLES
• Lock_type : READ [LOCAL] | [LOW_PRIORITY] WRITE
• MySQL레벨에서 테이블 단위로 설정되는 LOCK
• MyISAM, MEMORY Storage Engine에서는 데이터를 변경하는 즉시 묵시적으로 획득 후 변경 후 반환
• 해당 테이블에 LOCK_TABLE 권한 필요
• 서버 레벨이지만 MyISAM스토리지 엔진을 기준으로 한 LOCK이며 InnoDB에서는 사용을 권장하지 않음
• READ LOCK :
해당세션과 다른 세션 모두 Select문장만 수행가능하며 Local 옵션을 사용 하는 경우 Concurrent Insert가능
다른 세션에서 획득한 READ LOCK끼리 호환가능
• WRITE LOCK :
해당 세션에서만 DML,DDL이 가능하며 다른 세션의 읽기,쓰기, TABLE LOCK과 호환불가
LOW_PRIORITY 옵션을 사용하는 경우 Lock 요청 큐에서 낮은 우선순위를 갖게 됨
2-2. Table Lock
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
(root@localhost)[exem_i] 15:20:06>select connection_id();
+-----------------+
| connection_id() |
+-----------------+
| 14286|
+-----------------+
1 row in set (0.00 sec)
(root@localhost)[exem_i] 14:36:22>lock table foo read;
Query OK, 0 rows affected (0.00 sec)
(root@localhost)[exem_i] 14:36:51>select * from foo;
+------+------+
| c1 | c2 |
+------+------+
| 31 | a |
| 2 | b |
| 123 | a |
+------+------+
3 rows in set (0.00 sec)
(root@localhost)[exem_i] 14:36:57>update foo set c1=1 where c2='a';
ERROR 1099 (HY000): Table 'foo' was locked with a READ lock and can't be updated
2-2. Table Lock
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
(root@localhost)[exem_i] 15:20:06>select connection_id();
+-----------------+
| connection_id() |
+-----------------+
| 13 |
+-----------------+
1 row in set (0.00 sec)
(root@localhost)[exem_i] 15:28:07>select * from foo;
+------+------+
| c1 | c2 |
+------+------+
| 31 | a |
| 2 | b |
| 123 | a |
+------+------+
3 rows in set (0.00 sec)
(root@localhost)[exem_i] 15:28:11>update foo set c1=1 where c2='a';
(root@localhost)[exem_i] 15:27:31>show processlist;
+-------+------+-----------+--------+---------+------+---------------------------------+----------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-------+------+-----------+--------+---------+------+---------------------------------+----------------------------------+
| 13 | root | localhost | exem_i | Query | 15 | Waiting for table metadata lock | update foo set c1=1 where c2='a' |
| 14286 | root | localhost | exem_i | Query | 0 | starting | show processlist |
| 25063 | root | localhost | NULL | Sleep | 2833 | | NULL |
+-------+------+-----------+--------+---------+------+---------------------------------+----------------------------------+
3 rows in set (0.00 sec)
2-2. Table Lock
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
(root@localhost)[exem_i] 15:20:06>select connection_id();
+-----------------+
| connection_id() |
+-----------------+
| 13 |
+-----------------+
1 row in set (0.00 sec)
(root@localhost)[exem_i] 15:34:08>lock table foo read;
Query OK, 0 rows affected (0.00 sec)
(root@localhost)[exem_i] 15:34:15>lock table foo write;
(root@localhost)[exem_i] 15:31:58>show processlist;
+-------+------+-----------+--------+---------+------+---------------------------------+----------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-------+------+-----------+--------+---------+------+---------------------------------+----------------------+
| 13 | root | localhost | exem_i | Query | 5 | Waiting for table metadata lock | lock table foo write |
| 14286 | root | localhost | exem_i | Query | 0 | starting | show processlist |
| 31080 | root | localhost | NULL | Sleep | 147 | | NULL |
+-------+------+-----------+--------+---------+------+---------------------------------+----------------------+
3 rows in set (0.00 sec)
2-2. Table Lock
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
mysql> lock tables foo read;
Query OK, 0 rows affected (0.00 sec)
mysql> show open tables from exem_i;
+----------+--------+--------+-------------+
| Database | Table | In_use | Name_locked |
+----------+--------+--------+-------------+
| exem_i | t1 | 0 | 0 |
| exem_i | myisam | 0 | 0 |
| exem_i | foo | 1 | 0 |
+----------+--------+--------+-------------+
3 rows in set (0.00 sec)
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)
mysql> show open tables from exem_i;
+----------+--------+--------+-------------+
| Database | Table | In_use | Name_locked |
+----------+--------+--------+-------------+
| exem_i | t1 | 0 | 0 |
| exem_i | myisam | 0 | 0 |
| exem_i | foo | 0 | 0 |
+----------+--------+--------+-------------+
3 rows in set (0.00 sec)
2-2. Table Lock
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
GET_LOCK(str,timeout)
RELEASE_LOCK(str)
IS_USED_LOCK(str)
IS_FREE_LOCK(str)
• TABLE,ROW 단위가 아닌 Client간의 String에 대한 Lock
• Client들은 동일한 String에 Lock을 획득할 수 없음.
• GET_LOCK() : 해당 Lock 획득(획득에 성공하면 1리턴 실패하면 2를 리턴)
• RELEASE_LOCK() : 해당 Lock 해제(해제에 성공하면 1리턴, LOCK이 존재하지 않으면 NULL값 리턴)
• IS_USED_LOCK() : 해당 Lock을 누가 사용 중인지 확인(사용중인 세션의 Connection_id값 반환 or NULL)
• IS_FREE_LOCK() : 특정 String이 사용가능한지 확인(가능하면 1을 리턴, 사용 중이면 0을 리턴, Error발생시 NULL)
• 주로 특정 어플리케이션들에서 서로의 데이터 중복을 확인하기 위해 사용
2-3. User Lock
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
mysql> select connection_id();
+-----------------+
| connection_id() |
+-----------------+
| 243397 |
+-----------------+
1 row in set (0.00 sec)
mysql> select is_used_lock('locked_string');
+-------------------------------+
| is_used_lock('locked_string') |
+-------------------------------+
| NULL |
+-------------------------------+
1 row in set (0.00 sec)
mysql> select is_free_lock('locked_string');
+-------------------------------+
| is_free_lock('locked_string') |
+-------------------------------+
| 1 |
+-------------------------------+
1 row in set (0.00 sec)
mysql> select get_lock('locked_string',600);
+-------------------------------+
| get_lock('locked_string',600) |
+-------------------------------+
| 1 |
+-------------------------------+
1 row in set (0.00 sec)
2-3. User Lock
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
2-3. User Lock
mysql> select connection_id();
+-----------------+
| connection_id() |
+-----------------+
| 243396 |
+-----------------+
1 row in set (0.00 sec)
mysql> select is_used_lock('locked_string');
+-------------------------------+
| is_used_lock('locked_string') |
+-------------------------------+
| 243397 |
+-------------------------------+
1 row in set (0.00 sec)
mysql> select is_free_lock('locked_string');
+-------------------------------+
| is_free_lock('locked_string') |
+-------------------------------+
| 0 |
+-------------------------------+
1 row in set (0.00 sec)
mysql> select get_lock('locked_string',600);
mysql> show processlist;
+--------+------+-----------+--------+---------+------+-----------+--------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+--------+------+-----------+--------+---------+------+-----------+--------------------------------------+
| 243396 | root | localhost | exem_i | Query | 5 | User lock | select get_lock('locked_string',600) |
| 243397 | root | localhost | exem_i | Sleep | 179 | | NULL |
| 243555 | root | localhost | exem_i | Query | 0 | starting | show processlist |
+--------+------+-----------+--------+---------+------+-----------+--------------------------------------+
3 rows in set (0.00 sec)
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.
RENAME TABLE tbl_name1 TO tbl_name2
DROP TABLE tbl_name
• 테이블을 RENAME하거나 DROP할 경우 묵시적으로 테이블 명에 Name Lock
• RENAME할 경우 기존이름과 변경될 이름에 모두 Lock획득
• TABLE LOCK과 호환성 없음
• SHOW OPEN TABLES 커맨드로 Name_lock이 걸린 테이블 확인 가능
mysql> show open tables from exem_i;
+----------+--------+--------+-------------+
| Database | Table | In_use | Name_locked |
+----------+--------+--------+-------------+
| exem_i | abc | 0 | 0 |
| exem_i | t1 | 0 | 0 |
| exem_i | myisam | 0 | 0 |
| exem_i | foo | 0 | 0 |
+----------+--------+--------+-------------+
4 rows in set (0.00 sec)
2-4. Name Lock
Research & Contents
THANK YOU
Blog
Video
E-mail
NAVER http://cafe.naver.com/playexem
ITPUB http://blog.itpub.net/31135309/
Wordpress https://playexem.wordpress.com/
Slideshare http://www.slideshare.net/playexem
Youtube https://www.youtube.com/channel/UC5wKR
_-A0eL_Pn_EMzoauJg
Tudou http://www.tudou.com/home/maxgauge/
교육 문의: 연구컨텐츠팀 김숙진
edu@ex-em.com
© Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.

More Related Content

What's hot

Optimizer Cost Model MySQL 5.7
Optimizer Cost Model MySQL 5.7Optimizer Cost Model MySQL 5.7
Optimizer Cost Model MySQL 5.7
I Goo Lee
 
MySQL Document Store
MySQL Document StoreMySQL Document Store
MySQL Document Store
I Goo Lee
 
Introduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB ClusterIntroduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB Cluster
I Goo Lee
 
你所不知道的Oracle后台进程Smon功能
你所不知道的Oracle后台进程Smon功能你所不知道的Oracle后台进程Smon功能
你所不知道的Oracle后台进程Smon功能
maclean liu
 
New features in Performance Schema 5.7 in action
New features in Performance Schema 5.7 in actionNew features in Performance Schema 5.7 in action
New features in Performance Schema 5.7 in action
Sveta Smirnova
 
oracle cloud with 2 nodes processing
oracle cloud with 2 nodes processingoracle cloud with 2 nodes processing
oracle cloud with 2 nodes processingmahdi ahmadi
 
pstack, truss etc to understand deeper issues in Oracle database
pstack, truss etc to understand deeper issues in Oracle databasepstack, truss etc to understand deeper issues in Oracle database
pstack, truss etc to understand deeper issues in Oracle database
Riyaj Shamsudeen
 
MySQL replication & cluster
MySQL replication & clusterMySQL replication & cluster
MySQL replication & clusterelliando dias
 
Drizzle to MySQL, Stress Free Migration
Drizzle to MySQL, Stress Free MigrationDrizzle to MySQL, Stress Free Migration
Drizzle to MySQL, Stress Free Migration
Andrew Hutchings
 
Mvcc in postgreSQL 권건우
Mvcc in postgreSQL 권건우Mvcc in postgreSQL 권건우
Mvcc in postgreSQL 권건우
PgDay.Seoul
 
【Maclean liu技术分享】拨开oracle cbo优化器迷雾,探究histogram直方图之秘 0321
【Maclean liu技术分享】拨开oracle cbo优化器迷雾,探究histogram直方图之秘 0321【Maclean liu技术分享】拨开oracle cbo优化器迷雾,探究histogram直方图之秘 0321
【Maclean liu技术分享】拨开oracle cbo优化器迷雾,探究histogram直方图之秘 0321maclean liu
 
SCALE 15x Minimizing PostgreSQL Major Version Upgrade Downtime
SCALE 15x Minimizing PostgreSQL Major Version Upgrade DowntimeSCALE 15x Minimizing PostgreSQL Major Version Upgrade Downtime
SCALE 15x Minimizing PostgreSQL Major Version Upgrade Downtime
Jeff Frost
 
Postgres-BDR with Google Cloud Platform
Postgres-BDR with Google Cloud PlatformPostgres-BDR with Google Cloud Platform
Postgres-BDR with Google Cloud Platform
SungJae Yun
 
PostgreSQL performance improvements in 9.5 and 9.6
PostgreSQL performance improvements in 9.5 and 9.6PostgreSQL performance improvements in 9.5 and 9.6
PostgreSQL performance improvements in 9.5 and 9.6
Tomas Vondra
 
MySQLinsanity
MySQLinsanityMySQLinsanity
MySQLinsanity
Stanley Huang
 
Lab 1 my sql tutorial
Lab 1 my sql tutorial Lab 1 my sql tutorial
Lab 1 my sql tutorial
Manuel Contreras
 
Introduction to Parallel Execution
Introduction to Parallel ExecutionIntroduction to Parallel Execution
Introduction to Parallel Execution
Doug Burns
 
Oracle cluster installation with grid and iscsi
Oracle cluster  installation with grid and iscsiOracle cluster  installation with grid and iscsi
Oracle cluster installation with grid and iscsi
Chanaka Lasantha
 
Advanced Replication
Advanced ReplicationAdvanced Replication
Advanced Replication
MongoDB
 
Performance tuning a quick intoduction
Performance tuning   a quick intoductionPerformance tuning   a quick intoduction
Performance tuning a quick intoduction
Riyaj Shamsudeen
 

What's hot (20)

Optimizer Cost Model MySQL 5.7
Optimizer Cost Model MySQL 5.7Optimizer Cost Model MySQL 5.7
Optimizer Cost Model MySQL 5.7
 
MySQL Document Store
MySQL Document StoreMySQL Document Store
MySQL Document Store
 
Introduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB ClusterIntroduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB Cluster
 
你所不知道的Oracle后台进程Smon功能
你所不知道的Oracle后台进程Smon功能你所不知道的Oracle后台进程Smon功能
你所不知道的Oracle后台进程Smon功能
 
New features in Performance Schema 5.7 in action
New features in Performance Schema 5.7 in actionNew features in Performance Schema 5.7 in action
New features in Performance Schema 5.7 in action
 
oracle cloud with 2 nodes processing
oracle cloud with 2 nodes processingoracle cloud with 2 nodes processing
oracle cloud with 2 nodes processing
 
pstack, truss etc to understand deeper issues in Oracle database
pstack, truss etc to understand deeper issues in Oracle databasepstack, truss etc to understand deeper issues in Oracle database
pstack, truss etc to understand deeper issues in Oracle database
 
MySQL replication & cluster
MySQL replication & clusterMySQL replication & cluster
MySQL replication & cluster
 
Drizzle to MySQL, Stress Free Migration
Drizzle to MySQL, Stress Free MigrationDrizzle to MySQL, Stress Free Migration
Drizzle to MySQL, Stress Free Migration
 
Mvcc in postgreSQL 권건우
Mvcc in postgreSQL 권건우Mvcc in postgreSQL 권건우
Mvcc in postgreSQL 권건우
 
【Maclean liu技术分享】拨开oracle cbo优化器迷雾,探究histogram直方图之秘 0321
【Maclean liu技术分享】拨开oracle cbo优化器迷雾,探究histogram直方图之秘 0321【Maclean liu技术分享】拨开oracle cbo优化器迷雾,探究histogram直方图之秘 0321
【Maclean liu技术分享】拨开oracle cbo优化器迷雾,探究histogram直方图之秘 0321
 
SCALE 15x Minimizing PostgreSQL Major Version Upgrade Downtime
SCALE 15x Minimizing PostgreSQL Major Version Upgrade DowntimeSCALE 15x Minimizing PostgreSQL Major Version Upgrade Downtime
SCALE 15x Minimizing PostgreSQL Major Version Upgrade Downtime
 
Postgres-BDR with Google Cloud Platform
Postgres-BDR with Google Cloud PlatformPostgres-BDR with Google Cloud Platform
Postgres-BDR with Google Cloud Platform
 
PostgreSQL performance improvements in 9.5 and 9.6
PostgreSQL performance improvements in 9.5 and 9.6PostgreSQL performance improvements in 9.5 and 9.6
PostgreSQL performance improvements in 9.5 and 9.6
 
MySQLinsanity
MySQLinsanityMySQLinsanity
MySQLinsanity
 
Lab 1 my sql tutorial
Lab 1 my sql tutorial Lab 1 my sql tutorial
Lab 1 my sql tutorial
 
Introduction to Parallel Execution
Introduction to Parallel ExecutionIntroduction to Parallel Execution
Introduction to Parallel Execution
 
Oracle cluster installation with grid and iscsi
Oracle cluster  installation with grid and iscsiOracle cluster  installation with grid and iscsi
Oracle cluster installation with grid and iscsi
 
Advanced Replication
Advanced ReplicationAdvanced Replication
Advanced Replication
 
Performance tuning a quick intoduction
Performance tuning   a quick intoductionPerformance tuning   a quick intoduction
Performance tuning a quick intoduction
 

Viewers also liked

【中文】 odi no.004 analysis of oracle performance degradation caused by ineffi...
【中文】   odi no.004 analysis of oracle performance degradation caused by ineffi...【中文】   odi no.004 analysis of oracle performance degradation caused by ineffi...
【中文】 odi no.004 analysis of oracle performance degradation caused by ineffi...
EXEM
 
Oracle Deep Internal 4 (ver.2)
Oracle Deep Internal 4 (ver.2)Oracle Deep Internal 4 (ver.2)
Oracle Deep Internal 4 (ver.2)
EXEM
 
2009년 시무식 Apm
2009년 시무식 Apm2009년 시무식 Apm
2009년 시무식 ApmEXEM
 
밋업발표
밋업발표밋업발표
밋업발표
진성 박
 
Oracle Deep Internal 2 (ver.2)
Oracle Deep Internal 2 (ver.2)Oracle Deep Internal 2 (ver.2)
Oracle Deep Internal 2 (ver.2)
EXEM
 
Oracle Deep Internal 3 (ver.2)
Oracle Deep Internal 3 (ver.2)Oracle Deep Internal 3 (ver.2)
Oracle Deep Internal 3 (ver.2)
EXEM
 
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
EXEM
 
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
EXEM
 
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀
EXEM
 
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
EXEM
 

Viewers also liked (11)

【中文】 odi no.004 analysis of oracle performance degradation caused by ineffi...
【中文】   odi no.004 analysis of oracle performance degradation caused by ineffi...【中文】   odi no.004 analysis of oracle performance degradation caused by ineffi...
【中文】 odi no.004 analysis of oracle performance degradation caused by ineffi...
 
test
testtest
test
 
Oracle Deep Internal 4 (ver.2)
Oracle Deep Internal 4 (ver.2)Oracle Deep Internal 4 (ver.2)
Oracle Deep Internal 4 (ver.2)
 
2009년 시무식 Apm
2009년 시무식 Apm2009년 시무식 Apm
2009년 시무식 Apm
 
밋업발표
밋업발표밋업발표
밋업발표
 
Oracle Deep Internal 2 (ver.2)
Oracle Deep Internal 2 (ver.2)Oracle Deep Internal 2 (ver.2)
Oracle Deep Internal 2 (ver.2)
 
Oracle Deep Internal 3 (ver.2)
Oracle Deep Internal 3 (ver.2)Oracle Deep Internal 3 (ver.2)
Oracle Deep Internal 3 (ver.2)
 
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
 
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
 
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀
 
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
 

Similar to 제 8회 엑셈 수요 세미나 자료 연구컨텐츠팀

Complex stories about Sqooping PostgreSQL data
Complex stories about Sqooping PostgreSQL dataComplex stories about Sqooping PostgreSQL data
Complex stories about Sqooping PostgreSQL data
NTT DATA OSS Professional Services
 
Troubleshooting Complex Performance issues - Oracle SEG$ contention
Troubleshooting Complex Performance issues - Oracle SEG$ contentionTroubleshooting Complex Performance issues - Oracle SEG$ contention
Troubleshooting Complex Performance issues - Oracle SEG$ contention
Tanel Poder
 
Oracle Database performance tuning using oratop
Oracle Database performance tuning using oratopOracle Database performance tuning using oratop
Oracle Database performance tuning using oratop
Sandesh Rao
 
Vagrant, Ansible, and OpenStack on your laptop
Vagrant, Ansible, and OpenStack on your laptopVagrant, Ansible, and OpenStack on your laptop
Vagrant, Ansible, and OpenStack on your laptop
Lorin Hochstein
 
Performance Tuning Using oratop
Performance Tuning Using oratop Performance Tuning Using oratop
Performance Tuning Using oratop
Sandesh Rao
 
Performance Tuning Using oratop
Performance Tuning Using oratop Performance Tuning Using oratop
Performance Tuning Using oratop
Sandesh Rao
 
16 MySQL Optimization #burningkeyboards
16 MySQL Optimization #burningkeyboards16 MySQL Optimization #burningkeyboards
16 MySQL Optimization #burningkeyboards
Denis Ristic
 
11thingsabout11g 12659705398222 Phpapp01
11thingsabout11g 12659705398222 Phpapp0111thingsabout11g 12659705398222 Phpapp01
11thingsabout11g 12659705398222 Phpapp01Karam Abuataya
 
11 Things About11g
11 Things About11g11 Things About11g
11 Things About11g
fcamachob
 
1 m+ qps on mysql galera cluster
1 m+ qps on mysql galera cluster1 m+ qps on mysql galera cluster
1 m+ qps on mysql galera cluster
OlinData
 
ProxySQL & PXC(Query routing and Failover Test)
ProxySQL & PXC(Query routing and Failover Test)ProxySQL & PXC(Query routing and Failover Test)
ProxySQL & PXC(Query routing and Failover Test)
YoungHeon (Roy) Kim
 
What’s new in 9.6, by PostgreSQL contributor
What’s new in 9.6, by PostgreSQL contributorWhat’s new in 9.6, by PostgreSQL contributor
What’s new in 9.6, by PostgreSQL contributor
Masahiko Sawada
 
Troubleshooting Complex Oracle Performance Problems with Tanel Poder
Troubleshooting Complex Oracle Performance Problems with Tanel PoderTroubleshooting Complex Oracle Performance Problems with Tanel Poder
Troubleshooting Complex Oracle Performance Problems with Tanel Poder
Tanel Poder
 
Install and upgrade Oracle grid infrastructure 12.1.0.2
Install and upgrade Oracle grid infrastructure 12.1.0.2Install and upgrade Oracle grid infrastructure 12.1.0.2
Install and upgrade Oracle grid infrastructure 12.1.0.2
Biju Thomas
 
M|18 Querying Data at a Previous Point in Time
M|18 Querying Data at a Previous Point in TimeM|18 Querying Data at a Previous Point in Time
M|18 Querying Data at a Previous Point in Time
MariaDB plc
 
How to Avoid Pitfalls in Schema Upgrade with Galera
How to Avoid Pitfalls in Schema Upgrade with GaleraHow to Avoid Pitfalls in Schema Upgrade with Galera
How to Avoid Pitfalls in Schema Upgrade with Galera
Sveta Smirnova
 
Oracle Basics and Architecture
Oracle Basics and ArchitectureOracle Basics and Architecture
Oracle Basics and ArchitectureSidney Chen
 

Similar to 제 8회 엑셈 수요 세미나 자료 연구컨텐츠팀 (20)

Complex stories about Sqooping PostgreSQL data
Complex stories about Sqooping PostgreSQL dataComplex stories about Sqooping PostgreSQL data
Complex stories about Sqooping PostgreSQL data
 
Troubleshooting Complex Performance issues - Oracle SEG$ contention
Troubleshooting Complex Performance issues - Oracle SEG$ contentionTroubleshooting Complex Performance issues - Oracle SEG$ contention
Troubleshooting Complex Performance issues - Oracle SEG$ contention
 
Oracle Database performance tuning using oratop
Oracle Database performance tuning using oratopOracle Database performance tuning using oratop
Oracle Database performance tuning using oratop
 
Vagrant, Ansible, and OpenStack on your laptop
Vagrant, Ansible, and OpenStack on your laptopVagrant, Ansible, and OpenStack on your laptop
Vagrant, Ansible, and OpenStack on your laptop
 
Rmoug ashmaster
Rmoug ashmasterRmoug ashmaster
Rmoug ashmaster
 
Performance Tuning Using oratop
Performance Tuning Using oratop Performance Tuning Using oratop
Performance Tuning Using oratop
 
Performance Tuning Using oratop
Performance Tuning Using oratop Performance Tuning Using oratop
Performance Tuning Using oratop
 
16 MySQL Optimization #burningkeyboards
16 MySQL Optimization #burningkeyboards16 MySQL Optimization #burningkeyboards
16 MySQL Optimization #burningkeyboards
 
11thingsabout11g 12659705398222 Phpapp01
11thingsabout11g 12659705398222 Phpapp0111thingsabout11g 12659705398222 Phpapp01
11thingsabout11g 12659705398222 Phpapp01
 
11 Things About11g
11 Things About11g11 Things About11g
11 Things About11g
 
1 m+ qps on mysql galera cluster
1 m+ qps on mysql galera cluster1 m+ qps on mysql galera cluster
1 m+ qps on mysql galera cluster
 
ProxySQL & PXC(Query routing and Failover Test)
ProxySQL & PXC(Query routing and Failover Test)ProxySQL & PXC(Query routing and Failover Test)
ProxySQL & PXC(Query routing and Failover Test)
 
What’s new in 9.6, by PostgreSQL contributor
What’s new in 9.6, by PostgreSQL contributorWhat’s new in 9.6, by PostgreSQL contributor
What’s new in 9.6, by PostgreSQL contributor
 
Troubleshooting Complex Oracle Performance Problems with Tanel Poder
Troubleshooting Complex Oracle Performance Problems with Tanel PoderTroubleshooting Complex Oracle Performance Problems with Tanel Poder
Troubleshooting Complex Oracle Performance Problems with Tanel Poder
 
Install and upgrade Oracle grid infrastructure 12.1.0.2
Install and upgrade Oracle grid infrastructure 12.1.0.2Install and upgrade Oracle grid infrastructure 12.1.0.2
Install and upgrade Oracle grid infrastructure 12.1.0.2
 
M|18 Querying Data at a Previous Point in Time
M|18 Querying Data at a Previous Point in TimeM|18 Querying Data at a Previous Point in Time
M|18 Querying Data at a Previous Point in Time
 
How to Avoid Pitfalls in Schema Upgrade with Galera
How to Avoid Pitfalls in Schema Upgrade with GaleraHow to Avoid Pitfalls in Schema Upgrade with Galera
How to Avoid Pitfalls in Schema Upgrade with Galera
 
Pdxpugday2010 pg90
Pdxpugday2010 pg90Pdxpugday2010 pg90
Pdxpugday2010 pg90
 
Oracle Basics and Architecture
Oracle Basics and ArchitectureOracle Basics and Architecture
Oracle Basics and Architecture
 
Operation outbreak
Operation outbreakOperation outbreak
Operation outbreak
 

More from EXEM

Amazon aurora 2
Amazon aurora 2Amazon aurora 2
Amazon aurora 2
EXEM
 
PostgreSQL Deep Internal
PostgreSQL Deep InternalPostgreSQL Deep Internal
PostgreSQL Deep Internal
EXEM
 
Oracle Deep Internal 3 (ver.2)
Oracle Deep Internal 3 (ver.2)Oracle Deep Internal 3 (ver.2)
Oracle Deep Internal 3 (ver.2)
EXEM
 
Oracle Deep Internal 1 (ver.2)
Oracle Deep Internal 1 (ver.2)Oracle Deep Internal 1 (ver.2)
Oracle Deep Internal 1 (ver.2)
EXEM
 
[KOR] ODI no.004 analysis of oracle performance degradation caused by ineffic...
[KOR] ODI no.004 analysis of oracle performance degradation caused by ineffic...[KOR] ODI no.004 analysis of oracle performance degradation caused by ineffic...
[KOR] ODI no.004 analysis of oracle performance degradation caused by ineffic...
EXEM
 
[ODI] chapter3 What is Max CR DBA(Max length)?
[ODI] chapter3 What is Max CR DBA(Max length)? [ODI] chapter3 What is Max CR DBA(Max length)?
[ODI] chapter3 What is Max CR DBA(Max length)?
EXEM
 
[ODI] chapter2 what is "undo record chaining"?
[ODI] chapter2 what is "undo record chaining"?[ODI] chapter2 what is "undo record chaining"?
[ODI] chapter2 what is "undo record chaining"?
EXEM
 
[ODI] chapter1 When Update statement is executed, How does oracle undo work?
[ODI] chapter1 When Update statement is executed,  How does oracle undo work?[ODI] chapter1 When Update statement is executed,  How does oracle undo work?
[ODI] chapter1 When Update statement is executed, How does oracle undo work?
EXEM
 
[Practical owi] lock & latch
[Practical owi] lock & latch[Practical owi] lock & latch
[Practical owi] lock & latch
EXEM
 

More from EXEM (9)

Amazon aurora 2
Amazon aurora 2Amazon aurora 2
Amazon aurora 2
 
PostgreSQL Deep Internal
PostgreSQL Deep InternalPostgreSQL Deep Internal
PostgreSQL Deep Internal
 
Oracle Deep Internal 3 (ver.2)
Oracle Deep Internal 3 (ver.2)Oracle Deep Internal 3 (ver.2)
Oracle Deep Internal 3 (ver.2)
 
Oracle Deep Internal 1 (ver.2)
Oracle Deep Internal 1 (ver.2)Oracle Deep Internal 1 (ver.2)
Oracle Deep Internal 1 (ver.2)
 
[KOR] ODI no.004 analysis of oracle performance degradation caused by ineffic...
[KOR] ODI no.004 analysis of oracle performance degradation caused by ineffic...[KOR] ODI no.004 analysis of oracle performance degradation caused by ineffic...
[KOR] ODI no.004 analysis of oracle performance degradation caused by ineffic...
 
[ODI] chapter3 What is Max CR DBA(Max length)?
[ODI] chapter3 What is Max CR DBA(Max length)? [ODI] chapter3 What is Max CR DBA(Max length)?
[ODI] chapter3 What is Max CR DBA(Max length)?
 
[ODI] chapter2 what is "undo record chaining"?
[ODI] chapter2 what is "undo record chaining"?[ODI] chapter2 what is "undo record chaining"?
[ODI] chapter2 what is "undo record chaining"?
 
[ODI] chapter1 When Update statement is executed, How does oracle undo work?
[ODI] chapter1 When Update statement is executed,  How does oracle undo work?[ODI] chapter1 When Update statement is executed,  How does oracle undo work?
[ODI] chapter1 When Update statement is executed, How does oracle undo work?
 
[Practical owi] lock & latch
[Practical owi] lock & latch[Practical owi] lock & latch
[Practical owi] lock & latch
 

Recently uploaded

Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 

Recently uploaded (20)

Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 

제 8회 엑셈 수요 세미나 자료 연구컨텐츠팀

  • 1. EXEM seminar report no. 008 (2016.07.12) Research & Contents Team 제 8회 수요 세미나 자료
  • 2. Table of Agenda © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. 제 8회 수요 세미나 1. [PostgreSQL] Vacuum의 거의 모든 것 (4차) 2. [MySQL] Lock (1차)
  • 3. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. [PostgreSQL] Vacuum의 거의 모든 것 (4차) 발표자: 연구컨텐츠팀 이근오
  • 4. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. [PostgreSQL] Vacuum의 거의 모든 것(4차) Page Layout ( 1/2 )  Dump 0.
  • 5. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. [PostgreSQL] Vacuum의 거의 모든 것(4차)  SELECT * from heap_page_items(get_raw_page('t2', 0)); Page Layout ( 1/2 )  Dump 0. 00 7c 9f c0 00 7c 9f 80
  • 6. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. [PostgreSQL] Vacuum의 거의 모든 것(4차)  SELECT * from heap_page_items(get_raw_page('t2', 0)); create table t2 ( c1 char(19),c2 char(8),c3 char(8) ); insert into t2 values('A1001','A','A'); insert into t2 values('A1002','A','A');  Dump all line pointers on a heap page 1.
  • 7. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. [PostgreSQL] Vacuum의 거의 모든 것(4차)  SELECT * from heap_page_items(get_raw_page('t2', 0)); update t2 set c2='B' where c1 = 'A1001' ;  Dump 2. 새로운 위치에 변경데이타 “B” 레코드를 추가. ItemIdData 부분도 추가됨. “A1001” 원본은 “xmax” 값을 변경
  • 8. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. [PostgreSQL] Vacuum의 거의 모든 것(4차) update t2 set c2='B' where c1 = 'A1001' ;  tab.sql 2. select xmin,xmax,ctid,* from t1;  select txid_current() ; select xmin,xmax,ctid,* from t2; “A1001” item 의 xmin 변경됨.
  • 9. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. [PostgreSQL] Vacuum의 거의 모든 것(4차)  SELECT * from heap_page_items(get_raw_page('t2', 0)); vacuum t2 ;  Dump 3. “순서가 변경됨” • A1002가 제일 아래로 내려감 • A1001 위치도 아래로 변경 • A1001 원래 위치의 데이터는 그대로 두고 ItemIdData만 삭제.
  • 10. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. [PostgreSQL] Vacuum의 거의 모든 것(4차) vacuum t2 ;  tab.sql 3. select xmin,xmax,ctid,* from t1;  select txid_current() ; select xmin,xmax,ctid,* from t2; 변경안됨
  • 11. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. [PostgreSQL] Vacuum의 거의 모든 것(4차) vacuum freeze t2 ;  tab.sql 4. select xmin,xmax,ctid,* from t1; select xmin,xmax,ctid,* from t2; 1807012522에서 변경됨
  • 12. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. [PostgreSQL] Vacuum의 거의 모든 것(4차) vacuum full t2 ;  tab.sql 5. select xmin,xmax,ctid,* from t1; select xmin,xmax,ctid,* from t2; 136677에서 변경됨 변경안됨
  • 13. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. [PostgreSQL] Vacuum의 거의 모든 것(4차) vacuum full t2 ;  Dump 5.
  • 14. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. [PostgreSQL] Vacuum의 거의 모든 것(4차) autovacuum_analyze_scale_factor = 0.1 autovacuum_analyze_threshold = 50 6. 1. 1000건 insert 2. autovacuum_naptime=60s 이상 wait 후 확인 : autoanalyze OK. 3. autovacuum_analyze_scale_factor=0.1 인 100건 insert  wait 후 확인 : autoanalyze NOT OK.
  • 15. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. [PostgreSQL] Vacuum의 거의 모든 것(4차) autovacuum_analyze_scale_factor = 0.1 autovacuum_analyze_threshold = 50 6. 4. autovacuum_analyze_threshold=50 인 50건 insert  wait 후 확인 : autoanalyze NOT OK. 5. Only 1건 insert  wait 후 확인 : autoanalyze OK. autovacuum analyze 대상 조건 변경건수(insert포함) > ( reltuples * 0.1(autovacuum_analyze_scale_factor) ) + 50(autovacuum_analyze_scale_factor)
  • 16. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. [PostgreSQL] Vacuum의 거의 모든 것(4차) autovacuum_vacuum_scale_factor = 0.2 autovacuum_vacuum_threshold = 50 7. 1. 1000건 insert  wait 후 확인 : autovacuum NOT OK. 2. autovacuum_vacuum_scale_factor=0.2 인 200건 update  wait 후 확인 : autovacuum NOT OK.
  • 17. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. [PostgreSQL] Vacuum의 거의 모든 것(4차) autovacuum_vacuum_scale_factor = 0.2 autovacuum_vacuum_threshold = 50 7. 3. autovacuum_vacuum_threshold=50 인 50건 update  wait 후 확인 : autovacuum NOT OK. 4. Only 1건 update  wait 후 확인 : autovacuum OK. autovacuum vacuum 대상 조건 변경건수(insert제외) > ( reltuples * 0.2(autovacuum_vacuum_scale_factor) ) + 50(autovacuum_vacuum_threshold)
  • 18. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. [MySQL] Lock (1차) 발표자: 연구컨텐츠팀 이대덕
  • 19. 02. [MySQL] MySQL Lock 2-1. Global Read Lock 2-2. Table Lock 2-3. String Lock 2-4. Name Lock Table of Agenda
  • 20. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. FLUSH TABLES WITH READ LOCK; UNLOCK TABLES; • 서버 전체(모든 스토리지 엔진)에 Global Read Lock획득 • Table Cache에 있는 테이블을 Flush (기존의 문장이 Table Lock을 가지고 수행 중이라 면 대기함) • SELECT문을 제외한 문장은 Global Read Lock이 해제될 때까지 대기 (State: Waiting for global read lock) • 주로 DB전체의 일관성 있는 백업을 받기 위해 사용 2-1. Global Read Lock
  • 21. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. (root@localhost)[(none)] 13:48:51>show status like 'open_tables'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Open_tables | 54 | +---------------+-------+ 1 row in set (0.00 sec) (root@localhost)[(none)] 13:48:53>flush tables with read lock; Query OK, 0 rows affected (9.06 sec) (root@localhost)[(none)] 13:49:10>show status like 'open_tables'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Open_tables | 1 | +---------------+-------+ 1 row in set (0.00 sec) (root@localhost)[(none)] 14:00:20>unlock tables; Query OK, 0 rows affected (0.00 sec) 2-1. Global Read Lock
  • 22. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. (root@localhost)[exem_i] 13:32:41>select connection_id(); +-----------------+ | connection_id() | +-----------------+ | 14286 | +-----------------+ 1 row in set (0.00 sec) (root@localhost)[exem_i] 13:33:16>lock table foo write; Query OK, 0 rows affected (10.97 sec) 2-1. Global Read Lock (root@localhost)[(none)] 13:34:37>select connection_id(); +-----------------+ | connection_id() | +-----------------+ | 13 | +-----------------+ 1 row in set (0.00 sec) (root@localhost)[(none)] 13:34:44>flush tables with read lock;
  • 23. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. 2-1. Global Read Lock (root@localhost)[exem_i] 13:33:34>show processlist; +-------+------+-----------+--------+---------+------+------------------------------+----------------------------+ | Id | User | Host | db | Command | Time | State | Info | +-------+------+-----------+--------+---------+------+------------------------------+----------------------------+ | 13 | root | localhost | NULL | Query | 20 | Waiting for global read lock | flush table with read lock | | 14286 | root | localhost | exem_i | Query | 0 | starting | show processlist | +-------+------+-----------+--------+---------+------+------------------------------+----------------------------+ 2 rows in set (0.00 sec)
  • 24. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. LOCK TABLES tbl_name [[AS] alias] lock_type [, tbl_name [[AS] alias] lock_type... UNLOCK TABLES • Lock_type : READ [LOCAL] | [LOW_PRIORITY] WRITE • MySQL레벨에서 테이블 단위로 설정되는 LOCK • MyISAM, MEMORY Storage Engine에서는 데이터를 변경하는 즉시 묵시적으로 획득 후 변경 후 반환 • 해당 테이블에 LOCK_TABLE 권한 필요 • 서버 레벨이지만 MyISAM스토리지 엔진을 기준으로 한 LOCK이며 InnoDB에서는 사용을 권장하지 않음 • READ LOCK : 해당세션과 다른 세션 모두 Select문장만 수행가능하며 Local 옵션을 사용 하는 경우 Concurrent Insert가능 다른 세션에서 획득한 READ LOCK끼리 호환가능 • WRITE LOCK : 해당 세션에서만 DML,DDL이 가능하며 다른 세션의 읽기,쓰기, TABLE LOCK과 호환불가 LOW_PRIORITY 옵션을 사용하는 경우 Lock 요청 큐에서 낮은 우선순위를 갖게 됨 2-2. Table Lock
  • 25. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. (root@localhost)[exem_i] 15:20:06>select connection_id(); +-----------------+ | connection_id() | +-----------------+ | 14286| +-----------------+ 1 row in set (0.00 sec) (root@localhost)[exem_i] 14:36:22>lock table foo read; Query OK, 0 rows affected (0.00 sec) (root@localhost)[exem_i] 14:36:51>select * from foo; +------+------+ | c1 | c2 | +------+------+ | 31 | a | | 2 | b | | 123 | a | +------+------+ 3 rows in set (0.00 sec) (root@localhost)[exem_i] 14:36:57>update foo set c1=1 where c2='a'; ERROR 1099 (HY000): Table 'foo' was locked with a READ lock and can't be updated 2-2. Table Lock
  • 26. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. (root@localhost)[exem_i] 15:20:06>select connection_id(); +-----------------+ | connection_id() | +-----------------+ | 13 | +-----------------+ 1 row in set (0.00 sec) (root@localhost)[exem_i] 15:28:07>select * from foo; +------+------+ | c1 | c2 | +------+------+ | 31 | a | | 2 | b | | 123 | a | +------+------+ 3 rows in set (0.00 sec) (root@localhost)[exem_i] 15:28:11>update foo set c1=1 where c2='a'; (root@localhost)[exem_i] 15:27:31>show processlist; +-------+------+-----------+--------+---------+------+---------------------------------+----------------------------------+ | Id | User | Host | db | Command | Time | State | Info | +-------+------+-----------+--------+---------+------+---------------------------------+----------------------------------+ | 13 | root | localhost | exem_i | Query | 15 | Waiting for table metadata lock | update foo set c1=1 where c2='a' | | 14286 | root | localhost | exem_i | Query | 0 | starting | show processlist | | 25063 | root | localhost | NULL | Sleep | 2833 | | NULL | +-------+------+-----------+--------+---------+------+---------------------------------+----------------------------------+ 3 rows in set (0.00 sec) 2-2. Table Lock
  • 27. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. (root@localhost)[exem_i] 15:20:06>select connection_id(); +-----------------+ | connection_id() | +-----------------+ | 13 | +-----------------+ 1 row in set (0.00 sec) (root@localhost)[exem_i] 15:34:08>lock table foo read; Query OK, 0 rows affected (0.00 sec) (root@localhost)[exem_i] 15:34:15>lock table foo write; (root@localhost)[exem_i] 15:31:58>show processlist; +-------+------+-----------+--------+---------+------+---------------------------------+----------------------+ | Id | User | Host | db | Command | Time | State | Info | +-------+------+-----------+--------+---------+------+---------------------------------+----------------------+ | 13 | root | localhost | exem_i | Query | 5 | Waiting for table metadata lock | lock table foo write | | 14286 | root | localhost | exem_i | Query | 0 | starting | show processlist | | 31080 | root | localhost | NULL | Sleep | 147 | | NULL | +-------+------+-----------+--------+---------+------+---------------------------------+----------------------+ 3 rows in set (0.00 sec) 2-2. Table Lock
  • 28. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. mysql> lock tables foo read; Query OK, 0 rows affected (0.00 sec) mysql> show open tables from exem_i; +----------+--------+--------+-------------+ | Database | Table | In_use | Name_locked | +----------+--------+--------+-------------+ | exem_i | t1 | 0 | 0 | | exem_i | myisam | 0 | 0 | | exem_i | foo | 1 | 0 | +----------+--------+--------+-------------+ 3 rows in set (0.00 sec) mysql> unlock tables; Query OK, 0 rows affected (0.00 sec) mysql> show open tables from exem_i; +----------+--------+--------+-------------+ | Database | Table | In_use | Name_locked | +----------+--------+--------+-------------+ | exem_i | t1 | 0 | 0 | | exem_i | myisam | 0 | 0 | | exem_i | foo | 0 | 0 | +----------+--------+--------+-------------+ 3 rows in set (0.00 sec) 2-2. Table Lock
  • 29. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. GET_LOCK(str,timeout) RELEASE_LOCK(str) IS_USED_LOCK(str) IS_FREE_LOCK(str) • TABLE,ROW 단위가 아닌 Client간의 String에 대한 Lock • Client들은 동일한 String에 Lock을 획득할 수 없음. • GET_LOCK() : 해당 Lock 획득(획득에 성공하면 1리턴 실패하면 2를 리턴) • RELEASE_LOCK() : 해당 Lock 해제(해제에 성공하면 1리턴, LOCK이 존재하지 않으면 NULL값 리턴) • IS_USED_LOCK() : 해당 Lock을 누가 사용 중인지 확인(사용중인 세션의 Connection_id값 반환 or NULL) • IS_FREE_LOCK() : 특정 String이 사용가능한지 확인(가능하면 1을 리턴, 사용 중이면 0을 리턴, Error발생시 NULL) • 주로 특정 어플리케이션들에서 서로의 데이터 중복을 확인하기 위해 사용 2-3. User Lock
  • 30. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. mysql> select connection_id(); +-----------------+ | connection_id() | +-----------------+ | 243397 | +-----------------+ 1 row in set (0.00 sec) mysql> select is_used_lock('locked_string'); +-------------------------------+ | is_used_lock('locked_string') | +-------------------------------+ | NULL | +-------------------------------+ 1 row in set (0.00 sec) mysql> select is_free_lock('locked_string'); +-------------------------------+ | is_free_lock('locked_string') | +-------------------------------+ | 1 | +-------------------------------+ 1 row in set (0.00 sec) mysql> select get_lock('locked_string',600); +-------------------------------+ | get_lock('locked_string',600) | +-------------------------------+ | 1 | +-------------------------------+ 1 row in set (0.00 sec) 2-3. User Lock
  • 31. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. 2-3. User Lock mysql> select connection_id(); +-----------------+ | connection_id() | +-----------------+ | 243396 | +-----------------+ 1 row in set (0.00 sec) mysql> select is_used_lock('locked_string'); +-------------------------------+ | is_used_lock('locked_string') | +-------------------------------+ | 243397 | +-------------------------------+ 1 row in set (0.00 sec) mysql> select is_free_lock('locked_string'); +-------------------------------+ | is_free_lock('locked_string') | +-------------------------------+ | 0 | +-------------------------------+ 1 row in set (0.00 sec) mysql> select get_lock('locked_string',600); mysql> show processlist; +--------+------+-----------+--------+---------+------+-----------+--------------------------------------+ | Id | User | Host | db | Command | Time | State | Info | +--------+------+-----------+--------+---------+------+-----------+--------------------------------------+ | 243396 | root | localhost | exem_i | Query | 5 | User lock | select get_lock('locked_string',600) | | 243397 | root | localhost | exem_i | Sleep | 179 | | NULL | | 243555 | root | localhost | exem_i | Query | 0 | starting | show processlist | +--------+------+-----------+--------+---------+------+-----------+--------------------------------------+ 3 rows in set (0.00 sec)
  • 32. © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved. RENAME TABLE tbl_name1 TO tbl_name2 DROP TABLE tbl_name • 테이블을 RENAME하거나 DROP할 경우 묵시적으로 테이블 명에 Name Lock • RENAME할 경우 기존이름과 변경될 이름에 모두 Lock획득 • TABLE LOCK과 호환성 없음 • SHOW OPEN TABLES 커맨드로 Name_lock이 걸린 테이블 확인 가능 mysql> show open tables from exem_i; +----------+--------+--------+-------------+ | Database | Table | In_use | Name_locked | +----------+--------+--------+-------------+ | exem_i | abc | 0 | 0 | | exem_i | t1 | 0 | 0 | | exem_i | myisam | 0 | 0 | | exem_i | foo | 0 | 0 | +----------+--------+--------+-------------+ 4 rows in set (0.00 sec) 2-4. Name Lock
  • 33. Research & Contents THANK YOU Blog Video E-mail NAVER http://cafe.naver.com/playexem ITPUB http://blog.itpub.net/31135309/ Wordpress https://playexem.wordpress.com/ Slideshare http://www.slideshare.net/playexem Youtube https://www.youtube.com/channel/UC5wKR _-A0eL_Pn_EMzoauJg Tudou http://www.tudou.com/home/maxgauge/ 교육 문의: 연구컨텐츠팀 김숙진 edu@ex-em.com © Copyrights 2001~2016, EXEM CO.,LTD. All Rights Reserved.