Technique
-
트랜잭션(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이 쿼리를 실행한 후, 실제 소요된 시간을 기준으로 슬로우 쿼리 로그에 기록할지 여부를 판단하기 때..
-
[ 번역 ]javascript tip 2Technique/ETC 2016. 6. 6. 11:09
원문 : http://qiita.com/KENJU/items/c7fad62a12cc2809b507#2-%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88 위글의 2번 항목 번역입니다. 오브젝트 namespace 권장 namespace는 중급 규모 이상의 애플리케이션 작성할때에 필수 패턴입니다. javascript 에서는 global scope 오염을 막는 대신에, 단일의 어플리케이션의 global object를 작성하는 것이 주류 입니다. 또, prototype chain을 사용하는 것으로, module container를 작성하는 것도 가능합니다. 12345678910111213141516171819202122var MYAPP = {}; MYAPP.name..
-
[ 번역 ] javascript tipTechnique/ETC 2016. 6. 3. 10:16
원문 : http://qiita.com/KENJU/items/c7fad62a12cc2809b507번역하면서 느낀점은 그냥 있는 그대로 한국어로 옮기는 것이 아니라 한글에 맞게, 의미가 통하도록 번역하는게 중요한거 같습니다.항상 느끼는거지만 외국문서는 그냥 읽는 것도 중요하지만 이런식으로 한국어로 번역하다보면 놓치기 쉬운 부분들을 인식하게 해 주는 거 같습니다. Basic TIPS javascript 에서는 [ 글로벌 오염 ]이라는 말이 있을 정도로, 글로벌 변수에의한 namespace의 오염이 문제가 되는 일이 있습니다. 글로벌 변수나 scope를 애초에 모르는 경우 또는 언어적으로 알맞는 문법은 사용하고 있지만, 글로벌 변수를 많이 사용하는 것에대한 결함을 이해하지 못한 경우가 있습니다. 글로벌 오염의..
-
바이너리 로그, 릴레이 로그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서버가 비정상적 또는 강제적으로 종료됐다면 다시 시작되면서 완료되지 못한 트랜잭션을 정리하고 디스크에 기록되지 못한 데이터가 있다면 다시 기록하는 재처리 작업을 하게 된다. 이 과정에 대한 간단한 메시지가 출력되는데, 간혹 문제가 있어서 복구되..
-
MEMORY 스토리지 엔진 아키텍처Technique/RDBMS 2016. 5. 19. 22:10
MEMORY 스토리지 엔진은 HEAP 스토리지 엔진이라고도 하는데, 이름 그대로 데이터를 메모리에 저장하는 것이 특징이다. MEMORY 스토리지 엔진은 데이터의 크기가 작고 아주 빠른 처리가 필요한 경우에만 적합한 스토리지 엔진이다. 주의 사항 - 테이블의 최대 크기저장할 수 있는 데이터의 최대 용량이 정해져 있다. 최대 데이터 크기는 max_heap_table_size 파라미터로 정의한다.여기 지정한 메모리의 용량이상의 데이터는 가질 수 없으며, 그 이상의 데이터를 INSERT 하려고 하면 데이터 저장이 실패하고 에러 메시지가 출력된다. 이 변수는 글로벌 변수임과 동시에 세션 변수이고, 동적으로 변경 가능한 변수라, 해당 커넥션에서만 파라미터를 재 설정할 수 있다. - 고정 길이 컬럼만 지원모든 컬럼은..
-
MyISAM 스토리지 엔진 아키텍처Technique/RDBMS 2016. 5. 19. 21:49
InnoDB의 버퍼 풀과 비슷한 역할을 하는 것이 MyISAM의 키 캐시 ( Key Cache, 키 버퍼 라고도 한다 )이다.이름 그대로 MyISAM키 캐시는 인덱스만 대상으로 작동하며 또한 인덱스의 디스크 쓰기 작업에 대해서만 부분적으로 버퍼링 역할을 한다. 키 캐시의 효율성을 나타내는 수식은 아래와 같다. 키 캐시 히트율 ( Hit rate ) = 100 - ( Key_reads / Key_read_requests * 100 ) - Key_reads : 인덱스를 디스크에서 읽어들인 횟수를 저장하는 상태 변수- Key_read_requests : 키 캐시로부터 인덱스를 읽은 횟수를 저장하는 상태 변수. 매뉴얼에서는 일반적으로 키 캐시를 이용한 쿼리의 비율 ( 히트율 ) 을 99% 이상으로 유지하라고 권..