mysql (4) 썸네일형 리스트형 non-repeatable read 와 phantom read의 차이점 사실상 non-repeatable read 의 일종이 phantom read 라고 생각하긴한다그래도 이름이 같지않으니 둘 간의 늬앙스 차이가 있는데 non-repeatable read는 좀 더 한 row의 업데이트시 변경점이라는 느낌이다즉 name,age가 고길동,30이라는 row가 있으면트랙잭션1 시작트랜잭션2 시작트랜잭션1 select // 고길동,30트랜잭션2 select // 고길동,30트랜잭션1 update //고길동,31트랜잭션2 select // 고길동 30트랜잭션1 커밋트랜잭션2 select //고길동 31 //위에서는 고길동,30이었는데 같은 트랜잭션안에서 값이 바뀜트랜잭션2 커밋 이런식으로 한 row를 가지고 조회를 하는데 다른트랜잭션의 update에 영향을 받는걸 말하는 느낌이고 ph.. mysql의 트랜잭션 2개의 경합시 동작 만약 트랜잭션 두개에서,각각 유니크칼럼이 겹치는 insert나 update를 동시에 수행한다면,두번째 트랜잭션의 쿼리는 첫번째 트랜잭션의 쿼리가 커밋이나 롤백될때까지 무한대기에 들어가게된다이게 어케 잘못꼬이면(그 철학자 젓가락같은거,그래서 비관적락에서는 항상 조회순서를 통일해줘야함) 데드락이 생기기 매우 쉽다 단 이때 select의 결과는 바뀌지않는다(mysql의 gap lock으로 락이 걸려있기때문)즉first와 second는 둘다 유니크1번트랜잭션 start transaction;2번트랜잭션 start transaction;2번트랜잭션 select * from lock_test where first="22" and second="bb";//결과갯수 0개1번트랜잭션 insert into lock_tes.. h2 database의 mysql모드에 대해 h2로 테스트를 짜던도중,mysql의 전문검색(full test search)테스트를 짜는데 org.h2.jdbc.JdbcSQLSyntaxErrorException: Function "MATCH" not found; SQL statement: 예외가 계속 발생하는게 아니겠는가 예외를 읽어보고 처음엔 아 h2의 mysql모드설정을 안했구나 하고 프로퍼티파일에 가서 spring.datasource.url: jdbc:h2:mem:testdb;MODE=MySQL 를 설정을 했다 그래도 해당예외가 계속뜨길래 혹시 저기능이 h2에서 지원하지 않나 하고 따로 h2를 띄우고 mysql도 하나띄우고 쿼리를 날려가면서 select * from post where match(title) against('bc -ef' in .. mysql에서 인덱스로 작업범위를 줄일수있는 조건 btree인덱스를 작업범위결정조건으로 사용할수없는조건은 not equal로 비교(not in,is not null,) like '%abc' 스토어드함수나 연산자로 인덱스칼럼이 변형된 후 비교(substring,dayofmonth) not-deterministic속성의 스토어드함수가 비교조건에 사용 데이터타입이 서로 다른 비교(char_column=10) 문자열데이터타입의 인코딩값이 다른경우(utf8과 euckr의 비교) 가 있음 추가적으로 null도 mysql에서는 인덱스에 저장돼서,작업범위조건으로 사용할수있음 다중칼럼인덱스에서 작업범위결정조건으로 사용할수없는경우(col1,col2,col3..colN순 인덱스) col1에 대한 조건이 없을때 col1칼럼의 비교조건이 위의 인덱스사용불가조건중 하나일경우 c.. 이전 1 다음