IBM Cloud가 가장 처음 나왔을때 개인적으로 가장 기대했던 서비스가 바로 AIX, DB2, Informix였습니다. 과연 클라우드에서도 만들 수 있을까 였습니다. 그리고 클라우드에 가입하고 관련 서비스를 보았을때 AIX, DB2, Informix가 떡하니 있는것을 보고 정말 반가웠습니다. DB2도 클라우드에서 쓸수 있다!!!!! 그러나 우리나라는 DB2를 그리 많이 쓰지 않는 국가이다 보니.... 그나마 가장 가까운 리전이 도쿄였습니다. 그리고 리전도 당연히 하나였습니다. 우리나라도 DB2를 많이 써서 빨리 리전에 추가되는 국가가 되었으면 하는것이 제 개인적인 바램입니다. 그리고 개인 포스트로 DB2 데이터베이스를 소개하는것은 우리나라에서 제가 처음이 아닐까 생각합니다. 기업 포스트는 당연히 많이 ..
■ MySQL to MySQL 복제방법 MySQL을 소스로 사용하여 MySQL 타겟으로 복제를 진행하는 방법을 알아봅니다. 이 방법은 1. On-premise에서 AWS RDS로 복제하거나 2. AWS RDS에서 AWS RDS로 복제하거나 3. AWS RDS에서 On-premise로 복제하는 방식에 사용됩니다. ■ 계정 및 권한 설정. 1. 복제 유저. 개인적으로 권장사항은 사용할수만 있다면 관라자 권한, 즉 On-premise에서는 root, RSD에서는 Master username 권하고 싶습니다. 이 유저를 이용하면 최고관리자의 권한이기 때문에 모든 기능이 가능하며 별도 권한 설정도 필요없습니다. 하지만 내부의 보안 정책상 관리자 권한은 사용할 수 없고 별도의 계정으로 생성을 하고 그 유저를 이용해..
SAVEPOINT identifier ROLLBACK [WORK] TO [SAVEPOINT] identifier RELEASE SAVEPOINT identifier InnoDB는 SQL 문 SAVEPOINT, ROLLBACK TO SAVEPOINT, RELEASE SAVEPOINT 및 ROLLBACK에 대한 선택적 WORK 키워드를 지원합니다. SAVEPOINT문은 이름이 식별자여서 이름이 지정된 트랜잭션 세이브포인트을 설정합니다. 현재 트랜잭션에 이름이 같은 저장점(savepoint)이 있으면 이전 저장점이 삭제되고 새 세이브포인트가 설정됩니다. ROLLBACK TO SAVEPOINT 문은 트랜잭션을 종료하지 않고 트랜잭션을 이름이 지정된 세이브포인트로 롤백합니다. 세이브포인트가 설정된 후 행에 수행 ..
출처 : http://serdarturgut.blogspot.com/2010/12/enq-tx-index-contention.html 애플리케이션의 동시성이 높은 테이블과 연결된 인덱스에서 높은 인덱스 리프 블록 경합을 볼 수 있습니다. 이것은 일반적으로 응용 프로그램이 많은 INSERT 및 DELETE를 수행 할 때 발생합니다. 그 이유는 인덱스에 새 행을 삽입하는 동안 인덱스 블록이 분할되기 때문입니다. 트랜잭션은 블록 분할을 수행하는 세션이 작업을 완료할 때까지 모드 4에서 TX 잠금을 기다려야합니다. ■ 이유 애플리케이션에서 많이 액세스되는 테이블의 인덱스입니다. 단조 증가하여 삽입 된 값이있는 테이블 열의 인덱스입니다. 대량으로 삭제된 테이블 ■ 인덱스 리프 블록 경합 감지 핫 인덱스를 찾는 방..
파티션을 재구성할시 보통 REORGANIZE PARTITION을 자주 사용합니다. 이때 몇가지 유의해야 할 사항이 있습니다. 바로 MAXVALUE 파티션 유무에 따른 재구성입니다. ■ 예제 테이블 CREATE TABLE dbadm.part_table_test ( `id` int(10) unsigned NOT NULL, `sec_id` int(10) unsigned NOT NULL, `target_date` datetime NOT NULL, PRIMARY KEY (id,target_date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 /*!50500 PARTITION BY RANGE COLUMNS(target_date) (PARTITION part201912 VALUES LESS T..
트랜잭션 문법은 다음과 같습니다. START TRANSACTION [transaction_characteristic [, transaction_characteristic] ...] transaction_characteristic: { WITH CONSISTENT SNAPSHOT | READ WRITE | READ ONLY } BEGIN [WORK] COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE] ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE] SET autocommit = {0 | 1} 이 문법은 트랜잭션 사용에 대한 제어를 제공합니다 : + START TRANSACTION 또는 BEGIN 문법으로 새로운 트랜잭션을 시작합니다. + ..
1. Event Monitor 작성(IBM Information Center를 참고해서 옵션 설정.). CREATE EVENT MONITOR dlmon FOR CONNECTIONS, DEADLOCKS WITH DETAILS WRITE TO FILE '/tmp/dlevents' BUFFERSIZE 8 NONBLOCKED MAXFILES 5 MAXFILESIZE 32 2. set event monitor 명령어로 이벤트 모니터를 생성한다. db2 "set event monitor state=1" 3. 이벤트 모니터에 대한 정보는 SYSCAT.EVENTMONITORS 뷰를 이용해서 조회 가능하다. db2 "select * from syscat.eventmonitors" 4. db2evmon을 이용 이벤트 정보..
■ Database Migration Service 축약어로 DMS라 불립니다. 데이터 베이스 데이터를 실시간으로 복제해주는 솔루션으로서 흔히 CDC(Change Data Capture)라고도 합니다. 소스라 불리는 데이터베이스 테이블에서 Insert, Update, delete가 발생하게 되면 똑같이 타겟이라 불리는 데이터베이스 테이블에 똑같이 적용됩니다. 물론 DDL도 적용되어 소스쪽에 테이블 생성시 타겟쪽에도 똑같이 생성되게 됩니다. DMS의 강점은 이기종 데이터베이스끼리도 복제가 가능하다는 점입니다. 순수하게 데이터만 Migration시 DMS를 이용하면 편리하게 데이터를 Migraiton 할 수 있습니다. 또한 기존 On-premise에서 클라우드로 이관시 DMS를 이용하면 편리하게 작업할 수 ..
■ 파티셔닝에 대한 제한 사항 이 글에서는 MySQL 파티셔닝 지원에 대한 현재 제한 사항에 대해 설명합니다. ▶︎ 금지된 문법. 파티셔닝 표현식에서는 다음 구성이 허용되지 않습니다. 저장 프로 시저, 저장 함수, UDF 또는 플러그인 선언된 변수 또는 사용자 변수 ▶︎ 산술 및 논리 연산자. 산술 연산자 +,-및 *는 파티셔닝 표현식에서 사용할 수 있습니다. 그러나 결과는 정수값 또는 NULL이어야합니다([LINEAR] KEY 파티셔닝의 경우 제외). DIV 연산자도 지원되며/연산자는 허용되지 않습니다. 비트 연산자 |, &, ^, 및 ~는 파티셔닝 표현식에서 허용되지 않습니다. ▶︎ HANDLER 문법. 이전에는 HANDLER문이 파티션된 테이블에서 지원되지 않았습니다. 이 제한은 MySQL 5.7...
■ 파티션 선택 MySQL 5.7은 명령문을 실행할때 주어진 WHERE 조건과 일치하는 행을 검사해야하는 파티션 및 하위 파티션의 명시적 선택을 지원합니다. 파티션 선택은 특정 파티션 만 일치하는지 검사하지만 두 가지 주요 측면에서 다르다는 점에서 파티션 정리와 유사합니다. 1. 점검할 파티션은 파티션 프루닝과 달리 자동으로 명령문을 발행하여 지정합니다. 2. 파티션 프루닝은 쿼리에만 적용되는 반면, 파티션의 명시적 선택은 쿼리와 다수의 DML문 모두에 대해 지원됩니다. 명시적 파티션 선택을 지원하는 SQL 문은 다음과 같습니다. 1. SELECT 2. DELETE 3. INSERT 4. REPLACE 5. UPDATE 6. LOAD DATA. 7. LOAD XML. 이 절의 나머지 부분에서는 방금 나열..