Database13 Microsoft SQL Server Management Studio - 서버 정보 저장하기 SQL Management 툴에서 DB접속 정보를 저장하는 방법에 대해서 알아보았다.자주 사용하지 않는 툴이라 귀찮아도 매번 서버 주소, 계정, 패스워드를 입력하였는데..이마저도 귀찮아졌다. 1.보기 > 등록된 서버 선택하면 다음과 같은 창이 나온다. 2.Local Server Groups 선택 > 오른쪽 마우스 클릭 > 새 서버 등록 선택 3.Local Server Groups 하위에 등록한 서버가 노출되게 된다.이후에는 서버 호스트, 아이디, 패스워드를 매번 넣지 않고 더블 클릭을 통해 DB에 접속할 수 있다. 2017. 9. 22. SQLyog 테이블 데이터 refresh 관련 [2017-09-11] 내용 업데이트 아래 해결 방안은 잘못된 것임을 이제서야 알게 됐다.SQLyog의 버전 문제로 인한 현상이 아니라 트랜잭션 격리 설정에 의한 자연스러운 현상이다. 예를 들어 SQLyog을 실행시킨 상태에서 EMP 테이블을 조회했을 때 10건이 나온다.이 상태에서 다른 애플리케이션(웹서비스) 에서 EMP 테이블에 insert 1건을 한다.SQLyog 프로그램에서 EMP 테이블을 다시 조회하게 되면 10건만 나온다. 여기가 나의 오류 포인트다.다른 애플리케이션에서 insert를 1건 하고 commit 했는데 왜 10건만 나오지? 라는 생각이 SQLyog이라는 툴의 설정 문제인 것으로 알았다.허나 문제는 따로 있었던 것 MySQL은 트랜잭션 격리가 기본 REPEATABLE-READ로 되어.. 2015. 11. 17. MariaDB의 max connection 에 따른 애플리케이션 connection pool 설정 주의 사항 최근에 겪은 경험을 작성해 본다. MariaDB에는 3개의 데이터베이스가 생성되어 있다.MariaDB - A database - B database - C database 위와 같은 DB환경에 총 6대의 웹 서버가 다음과 같은 형태로 connection pool을 생성한다.MariaDB - A database > 1, 2번 서버에서 각각 10개의 connection pool 생성 - B database > 3, 4번 서버에서 각각 10개의 connection pool 생성 - C database > 5, 6번 서버에서 각각 10개의 connection pool 생성 각각의 웹 서버의 DB connection initialPoolSize가 10으로 되어 있는 상태에서 모든 웹 서버가 기동되었다.웹 서버가 .. 2015. 7. 21. 클러스터드 인덱스와 넌 클러스터드 인덱스 몇일전에 클러스터드 인덱스와 넌 클러스터드 인덱스에 대해서 나에게 물어보신 분이 계셨다.헌데 내 기억 속에는 클러스터드 인덱스는 테이블 당 1개만 생성할 수 있다는 것만 기억날 뿐 다른 것은 기억나지 않았다. 그래서 내 기억 속에 오랫 동안 자리 잡기를 바라는 마음으로 이곳에 정리한다. 클러스터드 인덱스와 넌 클러스터드 인덱스는 간단하게 다음과 같이 정리할 수 있다. 클러스터드 인덱스 넌 클러스터드 인덱스 차이 물리적으로 행을 재배열 물리적으로 재배열 하지 않는다. 크기 인덱스 페이지 용량이 넌 클러스터드 인덱스 페이지 용량보다 작다. 클러스터드 인덱스 페이지 용량보다 크다. 선택도 30% 이내에서 사용해야 좋은 선택도 3% 이내에서 사용해야 좋은 선택도 최대 갯수 테이블당 1개 테이블당 249개 위에서.. 2013. 6. 24. 카티션곱을 이용한 데이터 추출 방법 테이블 a sp_key 111 222 333 테이블 b id sp_key test1 111 test1 222 test1 333 test2 111 test2 222 결과 id sp_key test2 333 테이블 a의 3개 sp_key 컬럼 데이터를 기준으로 테이블 b의 각 id에 sp_key데이터가 없는 것을 추출하는 방법에 대해서 설명한다.대개 쿼리를 작성할 때 inner join이나 outer join을 많이 사용하지만 위와 같이 두 개의 테이블 집합에서 공통으로 존재하는 데이터를 뽑아내는 것이 아닌 없는 데이터를 뽑을 때에는 어려움을 많이 느낀다. 위의 문제를 해결할 수 있는 방법이 몇 가지 있는데 그 중 첫 번째 방법은 카티션 곱을 이용하여 데이터를 복제한 후 결과 값을 추출하는 방법이다.SELE.. 2013. 5. 6. mysql 프로시저 loop를 이용하여 테스트 데이터 insert 간혹 테스트를 위해 수백만 건의 데이터를 테이블에 넣어줄 일이 생긴다.그럴때 다음의 프로시저 샘플을 이용하여 데이터를 밀어 넣자. 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 2013. 2. 19. ORM(Object Relational Mapping) 이란? 관계형 테이터베이스 테이블과 객체 사이의 mapping 처리를 해주는 것을 ORM(Object relational Mapping)이라고 한다. 쉽게 말해 SQL문 작성 없이 간단한 매핑 설정으로 데이터베이스의 테이블 데이터를 Java 객체로 전달 받을 수 있는 것이다. ORM을 이용하면 개발을 좀 더 편하게 할 수 있고, service layer에 집중할 수 있다. ORM을 사용하고 있는 JPA, 하이버네이트 예제 코드를 보면 상당히 편리하고 다양한 기능을 제공하고 있는데 이 기술을 사용하려면 학습 비용이 다른 오픈 소스보다 높다고 생각된다. 각 프로젝트 규모나 성격에 맞게 ORM, SQL Mapper 둘 중 하나를 선택하면 되겠지만 현재 우리 프로젝트 환경에는 iBatis가 적절한 것 같다. 2012. 12. 13. db connection pool 어떤 걸 쓸까? 현재 프로젝트에서는 commons dbcp pool과 tomcat jdbc pool을 사용하고 있다. 몇일 전에 스터디 그룹에서 나왔던 얘기가 apache commons dbcp는 하드웨어 멀티 코어를 제대로 활용하지 못해서 성능이 떨어지고, 소스 버전 업데이트는 거의 이뤄지지 않는다고 한다.몇 가지 더 알아보니 commons dbcp는 하나의 쓰레드를 사용하기 때문에 멀티쓰레드 안전성을 보장하고자 전체 connection pool에 대한 lock을 건다고 한다. dbcp의 단점에 비해서 tomcat jdbc pool은 하드웨어의 멀티 코어를 충분히 활용하고 성능이 좋다고 한다.성능이 좋다는 기준이 dbcp보다 좋은 건지 다른 컨넥션 풀링보다 좋다는 건지는 모르겠지만 어느 정도의 안전성을 보장한다는 의미.. 2012. 12. 13. altibase GUI tool 설치 및 접속 방법 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 > 정보 입력 후 완료 2012. 10. 31. er-win에서 논리모델 script 뽑기 회사에서 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 문이.. 2009. 3. 30. 엑셀 CONCATENATE 함수를 이용한 insert문 만들기 고객정보가 엑셀로 넘어왔을때 이 고객정보를 토드를 이용해서 import도 가능하지만 토드나 기타 툴을 이용하지 못하거나 권한이 없을때는 insert문을 사용할 수 밖에 없는데 이때 유용하게 사용할 수 있다.. 원리는 엑셀의 CONCATENATE 함수를 이용해서 스크립트 generate 하는 기능이다... 아직은 사용해보지 않았지만 차후에 사용할수도 있으니 올려놔야겠당...^^ 2009. 3. 15. 토드에서 포멧팅 후 상단에 주석 자동 없애기 토드 에디터에서 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 2009. 3. 14. 오라클 잠금 기능 비관적 잠금 - 해당 행에 잠금을 하여 다른 세션들로부터의 갱신을 막음 - 그 행이 변경되지 않고 남아 있을지 확신할 수 없기 때문에 갱신을 시도하기 전에 그 행에 잠금을 한다. 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문만 제거하고 실행하면 잠금을 설정한 해당 레코드의 검색이 이루어진다. 오라클에서는 행 잠금을 실행해도 다른 세션에.. 2009. 1. 2.