320x100

DB/MYSQL 27

스케줄러 사용

MYSQL에서 Event Scheduler를 사용하기 위해선 'event_scheduler'가 활성화 되어있어야 한다. 다음 쿼리로 확인할 수 있다. SHOW VARIABLES event_scheduler; 해당 값이 OFF인 경우 다음 쿼리로 활성화 한다. SET GLOBAL event_scheduler = ON; 생성하기 CREATE EVENT [IF NOT EXISTS] 이벤트명 ON SCHEDULE 스케줄 [ON COMPLETION [NOT] PRESERVE] [ENABLE | DISABLE] [COMMENT '주석'] DO [BEGIN] 실행할 sql문; [실행할 sql문]; [END] 스케줄: { AT 타임 [+ INTERVAL 간격 [+INTERVAL 간격...]] | EVERY 간격 [ST..

DB/MYSQL 2021.10.07

paging 작업

대량의 데이터를 불러올 때 한 번에 불러오면 부하가 크기 때문에 게시판 같은 곳에서도 전부 페이징 처리를 해서 데이터를 소량씩 불러온다. 테이블에서 불러올 데이터의 양을 정해주기 위해 쿼리에 LIMIT을 걸 수 있는데 사용법은 다음과 같다. IN PAGE_NUM AS INT ,IN COUNT_PER_PAGE AS INT; SELECT * FROM TABLE_NAME ORDER BY PK ASC LIMIT COUNT_PER_PAGE OFFSET (PAGE_NUM * COUNT_PER_PAGE) 여기서 LIMIT은 가져올 데이터 수, OFFSET은 어디서 부터 가져올건지 정하는 수치다. 대략 페이지 번호와 페이지 당 갯수를 예시처럼 파라미터로 받던지 SP 내부에 정해놓고 페이지만큼 OFFSET을 설정해 원하..

DB/MYSQL 2021.10.07

[펌] MyISAM와 InnoDB 비교

내용이 좋아 별도의 정리없이 퍼온 내용으로 작성한다. 출처: https://needjarvis.tistory.com/45?category=619256 현재 하고 있는 프로젝트는 MySQL DB를 사용하고 있고, TA로 투입이 되면서 테이블을 설계 업무도 병행하게 되었다. (물론 다 하는건 아니었지만) 큰 그림을 그리는 작업을 하는 거라, 업무별 테이블 설계는 해당 업무의 특성인 조회 특화, 트랜잭션 없음, 집계 필요 등 데이터마이닝용 테이블 설계라 MyISAM 쪽으로 가닥을 잡고 설계를 했다. 사실 처음에는 InnoDB로 테이블을 생성하여 테스트를 하였는데... 10만건당, 테이블에 밀어넣는(Batch Insert) 작업이 약 10초정도 걸렸고, MyISAM은 7초정도에 끝났기 때문에.. 고민은 끝난듯 ..

DB/MYSQL 2021.10.07

commands out of sync you can't run this command now

C++에서 API를 통해 MYSQL의 Query를 실행하는 와중에 commands out of sync you can't run this command now 라는 에러 메시지가 출력되며 Query가 작동하지 않았다. 공식 홈페이지에서는 mysql_use_result()를 사용 하고 mysql_free_result()를 호출해 리소스를 해제하기 전에 또 다시 Query를 시도하면 발생할 수 있다고 한다. 또는 mysql_use_result() 또는 mysql_store_result() 호출하지 않고 데이터를 반환하는 2개의 Query를 실행하려고 할 때도 발생한다고도 한다. https://dev.mysql.com/doc/refman/8.0/en/commands-out-of-sync.html MySQL :..

DB/MYSQL 2021.10.07

MYSQL을 위한 GUI 툴

MYSQL을 설치하면 WorkBench는 기본적으로 설치되는데, 몇몇 불편한 점이 있어서 다른 툴을 알아본 내용을 정리한다. 1. SQLYog SQLyog 에서 개발한 MySQL 전용 GUI 툴로, 유료버전(Trial)과 무료버전(Community Edition)이 있으니 상황에 맞게 설치하면 될 것 같다. 다운로드 주소 https://github.com/webyog/sqlyog-community/wiki/Downloads 2. heidisql heidsql은 ‘MySQL Front’로 알려졌던 제품이며 오픈 소스 클라이언트다. 다운로드 주소 https://www.heidisql.com/download.php 아직 둘 다 써본지 얼마 안되서 장단점은 잘 모르겠다. 더 사용 해보고 추후에 수정해보겠다.

DB/MYSQL 2021.10.05

Insert 할 때 value 조건문 걸기

가끔 insert나 select 등 값에 조건을 걸어 다른 값으로 표현하거나 삽입하고 싶은 경우가 있다. 나 같은 경우엔 테이블에 nullable한 datetime 컬럼이 있고 파라미터로 unix 시간을 받는데, 파라미터 값이 0인 경우엔 datetime에 NULL을 넣고, 0이 아니면 datetime으로 변환한 값을 넣고 싶었다. CASE ~ WHEN을 쓰는 방법과 IF를 쓰는 방법 2가지가 있다. CREATE PROCEDURE `sp` ( IN _start_time BIGINT ) BEGIN -- 1. CASE~WHEN INSERT INTO (start_date) VALUES ((CASE WHEN _start_time = 0 THEN NULL ELSE FROM_UNIXTIME(_start_time))..

DB/MYSQL 2021.10.05

시간 관련 함수

MYSQL에서는 UNIX_TIME과 DATE_TIME 사이 변환을 지원한다. UNIX_TIME->DATE_TIME SELECT FROM_UNIXTIME(1249052400) DATE_TIME -> UNIX_TIME SELECT UNIX_TIMESTAMP('2021-01-01') 그 외 날짜/시간 관련 함수는 다음과 같다. 현재 시간을 UNIX_TIME 으로 구하기 SELECT UNIX_TIMESTAMP() 이하 차후 정리 http://xe.issro.net/MySQL/299 MySQL - 타임스탬프(유닉스시간) 변환 출처 : http://hack4all.egloos.com/1841100 1) Unixtime -> Date 형식(일반적인 시간)으로 변환 SELECT user_id, FROM_UNIXTIME..

DB/MYSQL 2021.10.05
320x100