[MySQL] Explain 결과의 칼럼들

1. id

2. select_type
[MySQL] Explain 결과의 select_type 칼럼

3. table
[MySQL] Explain 결과의 table 칼럼

4. type
[MySQL] Explain 결과의 type 칼럼

5. possible_keys
 - MySQL 옵티마이저가 최적의 실행계획을 만들기 위해 후부로 선정했던 접근 방식에서 사용되는 인덱스 목록
 - 무시해도 되는 칼럼이다.

6. key
 - 최종 선택된 실행 계획에서 사용하는 인덱스

7. key_len
 - 인덱스의 각 레코드에서 사용된 byte값

8. ref
 - 접근방식(type)이 ref 일때 참조 조건으로 제공된 값을 보여준다.
 - 상수면 const, 다른 테이블의 칼럼값이면 그 테이블 명과 칼럼명
 - func라고 나오는 경우 가급적 이 값이 안나오게 해결하는게 좋다.

9. rows
 - 각 스토리지 엔진별로 가지고 있는 통계 정보를 참조해서 산출해낸  쿼리를 처리하기 위해 읽어야할 레코드의 예상 값
 - 산출치이고, 실제 쿼리 결과 레코드 건수와는 다르다.

10. Extra

Posted by incree

2014/08/25 13:19 2014/08/25 13:19
, , , , , , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/357

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[MySQL] Explain 결과의 type 칼럼

1. system
 - MyISAM or MEMORY table중 레코드가 1건 이하로 존재하는 테이블의 참조 형태 접근
 * InnoDB에는 없는 형태

2. const
 - primary key or unique key 를 where 조건에 이용해서 결과가 1건만 반환되는 쿼리의 처리 방식

3. eq_ref
 - join에서 처음 읽은 테이블의 칼럼 값을 그 다음 읽어야 할 테이블의 primary key or unique key 칼럼의 검색 조건에 사용할때를 eq_ref 라고 하고
두번째 이후에 읽는 테이블의 type 칼럼에 표시된다.
 - 두번째 이후에 읽는 테이블에서 반드시 1건만 존재한다는 보장이 있어야 사용가능

4. ref
 - join 순서와 상관없고, index 종류와 관계없이 도등 조건으로 검색할 때는 ref 접근 방법이 사용된다.

5. fulltext
 - 

6. ref_or_null
 - ref 접근 방식과 같은데, NULL 비교가 추가된 형태

7. index_merge
 - 2개 이상의 index를 이용해 각각의 검색 결과를 만들어낸 후 그 결과를 병합하는 처리 방식

8. unique_subquery
 - where 조건절에 사용될 수 있는 IN (subquery) 형태의 쿼리를 위한 접근 방식

9. index_subquery
 - in (subquery) 형태에서 subquery의 결과가 중복된 값을 반환할 수 있지만, 중복을 index를 이용해 제거할 수 있는 접근 방법

10. range
 - <, >, IS NULL, BETWEEN, IN, LIKE 등의 연산자를 이용해 인덱스 검색할때
 * 일반적으로 range scan은 const, ref, range 세가지 접근 방법을 말한다.

11. index
 - index full scan

12. ALL
 -


* All, index
index는 인덱스 풀 스캔을 의미하며, ALL은 풀 테이블 스캔을 의미한다. 둘 다 대상의 차이만 있지 전체 레코드를 대상으로 하는 작업 방식이라서 빠르게 결과를 가져오기는 어렵다.
일반적인 OLTP 환경에 적합한 접근 방식은 아니므로 새로운 인덱스를 추가하거나 쿼리의 요건을 변경해서 이러한 접근 방법을 제거하는 것이 좋다.

Posted by incree

2014/08/25 13:03 2014/08/25 13:03
, ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/356

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[MySQL] Explain 결과의 table 칼럼

1. NULL
 - 별도의 테이블 사용하지 않는 경우(ex : select NOW())

2. derived or union
 - 임시테이블
 - 뒤에 나오는 숫자는 id값

Posted by incree

2014/08/25 12:48 2014/08/25 12:48
, ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/355

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[MySQL] Explain 결과의 select_type 칼럼

