SQL Management 툴에서 DB접속 정보를 저장하는 방법에 대해서 알아보았다.자주 사용하지 않는 툴이라 귀찮아도 매번 서버 주소, 계정, 패스워드를 입력하였는데..이마저도 귀찮아졌다. 1.보기 > 등록된 서버 선택하면 다음과 같은 창이 나온다. 2.Local Server Groups 선택 > 오른쪽 마우스 클릭 > 새 서버 등록 선택 3.Local Server Groups 하위에 등록한 서버가 노출되게 된다.이후에는 서버 호스트, 아이디, 패스워드를 매번 넣지 않고 더블 클릭을 통해 DB에 접속할 수 있다.
[2017-09-11] 내용 업데이트 아래 해결 방안은 잘못된 것임을 이제서야 알게 됐다.SQLyog의 버전 문제로 인한 현상이 아니라 트랜잭션 격리 설정에 의한 자연스러운 현상이다. 예를 들어 SQLyog을 실행시킨 상태에서 EMP 테이블을 조회했을 때 10건이 나온다.이 상태에서 다른 애플리케이션(웹서비스) 에서 EMP 테이블에 insert 1건을 한다.SQLyog 프로그램에서 EMP 테이블을 다시 조회하게 되면 10건만 나온다. 여기가 나의 오류 포인트다.다른 애플리케이션에서 insert를 1건 하고 commit 했는데 왜 10건만 나오지? 라는 생각이 SQLyog이라는 툴의 설정 문제인 것으로 알았다.허나 문제는 따로 있었던 것 MySQL은 트랜잭션 격리가 기본 REPEATABLE-READ로 되어..
몇일전에 클러스터드 인덱스와 넌 클러스터드 인덱스에 대해서 나에게 물어보신 분이 계셨다.헌데 내 기억 속에는 클러스터드 인덱스는 테이블 당 1개만 생성할 수 있다는 것만 기억날 뿐 다른 것은 기억나지 않았다. 그래서 내 기억 속에 오랫 동안 자리 잡기를 바라는 마음으로 이곳에 정리한다. 클러스터드 인덱스와 넌 클러스터드 인덱스는 간단하게 다음과 같이 정리할 수 있다. 클러스터드 인덱스 넌 클러스터드 인덱스 차이 물리적으로 행을 재배열 물리적으로 재배열 하지 않는다. 크기 인덱스 페이지 용량이 넌 클러스터드 인덱스 페이지 용량보다 작다. 클러스터드 인덱스 페이지 용량보다 크다. 선택도 30% 이내에서 사용해야 좋은 선택도 3% 이내에서 사용해야 좋은 선택도 최대 갯수 테이블당 1개 테이블당 249개 위에서..
간혹 테스트를 위해 수백만 건의 데이터를 테이블에 넣어줄 일이 생긴다.그럴때 다음의 프로시저 샘플을 이용하여 데이터를 밀어 넣자. DELIMITER $$DROP PROCEDURE IF EXISTS FILL_RATE_TEST_DATA$$CREATE PROCEDURE FILL_RATE_TEST_DATA()BEGINDECLARE i INT DEFAULT 1;DECLARE log_date VARCHAR(255);WHILE i
관계형 테이터베이스 테이블과 객체 사이의 mapping 처리를 해주는 것을 ORM(Object relational Mapping)이라고 한다. 쉽게 말해 SQL문 작성 없이 간단한 매핑 설정으로 데이터베이스의 테이블 데이터를 Java 객체로 전달 받을 수 있는 것이다. ORM을 이용하면 개발을 좀 더 편하게 할 수 있고, service layer에 집중할 수 있다. ORM을 사용하고 있는 JPA, 하이버네이트 예제 코드를 보면 상당히 편리하고 다양한 기능을 제공하고 있는데 이 기술을 사용하려면 학습 비용이 다른 오픈 소스보다 높다고 생각된다. 각 프로젝트 규모나 성격에 맞게 ORM, SQL Mapper 둘 중 하나를 선택하면 되겠지만 현재 우리 프로젝트 환경에는 iBatis가 적절한 것 같다.
현재 프로젝트에서는 commons dbcp pool과 tomcat jdbc pool을 사용하고 있다. 몇일 전에 스터디 그룹에서 나왔던 얘기가 apache commons dbcp는 하드웨어 멀티 코어를 제대로 활용하지 못해서 성능이 떨어지고, 소스 버전 업데이트는 거의 이뤄지지 않는다고 한다.몇 가지 더 알아보니 commons dbcp는 하나의 쓰레드를 사용하기 때문에 멀티쓰레드 안전성을 보장하고자 전체 connection pool에 대한 lock을 건다고 한다. dbcp의 단점에 비해서 tomcat jdbc pool은 하드웨어의 멀티 코어를 충분히 활용하고 성능이 좋다고 한다.성능이 좋다는 기준이 dbcp보다 좋은 건지 다른 컨넥션 풀링보다 좋다는 건지는 모르겠지만 어느 정도의 안전성을 보장한다는 의미..
altibase DB에 접속하는 tool인 admincenter 설치 및 접속 방법 1. http://atc.altibase.com/ 페이지에 접속하여 회원 가입 진행2. download tab 이동3. altibase 버전에 맞는 tab 클릭 4. TOOL 이동 후 파일 다운로드 5. altibase admincenter tool 실행6. 왼쪽 Altibase Explorer 창에서 Add platform 7. Add 팝업창에 정보 기입 후 저장8. 추가한 platform 클릭 후 오른쪽 마우스 > Add Stand-alone Altibase Instance > 정보 입력 후 완료
회사에서 ER-WIN 으로 물리모델 정리를 하다가 토드에서 comments가 없어 불편했던적이 생각나 알아보니 역시나 논리모델명만 뽑아오는 기능이 있었다..^^ 1. Physical 모드로 변경 2. Database -> Pre & Post Scripts --> Model-Level 선택 3. New 를 클릭한 후, comment 입력 4. Code 탭에 아래의 코드를 삽입한다. %ForEachTable() { COMMENT ON TABLE %TableName IS '%EntityName'; %ForEachColumn() { COMMENT ON COLUMN %TableName.%ColName IS '%AttName'; } } 5. Expanded 탭을 클릭하면 Generation이 이루어지며 DDL 문이..
토드 에디터에서 select * from dual 이렇게 친 후 ctrl + shift + f을 누르면 /* Formatted on 2009/03/14 22:11 (Formatter Plus v4.8.8) */ SELECT * FROM DUAL 이렇게 나오는데 상단의 주석이 걸리적 거린다면 이렇게 하자..ㅋㅋㅋ [View]->[Formatting Options] -> [General Layout] -> [Header] -> Disable
비관적 잠금 - 해당 행에 잠금을 하여 다른 세션들로부터의 갱신을 막음 - 그 행이 변경되지 않고 남아 있을지 확신할 수 없기 때문에 갱신을 시도하기 전에 그 행에 잠금을 한다. SELECT EMPNO, ENAME, SAL FROM EMP WHERE EMPNO = :EMPNO AND ENAME = :ENAME AND SAL = :SAL FOR UPDATE NOWAIT 위의 쿼리문을 1번 세션에서 질의 실행 2번 세션에서 똑같은 쿼리문 실행하면 "ORA-00054: 자원이 사용중이고, NOWAIT가 지정되어 있습니다" 라고 오류가 나온다. 하지만 위의 쿼리문에서 FOR UPDATE NOWAIT문만 제거하고 실행하면 잠금을 설정한 해당 레코드의 검색이 이루어진다. 오라클에서는 행 잠금을 실행해도 다른 세션에..