본문 바로가기

반응형

Database

(7)
SQL 쿼리 프로파일링 심심 풀이로 쿼리를 '발'로 짜다 보니 이중 삼중의 조인쿼리와 서브쿼리가 한데 어우러진 아주 복잡 미묘한 쿼리를 만들게 되었습니다. 암튼 중요한 것은 바롤 짠 쿼리가 아니라 이 쿼리가 과연 정상적인 성능을 낼 수 있을까 하는 의문이 들더군요. MySQL을 대상으로 만들긴 했지만, MySQL에서 사실 쿼리가 어떤 순서로 실행 되는지도 모르고(쿼리 계획 이라고 하는 것 같던데..) 내부 구조에도 아는 바가 없어 고민하며 프로파일링 툴을 찾다가 몇 가지 재미있는 링크들을 찾아 간만에 포스팅을 하나 올립니다. 일단 explain 이라는 쿼리 플랜을 보여주는 명령어가 있더군요. SQL 표준이 아닌지라, MySQL에서는 select 절만 지원한다고 하는데, 오라클이나 좀 빵빵한 DB들은 explain을 update..
[MySQL] 서브(Sub) 쿼리 서브쿼리란? 하나의 테이블에서 검색한 결과를 다른 테이블에 전달하여 새로운 결과를 검색하는 것입니다. 예를 들어 A라는 테이블에서 검색해 나온 결과만을 대상으로 다시 한번 더 쿼리를 날린다는 것입니다. 참고로 하나 이상의 테이블을 연결하여 검색하는 기능은 조인(Join) 쿼리라고 합니다. 기본 문법 SELECT coulmn_name FROM table_name WHERE column_name = ( SELECT column_name FROM table_name WHERE column_name = some_value ); 생각 보다 간단하지 않나요? 기본적인 것은 일반 쿼리와 동일 합니다. 다만, where 에 조건으로 오는 것이 일반 컬럼이 아니라 또 다른 쿼리라는 것이 차이점 입니다. 실행 순서는 괄호..
[MySQL] 조인(Join) 쿼리 조인(Join)의 개념 조인은 여러개의 테이블을 결합하여 데이터를 검색 하는 것입니다. 예를 들어 A와 B라는 테이블을 따로 select하는 것이 아니라 동시에 select를 한다고 생각하시면 됩니다. 그 결과 중 특정 컬럼들의 값을 비교해서 같은 것들(혹은 다른 것들)만 select한다던지 하는 것을 조인이라고 합니다. where 절로 구분 하는 방법에 따라 여러가지 이름으로 불리고 있지만 간단한 개념이 이렇다는 것입니다. 조인(Join)의 종류 연산자에 따른 분류 : EQUI JOIN : 테이블들의 컬럼 값들이 일치하는 경우('=' 연산자 사용) NON-EQUI JOIN : 테이블드릐 컬럼 값들이 일치하지 않는 경우('' 와 같은 비교 연산자 사용) FROM 절의 JOIN형태에 따른 분류 INNER ..
MySQL - Commmands out of sync MySQL을 사용하던 서버가 Commands out of sync 라는 에러를 내며서 정상적으로 동작하지 않는다. 무슨 일인가 싶어 구글에게 물어 봤다. 그러니 나오는 대답.. If you get Commands out of sync; you can't run this command now in your client code, you are calling client functions in the wrong order. This can happen, for example, if you are using mysql_use_result() and try to execute a new query before you have called mysql_free_result(). It can also happen i..
memcached 'memcached' 가 무엇인가? memcached라고하는 고성능(물론 자신들이 말하는 것입니다)의 분산 메모리 캐싱 데몬입니다. 주로 웹환경에서 사용되기 위해 디자인 되었고, memcached를 사용하여 DB에 직접적으로 가해지는 부하를 상당히 줄일 수 있다고 합니다. 데몬 시작 일단 memcached 데몬을 실행 합니다. 설정파일 따우는 없으면 몇개의 커맨드라인을 통해 셋팅이 이루어 집니다 : # ./memcached -d -m 2048 -l 10.0.0.40 -p 11211 -d : memcached를 데몬 형태로 띄우도록 지정합니다. -m : memcached는 사용할 메모리 크기를 지정합니다. 위의 예제에서는 2GB를 사용하도록 설정 되어 있습니다. -l : listen 아이피를 지정합니다. ..
MySQL rename error (errno 121) DB A에 있는 테이블들을 DB B로, rename을 사용하여 옮기는 코드가 오류를 내고 있다는 연락을 받았다. 다른 모든 테이블들은 아무런 군소리 없이 옮겨 지는데 딱 한 테이블만 121 에러 코드를 내면서 옮겨 지지 않았다. 무슨 소린가 해서 구글 박사님게 물어 보니 외부 참조 키가 중복이 되면 121 에러 코드가 리턴 된단다. 그래서 테이블 스키마를 살펴 보니...아무런 constraint가 없었다. 이 테이블은 그냥 컬럼들의 나열일 뿐이었다. /** 1) MySQL rename menual page : http://dev.mysql.com/doc/refman/4.1/en/rename-table.html 2) 121 error : http://forums.mysql.com/read.php?22,33..
SQL command CREATE DATABASE 새로운 데이터베이스를 생성 CREATE TABLE ( schema.. ) 새로운 테이블을 생성 ex) CREATE TABLE tab (val INT); INSERT INTO [(field Name, ... )] VALUES (data, ...) CREATE문으로 생성된 테이블에 데이터를 저장 UPDATE SET = WHERE expr UPDATE 문은 INSERT 문으로 저장되어 있는 데이터 수정 DELETE FROM WHERE expr 테이블에 있는 데이터를 삭제 할때 사용하는 쿼리문 테이블 자체를 삭제하는 DROP과 구분 되어야 한다. ALTER TABLE ADD 테이블에 새로운 필드 추가 ex) ALTER TABLE tableName ADD newFieldName var..

반응형