분류 전체보기(411)
-
MySQL - Temp Table is full, 크기 조절
CREATE TEMPORARY TABLE xxx ... 임시로 생성한 테이블에서 아래와 같은 Exception 이 발생한다면? java.sql.SQLException: The table 'xxx' is full MySQL 환경에 설정된 heap size와 temp table size를 조절해야한다. * MySQL 재기동시 반영 /etc/mysql 에 있는 mysql.cnf 파일을 수정한다. !includedir /etc/mysql/mysql.conf.d/ 이런 식으로 환경설정 파일을 나눠놨다면... 해당 경로에 있는 mysql.cnf 파일을 수정한다. 원하는 크기로 설정하면 된다. max_heap_table_size = 256000000 tmp_table_size = 256000000 * 실시간으로 반영..
2018.01.11 -
MySQL - rownum, rank, SQL_CALC_FOUND_ROWS
Oracle의 RANK() OVER 같은 결과를 만들어 낼 수 있는 SQL이다. 특정 Key1를 기준으로 해당 Key1내에서 Key2를 기준으로 순위를 만드는 SQL이다. (아래에서는 rnum을 기준으로, created에 따라서 순위를 만들고 있다.) SELECT * FROM ( SELECT a2.* , @rn := CASE WHEN @key1 != rnum THEN 1 ELSE @rn + 1 END AS rank , @rk := CASE WHEN @rn = 1 THEN 1 WHEN @key2 = created THEN @rk ELSE @rn END AS tmp_val , @key1 := rnum , @key2 := created FROM ( SELECT ... AS rnum , ... AS create..
2017.11.29 -
MySQL - Select한 값으로 Update
단순한게는 테이블과 테이블을 Join해서 특정 컬럼의 값으로 Update 시킬 수 있다. UPDATE TABLE1, TABLE2 SET TABLE1.COLUMN1 = TABLE2.COLUMN3 WHERE TABLE1.COLUMN2 = TABLE2.COLUMN4 ; UPDATE TABLE1 INNER JOIN TABLE2 ON TABLE1.COLUMN2 = TABLE2.COLUMN4 SET TABLE1.COLUMN1 = TABLE2.COLUMN3 ; UPDATE TABLE1 SET COLUMN1 = ( SELECT COLUMN2 FROM TABLE2 WHERE ... LIMIT 1 ) ; 복잡하게는 Matching되는 특정 값이 존재하지 않을 경우 ROW_NUM을 만들어서 Join 시킬 수 있다. UPDA..
2017.11.28 -
MySQL - 임의의 날짜값 생성
임의의 날짜를 설정해서 TEST 해야할 때 유용할 듯... 오늘에서 임의의 날짜를 빼고 시간, 분, 초를 임의의 난수로 채워서 날짜를 만들어낸다. STR_TO_DATE( CONCAT( DATE_FORMAT( DATE_SUB(CURDATE(), INTERVAL CAST(RAND() * 100 AS UNSIGNED) DAY), '%Y%m%d' ) , LPAD( CAST( CAST(RAND() * 23 AS UNSIGNED) AS CHAR ), 2, '00' ) , LPAD( CAST( CAST(RAND() * 59 AS UNSIGNED) AS CHAR ), 2, '00' ) , LPAD( CAST( CAST(RAND() * 59 AS UNSIGNED) AS CHAR ), 2, '00' ) ), '%Y%m%d..
2017.11.14 -
[MySQL] millisecond, microsecond 표시하기
Timestamp Type Column에 NOW() 든 CURRENT_TIMESTAMP() 든 값을 줘서 Insert/Update를 했지만... 기본적으로 DATE_FORMAT( NOW(), '%Y-%m-%d %H:%i:%s.%f' )를 사용했더라도 millisecond, microsecond 가 표시되지 않는다. 1. Column Type이 Timestamp(6) 으로 만들어져야 하고 2. 날짜값을 만들 때 NOW( 6 ) CURRENT_TIMESTAMP( 6 ) 이런 식으로 몇자리까지(0~6까지)의 소수 시간(fractional seconds precision)을 표시할 것인지 인자를 전달해야 한다. 기본값은 생략해도 되는지라...
2017.10.16 -
Cost, Quality, Quick
조대협의 서버사이드 소프트웨어 개발과 테스트 책을 보다보니... 고객에게 이야기할 때 Cost, Quality, Quick 중 두 가지를 고르라고 한단다. . Quality + Quick(기간) : Cost가 올라간다. . Cost + Quality(저비용에 좋은 품질) : Quick(기간)이 길어진다. . Quick + Cost(단기간에 낮은 비용) : Quality가 떨어진다. 괜찮은 방법같다.
2017.07.11