반응형

Database ( DB )/Database 97

[oracle] 성능 향상을 위해 로그 기록하지 않기

1. archive mode인지 확인 SQL > archive log list; --> database log mode ( 데이터베이스 로그 모드 ) 가 No Archive Mode(아카이브 모드 없음) 인지 확인 2. "Archive Mode" 일 경우 변경방법 2-1. 특정 테이블을 로그를 기록하지 않도록 변경 SQL > ALTER TABLE [테이블명] NOLOGGING; 2-2. No Archive Mode로 변경 2-2-1. INIT.ORA 파일의 parameter 수정 ( 아래 3줄을 주석처리 한다. ) #LOG_ARCHIVE_START = TRUE #LOG_ARCHIVE_DEST = "C:\oracle\ora92\database\archive" #LOG_ARCHIVE_FORMAT = %S.A..

[oracle] COUNT(*) 를 빠르게 하는 방법

개발을 하다 보면 페이징 처리를 위해 아래와 같이 COUNT(*)를 해야 할 때가 있다. SQL) SELECT COUNT(*) FROM [테이블명] WHERE [조건] 이 경우 전체 테이블을 FULL SCAN 할 수도 있고 INDEX SCAN을 할 수도 있다. 이 경우 데이터가 많을 경우 많은 시간이 걸릴 수 있다. 만약 인덱스를 SCAN하는데 하나의 블록이 아니라 MULTI BLOCK을 SCAN한다면 당연히 SINGLE BLOCK SCAN보다 빠를 것이다. 이 때 사용하는 것이 INDEX FAST SCAN이다. 사용 방법은 아래와 같다. SQL) SELECT /*+ INDEX([테이블명] [인덱스명]) */ COUNT(*) FROM [테이블명] WHERE [조건]; 사용 예 ) SELECT /*+ IN..

[MySQL] COUNT의 잘못된 인식과 속도 차이

일반 SQL 질의의 SELECT 절에의 *는 모든 컬럼을 가지고 오기 때문에 필요한 컬럼만 가지고 오는 SELECT 절에 비해 속도가 느리고 불필요한 자원을 낭비한다는 사실은 모두가 알고 있을 것입니다. 그렇기 때문에 이러한 것을 똑같이 생각함으로 인해 집계함수의 COUNT에 대한 COUNT(*) 와 COUNT(컬럼)에 대한 잘못된 인식과 SQL 질의를 실행하여 DB의속도를 느리게 할 수 있는 원인이 될 수 있습니다. 일반 SQL질의와 다르게 COUNT 집계함수에서의 *의 역할은 다른 역할을 수행하고 있습니다. * MySQL COUNT 함수의 역할을 보면 COUNT(*) : 단순 행을 세는 역할을 합니다. (MySQL 내부적으로 데이터를 읽지않고 행의 갯수만 흝고 지나간다는 뜻을 말합니다.) COUNT(..

mysql 날짜검색시 between 안에 포함되는 날짜전체 출력

select a.Date from ( select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union..

[mariaDB, MySQL] DB 연결 속도저하 해결 방법

localhost 로 접속하는 경우는 문제가 없지만 IP 로 접속하는 경우에는 DNS 서버의 성능이 떨어지거나 장애가 있는 경우에 DB 연결 시 속도저하가 발생할 수 있습니다. 이 경우 skip-name-resolve를 설정함으로써 DB 접속시에 문제점을 해결할 수 있습니다. 이 옵션은 client 에서 server로 접속시에 DNS Lookup 과정을 생략해 줍니다. 1. my.cnf ( 또는 my.ini ) 에 설정 [mysqld] skip-name-resolve 2. 또는 hosts 파일에 접속 IP와 호스트명을 넣어줍니다. mysql에서 접속시 ip에 대한 resolving(역질의)를 합니다. 하지만, 대부분의 IP는 등록되어 있지 않으며, DNS가 느리다면 이 부분은 더욱 심각한 속도 문제가 발..

[mysql/mariadb] DB 스케쥴러

1. 스케쥴 등록 SET GLOBAL event_scheduler = on; SET @@global.event_scheduler = on; SET GLOBAL event_scheduler = 1; SET @@global.event_scheduler = 1; 또는 my.cnf or my.ini 에 옵션(event_scheduler=On)을 추가하고 mysql 을 시작한다. CREATE EVENT [이벤트명] ON SCHEDULE [스케쥴 시간] STARTS [시작시간] /* 선택 */ ENDS [종료시간] /* 선택*/ DO [수행할 쿼리] ex) SET GLOBAL event_scheduler = on; SET @@global.event_scheduler = on; SET GLOBAL event_sche..

728x90
반응형
loading