Technique/RDBMS
-
MySQL Buffered , Unbuffered QueryTechnique/RDBMS 2016. 12. 27. 12:29
php 메뉴얼에 나와 있는 내용. 정리하자면 1.buffered query 쿼리의 결과는 MySQL 서버로 부터 바로 PHP쪽 서버에 전송되어 PHP 프로세서 메모리상에 결과를 보존해둔다.이 결과를 가지고 쿼리의 행수를 계산한다던지 결과 값의 포인터를 이동시키던지 등의 조작이 가능하다.또 같은 접속상의 쿼리를 발행하면서 동시에 현재 가지고 있는 결과 값을 이용한 작업도 가능하다결과 세트에 대한 참조가 없어지거나 결과 셋트를 명시적으로 해방하기전 까진 메모리상에 남겨져 있다. 결과를 저장하는 쿼리 라고도 불려진다. 약점 - 결과 세트의 량이 많아 질수록 메모리를 소모한다 2.unbuffered query비버퍼쿼리는 쿼리를 실행하여 리소스를 돌려주지만 그 시점에서 아직 데이터가 MySQL서버상에 있어 대기..
-
문자셋( Character set )과 콜레이션( Collation )Technique/RDBMS 2016. 12. 27. 12:22
CHAR, VARCHAR, TEXT 등의 문자열 Datatype에는 문자셋(Character set)과 콜레이션(Collation) 속성이 있다. 문자셋(Character set)은 각 문자가 컴퓨터에 저장될 때 어떠한 '코드'로 저장될지에 대한 규칙의 집합을 의미하며 콜레이션(Collation)은 특정 문자 셋에 의해 데이터베이스에 저장된 값들을 비교 검색하거나 정렬 등의 작업을 위해 문자들을 서로 '비교' 할때 사용하는 규칙들의 집합을 의미한다. 같은 문자셋이라도 콜레이션에 따라 영어의 경우 대소문자의 구분 비교 여부, 일본어의 경우 히라가나와 카타카나의 구분 방법 등이 달라진다. UTF8 문자셋을 사용하는 경우 utf8-general-ci 또는utf8-unicode-ci 둘중 하나를 collatio..
-
MySQL Index 기초지식Technique/RDBMS 2016. 12. 22. 16:59
MySQL인덱스 기초● 특정 컬럼 값이 가지고 있는 열을 빠르게 검색하기 위하여 사용● MySQL의 경우 B-TREE 가 사용됨● 오라클이나 MSSQL의 경우 여러가지 타입이 존재함● 종류에는 PRIMARY KEY, UNIQUE, INDEX, FULL TEXT가 있다.(FULL TEXT의 경우 MyISAM 에서만 사용가능)■ 인덱스 사용 목적 where 절에 매치하는 열을 빠르게 검색하기 위하여 불 필요한 열을 고려 대상에서 빠르게 제거하기 위하여 JOIN시 다른 테이블에서 빠르게 필요한 열을 추출하기 위하여 특정 index의 컬럼의 MIN이나 MAX값을 찾기 위하여■ 인덱스를 사용하는 경우 데이터의 양이 많고 검색이 빈번히 이루어 지는 경우 인덱스를 걸고자 하는 필드의 값의 종류가 다양한 경우■ 생성 ..
-
트랜잭션(Transaction)Technique/RDBMS 2016. 6. 6. 23:28
트랜잭션(Transaction)은 작업의 완전성을 보장해 주는 것이다. 즉 논리적인 작업셋을 모두완벽하게 처리하거나 또는 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상( Partial update ) 이 발생하지 않게 만들어 주는 기능 MySQL의 트랜잭션트랜잭션이라 함은 꼭 여러 개의 변경 작업을 수행하는 쿼리가 조합됐을 때만 의미 있는 개념은 아니다.트랜잭션은 하나의 논리적인 작업 셋에 하나의 쿼리가 있든 두 개 이상의 쿼리가 있든 관계없이 논리적인 작업 셋 자체가 100% 적용 되거나 ( COMMIT 을 실행 했을 때 ) 또는 아무것도 적용되지 않아야 함(ROLLBACK 또는 오류가 발생했을 경우)을 보장해 주는 것이다. 주의 사항꼭 필요한 최소의 코드에만 적용 하는 것이 ..
-
슬로우 쿼리 로그Technique/RDBMS 2016. 6. 6. 22:44
쿼리 튜닝은 크게 아래의 두가지 방법으로 나뉘어 진다 1.서비스를 개시하기전 전체적으로 튜닝하는경우 - 전체 쿼리가 모두 검토 대상이기에 모두 튜닝 2. 서비스가 운영중이며, MySQL 서버의 전체적인 성능 저하를 검사하거나, 정기적인 점검 - 어떤 쿼리가 문제의 쿼리인지 판단하기가 상당히 어렵다. 이런 경우 서비스에서 사용되고 있는 쿼리 중에서 어떤 쿼리가 문제인지를 판단하는 데 슬로우 쿼리 로그가 상당히 많은 도움이 될 것이다. 슬로우 쿼리 로그파일은 config 파일에 지정한 시간 ( long_query_time 초단위 설정 ) 이상의 시간이 소요된 쿼리가 모두 기록된다. 슬로우 쿼리 로그는 MySQL이 쿼리를 실행한 후, 실제 소요된 시간을 기준으로 슬로우 쿼리 로그에 기록할지 여부를 판단하기 때..
-
바이너리 로그, 릴레이 로그Technique/RDBMS 2016. 5. 22. 16:30
바이너리 로그 파일은 마스터 MySQL 서버에 생성되고, 릴레이 로그는 슬레이브 MySQL서버에 생성된다.는 것 외에는 로그 파일의 내용이나 포맷은 동일하다.바이너리 로그에는 순수한 SELECT 문장과 같이 데이터의 구조나 내용을 변경하지 않는 쿼리는 기록되지 않는다. 가끔 바이너리 로그 파일의 내용을 열어서 눈으로 확인하거나, MySQL 서버에 다시 실행해야 할 때가 있는데, 바이너리 로그는 이름 그대로 이진 파일로 돼 있어서 사람의 눈으로 보거나, MySQL 서버에서 바로 실행할 수 없다.이진 형태의 바이너리 로그 파일을 텍스트 형태로 바꾸려면 MySQL 홈 디렉토리의 bin 디렉토리에 있는 mysqlbinlog 라는 프로그램을 이용핼 수 있는데, 기본적으로 mysqlbinlog 는 특정시간 부터 특..
-
에러 로그 파일Technique/RDBMS 2016. 5. 19. 22:28
MySQL이 실행되는 도중에 발생하는 에러나 경고 메시지가 출력되는 로그파일이다. MySQL이 시작하는 과정과 관련된 정보성 및 에러 메시지MySQL설정 파일을 변경하거나 데이터베이스가 비정상적으로 종료된 이후 다시 시작하는 경우에는 반드시 에러로그 파일을 통해 설정된 변수의 이름이나 값이 명확하게 설정되고 의도한 바대로 적용됐는지 확인해야 한다. 마지막으로 종료할 때 비정상적으로 종료된 경우 나타나는 InnoDB의 트랜잭션 복구 메시지InnoDB의 경우 MySQL서버가 비정상적 또는 강제적으로 종료됐다면 다시 시작되면서 완료되지 못한 트랜잭션을 정리하고 디스크에 기록되지 못한 데이터가 있다면 다시 기록하는 재처리 작업을 하게 된다. 이 과정에 대한 간단한 메시지가 출력되는데, 간혹 문제가 있어서 복구되..