1. SIMPLE
 - UNION이나 sub query를 사용하지 않는 단순한 SELECT
 - 일반적으로 제일 바깥 SELECT query가 SIMPLE로 표시된다.

2. PRIMARY
 - UNION이나 sub query가 포함된 SELECT 쿼리의 가장 바깥쪽에 있는 쿼리

3. UNION
 - UNION으로 결합하는 SELECT query에서 두번째 이후의 SELECT의 select_type
 - 첫번째는 UNION으로 결합된 전체 집합의 select_type가 표시

4. DEPENDENT UNION
 - UNION으로 결합된 쿼리가 외부의 영향을 받는다.
*** "DEPENDENT" 키워드가 포함된 sub quiery는 비효율적인 경우가 많다.

5. UNION RESULT
 - UNION 결과

6. SUBQUERY
 - FROM절에서 사용하는 쿼리
 * Nested Query : select column에 사용하는 sub query
 * Sub Query : where 절에 사용하는 sub query
 * Derived : from 절에 사용하는 sub query(inline view, sub select)

7. DEPENDENT SUBQUERY
 - 바깥쪽 select query에서 정의된 칼럼을 사용하는 sub query
쿼리의 from 절 이외의 부분에서 사용하는 서브 쿼리가 자체적으로 실행되지 못하고, 외부 쿼리에서 값을 전달받아 실해오디는 경우 DEPENDENT SUBQUERY가 표시된다.
이는 서브 쿼리가 먼저 실행되지 못하고, 서브 쿼리가 외부 쿼리의 결과 값에 의존적이기 때문에 전체 쿼리의 성능을 느리게 만든다.
서브 쿼리가 불필요하게 외부 쿼리의 값을 전달받고 있는지 검토해서, 가능하다면 외부 쿼리와의 의존도를 제거하는 것이 좋다.

8. DERIVED
 - sub query가 from 절에 사용된 경우
 *** 가능하면 sub query보다는 join을 사용하라
(DERIVED는 from 절에 사용된 서브 쿼리로부터 발생한 임시 테이블을 의미한다.
임시테이블은 메모리에 저장될 수도 있고 디스크에 저장될 수도 있다.
일반적으로 메모리에 저장하는 경우에는 크게 성능에 영향을 미치지 않지만, 데이터의 크기가 커서 임시 테이블을 디스크에 저장하면 성능이 떨어진다.)

9. UNCACHEABLE SUBQUERY
 - 쿼리의 from 절 이외의 부분에서 사용하는 서브 쿼리는 가능하면 MySQL 옵티마이저가 최대한 캐시되어 재사용 될 수 있게 유도한다.
하지만 사용자 변수나 일부 함수가 사용된 경우에는 이러한 캐시 기능을 사용할 수 없게 만든다.
이런 실행 계획이 사용된다면 혹시 사용자 변수를 제거하거나 다른 함수로 대체해서 사용 가능할지 검토해보는 것이 좋다.

10. UNCACHEABLE UNION

Posted by incree

2014/08/25 12:45 2014/08/25 12:45
, ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/354

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[Windows] 윈도우 서비스 제거하기

윈도우 서비스 제거하기

#요즘에는 프로그램을 설치하는게 겁이난다. 뭐 하나 설치만 하고 나면 기존에 잘 동작하던 프로그램들도 앙탈을 부리기 일쑤기 때문에, 그런일을 몇번 겪고 나니 툴 하나 테스트 하는것도 쉽지가 않다.

#얼마전 오라클을 설치하고 나서 문제가 있어 삭제를 했는데 서비스에 오라클 관련 서비스가 계속 떠 있는것이 보였다.제거가 안된것이다. 수동으로 서비스를 제거하기로 맘먹고 방법을 찾아보기로 했다. “네이버에게 물어봐야지” 맨날 네이버에 대한 불만을 이야기 하면서도 이럴때는 참 간사하다. 잉 근데 찾을수가 없었다. 몇군데를 뒤지다가 결국 찾은것은 윈도우 도움말이었다. (윈도우 도움말을 써보긴 이번이 처음이다. ^^)

#도스명령어 중에 sc 라는 명령어가 있다. 이 명령어를 이용하면 콤맨드라인 상에서 서비스를 시작/정지/삭제 하는것이 모두 가능하다.

sc delete 서비스명

