Programming/Database

24

[PostgreSQL] 인덱스 정보 확인하기

종종 필요한 테이블의 인덱스 및 데이터 정보 확인을 위한 쿼리입니다. 필요할 때마다 생각이 안나서 찾게되니 이참에 블로그에 정리해 둡니다. 1) 인덱스가 잘 생성되어 있는지 확인하기 SELECT * FROM pg_indexs WHERE tablename LIKE 'my_table%'; 2) 인덱스 상태 확인 - 인덱스 적용된 개수 가늠하기 SELECT * FROM pg_stat_user_indexes WHERE schemaname = 'my_schema' AND relname like 'my_table%'; 3) 테이블의 데이터량 확인하기 SELECT schemaname, relname, n_live_tub FROM pg_stat_user_tables WHERE relname like 'my_table%..

Programming/Database 2018.07.06 Joshua95

[H2] insert 방식에 따른 성능 테스트

사용중인 h2 database의 insert 방식을 개선하기 위해서 성능을 테스트해 보았습니다. 현재 구성된 간단한 구조는 다음과 같습니다. - 구성: Java, h2 database(Embedded mode-1.3.169), mybatis, RMI(Remote Method Invocation) - 시나리오 1) 다른 프로세스로 부터 RMI(Remote Method Invocation)를 통하여 로그를 수신 받는다. 2) 수신된 로그는 곧바로 h2 database에 insert 한다. 3) h2 database를 통하여 모니터링 정보를 표시한다. 위 시나리오 중에서 2)번에 해당하는 insert 부분에 대하여 성능 테스트를 해 보았습니다. 1) 방식 1 - 단일 쿼리수신된 로그를 곧바로 insert 한다..

Programming/Database 2016.09.26 Joshua95

delete 와 truncate의 차이

프로젝트를 진행하다 보면, 특정 Table의 데이타를 전체 삭제해 주어야 할 경우가 있습니다.그럴 경우, 아무 생각 없이 delete 쿼리를 사용하게 됩니다.그리고 데이타 량이 많아서 한참을 멍 때리고 있어야 하는 기억이 있습니다. 실제 테이블의 데이타를 삭제하는 방식은 다음의 몇가지 방식이 있습니다.속도 면에서 아래로 내려갈 수록 속도가 빠를 것이라는 것은 금방 예상이 가능합니다.각 명령어 마다의 차이를 숙지하고 상황에 따라서 적당하게 데이터를 삭제해 봅시다. * DELETE : - 테이블은 남기도 데이터를 삭제합니다. - 롤백이 가능합니다. - 데이터 삭제 후에도 사용 용량 줄어들지 않음에 주의합니다. - seq. 넘버 등은 계속 유지됩니다. - 특정 조건의 일부 데이타 만을 삭제하고 싶은 경우에 사..

Programming/Database 2013.01.25 Joshua95

[PostgreSQL] 테이블 Lock 확인하기

-- pgsql 에서 테이블 Lock 여부를 확인하는 쿼리.select t.relname,l.locktype,page,virtualtransaction,pid,mode,granted from pg_locks l, pg_stat_all_tables t where l.relation=t.relid order by relation asc; -- 특정 테이블에 Lock 수동으로 걸어주기 BEGIN WORK; LOCK TABLE tblTest IN ACCESS EXCLUSIVE MODE; --LOCK TABLE tblTest IN EXCLUSIVE MODE; --LOCK TABLE tblTest IN SHARE ROW EXCLUSIVE MODE; --LOCK TABLE tblTest IN SHARE MODE; -..

Programming/Database 2013.01.23 Joshua95

DB별 Top N 얻어오기

* PostgreSQL SELECT * FROM tbTable LIMIT 10 * MS-SQL SELECT TOP 10 * FROM tbTable * IBM DB2 SELECT * FROM tbTable FETCH FIRST 10 ROWS ONLY - 2011.11.29 Joshua95

Programming/Database 2011.11.29 Joshua95

[MSSQL] DISTINCT와 GROUP BY의 차이

특정 로그 테이블에서 저장된 IP 개수가 몇개 인지 확인하는 쿼리를 만드려고 합니다. 예를 들어 전체 1000개의 로그 중에, 10개의 IP가 사용 중이더라를 알고 싶은 거지요. 1) 전체 얻어오기 - 결과: 1000개 SELECT COUNT(f_SrcIP) as cnt FROM tbSomeTable; 2) GROUP BY 이용하기 : 결과: 10개 GROUP BY 를 해서 아래와 같이 만들었지요. 그런데 생각보다 길고 너저분하네요. SELECT COUNT(*) FROM ( SELECT f_SrcIP, COUNT(*) as cnt FROM tbSomeTable GROUP BY f_srcip ) a; 3) DISTINCT 를 이용하기 - 결과: 10개 동료 한 분이 아래 쿼리를 만들어서 사용하더군요. 오홋..

Programming/Database 2011.10.21 4 Joshua95

[MS-SQL] xp_cmdshell 이슈 정리

자신이 담당한 제품이 MS-SQL을 사용하는 사람은 자알 읽어보시고, 다른 DB를 사용하고 있다면 대충 읽어보시고, DB랑 전혀 상관없는 분들은 그냥 넘어가시길. ^^ MS-SQL 에서 사용되는 시스템 SP 중에 xp_cmdshell 이라는 녀석이 있습니다. Windows의 shell command를 실행해 주는 sp 입니다. 그 기능이 워낙에 강력해서 예전에 SQL-Injection 으로 자주 애용되는 넘이라고 합니다. MS-SQL 2000 당시에는 해당 sp를 이용하여 query를 만들어서 전송하면 Windows 계정을 생성할 수 있는 취약성이 발견되어 난리가 났었다는군요. 간단하게는 취약한 웹사이트에 들어가서, 아이디 란에 xp_cmdshell' 을 이용한 쿼리를 생성해서 로그인을 시도해 주면 알아..

Programming/Database 2011.10.19 Joshua95