- Arawn's Dev Blog
- Outsider's Dev Story
- Toby's Epril
- Benelog
- NHN 개발자 블로그
- SK 플래닛 기술 블로그
- OLC CENTER
- 소프트웨어 경영/공학 블로그
- 모바일 컨버전스
- KOSR - Korea Operating System …
- 넥스트리 블로그
- 리버스코어 ReverseCore
- SLiPP
- 개발자를 위하여... (Nextree 임병인 수석)
- "트위터 부트스트랩: 디자이너도 놀라워할 매끈하고 직관…
- Learning English - The English…
- real-english.com
- 'DataScience/Deep Learning' 카테…
- Deep Learning Summer School, M…
- Deep Learning Courses
목록Database (43)
민서네집
웹어플리케이션의 Transaction Test 를 해 보고 싶었다. 지금 사용하는 DB는 MySQL 5.6 버전이고, 웹어플리케이션에서는 Spring 3.2.2 버전을 사용 중이다. MySQL 의 Default Transaction Isolation Level 은 REPEATABLE READ 라서, Session (Connection?) 이 다르다면 반복적인 읽기 일관성을 위해 한번 select 한 것은 다른 Sesion 에서 Commit 했다고 하더라도 내가 Transaction 을 Commit 이나 Rollback 하지 않는다면 다른 Session 의 변경사항이 반영되지 않는다. 즉, 내가 한번 select 한 결과는 다른 사람이 커밋했더라도 내가 커밋이나 롤백을 하지 않는다면, 다시 select 해..
[참고] http://gywn.net/2012/05/mysql-transaction-isolation-level/ 웹어플리케이션에서 MySQL DB를 사용하는데, 트랜잭션을 사용하기 위해서 my.ini 파일에서 [mysqld] autocommit=0 이렇게 설정했다. 그리고 웹어플리케이션을 실행시키고, DB 접속하는 프로그램(나는 HeidiSQL을 사용한다.)을 띄워서 조회를 해봤는데, 웹어플리케이션에서 변경한 사항이 조회되지 않았다. 이것은 MySQL의 Default Transaction Isolation Level 이 REPEATABLE-READ 로 되어 있어서 발생하는 현상이다.현재 트랜잭션이 커밋되지 않은 상태에서는 다른 트랜잭션과 관계없이 반복적인 읽기 시에 동일한 결과를 보장하는 ISOLATI..
Transaction 이나 Lock 이 걸리는지를 테스트 해 보기 위해서,또는 대규모의 접속 상황을 가정해서, 동시에 insert 를 한다던지의 상황을 만들어내기 위해,쿼리를 의도적으로 지연시키고 싶은 경우가 있다. 이럴때 MySQL 에서는 sleep function을 사용하면 된다. [참고] http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_sleep [사용 예] http://dev.kthcorp.com/2012/03/14/mysql-table-lock/ MySQL 온라인 매뉴얼을 보면 초 단위로 지연시킬 수 있다고 하는데, 실제로 해보면, 주어진 초보다 좀 더 지연되는것 같다. SELECT * FROM {테이블 이..
http://iknowkungfoo.com/blog/index.cfm/2008/6/1/Please-stop-using-SELECT-MAX-id
[참고] http://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_last-insert-id SELECT last_insert_id() FROM T; last_insert_id() function은 같은 Connection 에서 가장 최근에 insert 된 row의 auto increment column 의 값을 반환한다. 그런데, INSERT 전에 SELECT last_insert_id() 를 최초로 실행할 경우, 올바른 값을 가져오지 못한다. ( 0 이 조회됨. ) 테스트 해 보려면 관리 메뉴에 들어가서 MySQL 서비스를 재시작 하고, 다시 MySQL 에 접속해서 쿼리를 날려보자. LAST_INSERT_ID( expr ) ..
OUTER JOIN - WHERE 절의 조건을 ON 절에 쓰면 무시된다. MySQL 에서 쿼리를 작성했는데, OUTER JOIN 에서 WHERE 절에 쓸 것을 ON 절에 조건으로 주었더니, 그 조건이 그냥 무시되었다. SELECT A.COL1, B.COL1 FROM A LEFT JOIN B ON A.COL1 = B.COL1 AND A.USE_YN = 'Y' AND B.USE_YN = 'Y' 위의 쿼리에서AND A.USE_YN = 'Y' 조건이 무시된다.즉 쿼리의 결과에 A.USE_YN = 'N' 인 ROW도 SELECT 된다. 즉, ON 절에서는 JOIN 에 관련된 조건만 써야하고, JOIN 에 관계없는 조건은 무시된다는 사실... 위의 쿼리는 아래와 같이 변경해야 한다. SELECT A.COL1, B...
-- CODE_NAME 을 반환하는 fn_code_name Function DROP FUNCTION IF EXISTS fn_code_name; DELIMITER $$ CREATE FUNCTION fn_code_name(groupCode TEXT, commCode TEXT) RETURNS TEXT READS SQL DATA BEGIN DECLARE codeName TEXT; SET codeName = (SELECT CODE_NAME FROM T_COMMCODE_DETAIL WHERE GROUP_CODE = groupCode AND COMM_CODE = commCode AND USE_YN = 'Y'); RETURN codeName; END $$ DELIMITER ; MySQL Function 만들때 주의할 ..
-- mo 이름을 가져오기 위한 function. 최상위 노드의 MO_NAME 컬럼값을 가져온다. DELIMITER $$ DROP FUNCTION IF EXISTS ntelsdm.fn_mo_name; CREATE FUNCTION fn_mo_name(param_mo_id INTEGER) RETURNS TEXT READS SQL DATA BEGIN DECLARE _id INTEGER; DECLARE _parent INTEGER; DECLARE _mo_name TEXT; DECLARE _count INT DEFAULT 0; DECLARE done INT DEFAULT FALSE; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; SET _parent := NU..
2013. 5. 21 오후 7:36:17 org.apache.catalina.core.StandardWrapperValve invoke심각: Servlet.service() for servlet [SyncServerServlet] in context with path [/{context명}] threw exception [org.springframework.jdbc.UncategorizedSQLException: ### Error updating database. Cause: java.sql.SQLException: Got error -1 from storage engine### The error may involve {패키지명}.dao.CommMapper.startPackage-Inline### The..
[참고] http://www.okjsp.net/bbs?seq=137293 AUTO_INCREMENT 속성의 PK 컬럼값을 다른 컬럼에도 쓰고 싶은 경우 - 더구나 그 컬럼이 PK 컬럼을 참조하는 foreign key 인 경우, 그러면서 NOT NULL 속성으로 되어 있는 경우 select ifnull(max(a),0)+1 from table INSERT INTO table (a, b, c) VALUES (#seq#, #b#, #seq#) 이런 방법이 가장 맞는것 같다. https://www.okjsp.net/bbs?seq=189887 http://www.raistudies.com/mybatis/inserting-auto-generated-id-using-mybatis-return-id-to-java/