이렇게 간단할수가. 그런데 문제가 생겼다. 서비스명에 공백이 있는것이다. 에러가 났다. 명령어 옵션을 찾아보다가 getKeyName이라는 옵션을 발견했다.

sc getKeyName “서비스명”

sc delete 키명

먼저 getKeyName으로 키명을 찾아서 그 키명을 활용하니 삭제가 됐다. 근데 갑자기 드는 생각이 서비스명에 공백이 있으면 그냥 서비스명에 “”를 붙여서 하면 되지 않을까 ? 해보니 잘 된다.

sc delete “서비스명”

알고나니 참 간단한데 모를때는 이걸 도무지 어떻게 지워야 하는지 난감한게 서비스인거 같다. GUI가 주는 편리함에 익숙해 지다보니 점점 바보가 되는듯 하다.

Posted by incree

2014/08/13 03:03 2014/08/13 03:03
,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/353

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[MySQL] explain type의 빠른 순서

system 
const 
eq_ref 
ref 
ref_or_null 
index_merge 
unique_subquery 
index_subquery 
range 
index 
ALL

Posted by incree

2014/08/13 03:00 2014/08/13 03:00
,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/352

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[Windows] 디렉토리 삭제

디렉터리를 지웁니다.

RMDIR [/S] [/Q] [드라이브:]경로
RD [/S] [/Q] [드라이브:]경로

    /S      지정된 디렉터리 자체와, 그 안의 모든 디렉터리 및 파일을 지웁니다.
            디렉터리 트리를 지우는데 사용합니다.

    /Q      조용한 모드로, /S로 디렉터리 트리를 지우는데 문제가 없으면 다시
            묻지 않습니다.

Posted by incree

2014/08/13 02:59 2014/08/13 02:59
, , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/351

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[Linux] 특정 프로세스 상태 확인하기

cat /proc/processID/status
메모리 사용량등의 정보를 확인할 수 있다.
[root@03a69d7f-472d-496d-82e6-7d8c839364eb ~]# cat /proc/2138/status
Name:   
State:  S (sleeping)
Tgid:   1118
Pid:    1118
PPid:   959
TracerPid:      0
Uid:    27      27      27      27
Gid:    27      27      27      27
Utrace: 0
FDSize: 256
Groups: 27
VmPeak:  1347552 kB
VmSize:  1302332 kB
VmLck:         0 kB
VmHWM:    169312 kB
VmRSS:     42100 kB
VmData:  1287276 kB
VmStk:        88 kB
VmExe:      6788 kB
VmLib:      7252 kB
VmPTE:       560 kB
VmSwap:   181564 kB
Threads:        45
SigQ:   0/14841
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000087007
SigIgn: 0000000000001006
SigCgt: 00000001800066e9
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff
Cpus_allowed:   3
Cpus_allowed_list:      0-1
Mems_allowed:   1
Mems_allowed_list:      0
voluntary_ctxt_switches:        1872385
nonvoluntary_ctxt_switches:     134
 
 

Posted by incree

2014/08/10 21:19 2014/08/10 21:19
, , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/349

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[Linux] root 계정의 ssh 원격접속 제한하기

/etc/ssh/sshd_config 에서 PermitRootLogin yes를 찾아서 PermitRootLogin no로 수정한 후

sshd demon을 재시작한다.

service sshd restart

Posted by incree

2014/08/07 02:14 2014/08/07 02:14
, ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/348

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

단기간에 너무 많은 api 호출을 한 경우에 limit가 걸리면

이 후 요청하는 모든 api 호출에 이 에러가 리턴되고, 30분동안 블럭된다.


해결 방법은 '다른 아이디를 이용하거나 30분 후에 다시 시도하면 된다' 라고 페이스북 개발자 페이지에 나온다.

https://developers.facebook.com/docs/reference/ads-api/api-rate-limiting


실제 리턴되는 에러 메시지
/**/ FB.__globalCallbacks.f1765e9214({"error":{"message":"(#17) User request limit reached","type":"OAuthException","code":17}});

Posted by incree

2014/07/28 17:42 2014/07/28 17:42
, , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/346

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

« Previous : 1 : 2 : 3 : 4 : 5 : 6 : 7 : ... 13 : Next »