전체 글

'DBA 업무'와 '알게되는 정보'를 기록하는 공간
재귀호출 재귀호출이란 함수 내부에서 해당 함수가 다시 호출되는 것을 의미합니다. 이러한 호출은 자기자신을 계속호출하기 때문에 끝없이 반복될 수 있으며 반드시 재귀호출을 중단하도록 조건 명령문을 반드시 포함해야 합니다. 사실 재귀호출은 자바만의 개념이라기 보다는 알고리즘에서 중요한 개념입니다. 즉, C 언어 JAVA 언어 가릴거 없이 모두 구현이 가능합니다. 재귀호출 팩토리얼 예제 1부터 10까지 곱하는 프로그램을 만든다고 가정해 봅니다. 먼저 1부터 10까지의 곱은 1에서 9까지의 곱의 곱하기 10 입니다. 다음 1부터 9까지의 곱은 1부터 8까지의 곱의 곱하기 9 입니다. 다음 1부터 8까지의 곱은 1부터 7까지의 곱의 곱하기 8 입니다. .... 다음 1부터 2까지의 곱은 1부터 1까지의 곱의 곱하기..
자바 타입변환이란 하나의 타입이 다른 타입으로 변경되는 것을 타입변환 이라고 합니다. 형변환 혹은 타입변환으로 불립니다. 암시적 형변환 혹은 암시적 타입변환 = 묵시적 형변환 혹은 묵시적 타입변환 명시적 형변환 혹은 명시적 타입변환 타입변환 방법 자바에서 다른 타입끼리의 연산은 모두 같은 타입으로 만든 후에 수행하게 됩니다. 또한 작은 타입에서 큰 타입으로의 변환은 가능하나, 큰 타입에서 작은 타입으로 변환은 불가능 합니다. 이유는 double 형을 int 형에 표현하려고 하면서 데이터의 손실이 발생하기 때문에 컴파일러에서 오류를 발생하게 되는 것입니다. 1 2 3 4 5 6 7 8 9 10 11 public class Test { public static void main(String[] args) {..
PostgreSQL 에서 접속을 관리하는 방법 PostgreSQL 은 postgresql.conf 파일과 pg_hba.conf 파일을 통해 특정 서버에서 특정 사용자에만 접속이 가능하도록 제한할 수 있습니다. 이 오류는 pg_hba.conf 파일에 인증이 적용되어 있지 않기 때문입니다. FATAL: no pg_hba.conf entry for host "192.168.56.103", user "postgres", database "postgres", SSL off error 치명적오류: 호스트 "192.168.56.103", 사용자 "postgres", 데이터베이스 "postgres", SSL 중지 연결에 대한 설정이 pg_hba.conf 파일에 없습니다. 위와같은 오류가 발생하는 원인 pg_hba.co..
PostgreSQL 에서 접속을 관리하는 방법 PostgreSQL 은 postgresql.conf 파일과 pg_hba.conf 파일을 통해 특정 서버에서 특정 사용자에만 접속이 가능하도록 제한할 수 있습니다. 이 오류는 대부분 외부서버에서 PostgreSQL 서버로 접속하려는 경우에 발생합니다. Connection to 192.168.56.101:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. 위와같은 오류가 발생하는 원인 postgresql.conf 파일의 LISTEN_ADDRESSES 파라미터 postgresql.conf 파일의 'CONNECT..
자바와 PostgreSQL 연결하는 방법 (with 이클립스) 자바에서는 JDBC 를 이용하여 Database 와 통신을 할 수 있습니다. 이 JDBC 는 벤더사 별로 지원하고 있고, PostgreSQL 또한 JDBC 를 이용하여 자바와 통신할 수 있도록 제공합니다. 이클립스에서 이 PostgreSQL 전용 JDBC jar 파일을 등록하여 PostgreSQL 과 연동해보도록 하겠습니다. 1. JDBC Driver for PostgreSQL 다운로드 jdbc.postgresql.org/download.html PostgreSQL JDBC Download Download About Binary JAR file downloads of the JDBC driver are available here and the..
SQL Server 의 압축백업 방법 SQL Server 2008 버전부터 압축백업이 지원됩니다. 압축된 백업은 압축되지 않은 백업보다 작기 때문에, I/O 에 대한 비용이 절약되며 백업속도가 크게 향상됩니다. 다만 압축을 하기위해 CPU 오버헤드가 발생합니다. 반면 압축을 하지 않는다면 CPU 오버헤드는 발생하지 않지만 I/O 가 훨씬 많이 발생하게 될 것입니다. 그렇지만 I/O 와 CPU 의 부하 비교했을 때, CPU 의 오버헤드가 발생하는 부분이 훨씬 효율적입니다. 압축백업의 이점 압축된 백업에 대한 최종 백업 파일의 크기는 데이터를 어느정도나 압축할 수 있는지에 따라 달라집니다. 테스트했을 때 대략적으로는 원본백업파일의 80% 크기 정도를 생각하면 좋습니다. 참고로 이 80% 도 데이터 유형에 따..
인메모리 테이블 테이블의 데이터를 메모리로 올려, 모든 데이터 조작을 메모리상에서만 하도록 하는 방식입니다. 디스크를 거치지 않기 때문에 매우 빠른 속도로 진행되지만, 모든 데이터가 메모리상에 있어야 하기 때문에 메모리 사용률이 증가합니다. 메모리의 데이터는 서버가 재부팅되는 경우 소실됩니다. 이렇게 메모리에만 데이터가 있어 유실되는 부분을 방지하기 위해 File Stream 이라는 기능을 통해 디스크에 데이터를 영구보관 합니다. ( 단, 이렇게 데이터를 영구보관하기 위해서는 테이블에 Primary Key 가 무조건 있어야 합니다. ) 인메모리 테이블 생성을 위한 선행조건 데이터베이스에 메모리 파일그룹 영역 생성 메모리에 최적화된 파일그룹을 생성해 줍니다. 이 파일그룹에 SCHEMA_AND_DATA 옵션..
PostgreSQL 의 프로세스 PostgreSQL 은 postmaster 의 메인프로세스와 postmaster 에서 fork 된 프로세스들로 구성됩니다. fork 된 프로세스는 PostgreSQL 을 위해 각자의 역할을 수행합니다. 1 2 3 4 5 6 7 8 9 postgres@VirtualBox:~$ ps -ef | grep postgres postgres 937 1 0 23:03 ? 00:00:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf postgres 1384 937 0 23:04 ? 00:00:00 postgres: ..
자바와 SQL Server 연결하는 방법 (with 이클립스) 자바에서는 JDBC 를 이용하여 Database 와 통신을 할 수 있습니다. 이 JDBC 는 벤더사 별로 지원하고 있고, SQL Server 또한 JDBC 를 이용하여 자바와 통신할수 있도록 제공합니다. 이클립스에서 이 SQL Server 전용 JDBC jar 파일을 등록하여 SQL Server 와 연동해보도록 하겠습니다. 1. JDBC Driver for SQL Server 다운로드 docs.microsoft.com/ko-kr/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15 사용하는 자바버전에 맞는 jar 파일을 다운로드 해야 합니다. 다..
PostgreSQL 의 XID PostgreSQL 에서 하나의 튜플은 xmin, xmax 의 2개의 트랜잭션 ID 를 가집니다. Tuple 이 생성된 시점은 xmin / Tuple 이 삭제되는 (이전의 값) 인 경우는 xmax 로 TID 를 저장합니다. 이 때 다른 세션에서 해당 데이터를 조회 시 사용되는 트랜잭션ID 가 xmin 과 xmax 사이라면 보여지고, 그렇지 않다면 보여지지 않도록 합니다. PostgreSQL 의 XID 제약조건 TID 는 40억개를 사용할 수 있으며 20억개는 older , 20억개는 newer 로 사용됩니다. 40억개가 다 사용되면 다시 1부터 시작됩니다. 여기서 중요한 문제가 발생합니다. 트랜잭션 ID 가 40억에서 새로운 데이터가 적재되어 xmin 이 40억인 최신의 데..
꽁담
꽁담