Index Prefix
* index 지정할 때 prefix를 주면 컬럼 값 중에 지정된 길이만큼만 index에서 관리한다.
* index에서 prefix 길이만으로 row를 찾고, 이때 여러 row이면 실제 컬럼값을 참조해서 결정한다.
* Blob, Text 타입도 index prefix를 지정해주기만 하면 index 걸 수 있다.
InnoDB는 무조건 Clusted Index로 저장된다.
* 데이터 추가될 때
InnoDB > Delete vs Update performance
* index가 안걸린 컬럼을 update하는 경우 delete보다 더 빠를 수 있다?
* http://stackoverflow.com/questions/824936/mysql-performance-delete-or-update
Insert on Duplicate...
* duplicated여서 update를 하게 되더라도 AutoIncrement 값은 증가한다.
* 이 query가 대량으로 요청들어오면서 duplicate가 자주 발생하는 경우 내부적으로 deadlock이 걸릴 수도 있다.
ㄴ 차라리 insert ignore를 쓰는 것이 안전하다.
MySql의 Date 타입은 시간정보가 없다!
* MySql의 Date 타입은 년-월-일 정보만 있다.
* 년월일시분초 정보를 알려면 Datetime 타입을 써야 한다.
모든 Join은 Single Thread 방식의 Nested Loop이다!
* Hash Join 같은건 없다.
* 느낌상 작은쪽을 미리 select해서 상수화 시키고 join 수행하는 것도 없는 것 같다.
ㄴ where in (select a from t1)와 동일한 in (a,b,c,d...)의 성능 차이가 엄청나게 많이 난다.
* Oracle처럼 병렬처리 해주는 기능 따위는 없다.
'SW-PRODUCT > 개발' 카테고리의 다른 글
Java에서 Seriazable한 객체 replication.. (0) | 2014.06.11 |
---|---|
쿠키런 서버 사례: NoSQL + AWS AutoScale (0) | 2014.06.05 |
멀티쓰래드 Lock-free, C++, CAS from NDC (0) | 2014.06.02 |
Executors.newFixedThreadPool(nSize) (0) | 2014.01.09 |
Tech Resources (0) | 2013.11.19 |