6. prepared stmt (2/2)
108
66
0
20
40
60
80
100
120
prepared statement 미사용 prepared statement 사용
prepared statement 사용 여부에 따른 Network
사용량 (lower is better)
Network 전송량 (MB)
• 혹시 PHP가 prepared statement를 emulation만 하는 것 아닌가 하고
network 사용량을 조사함
• network 사용량만 봐서는 bind된 값만 전송되는 것 같은데 왜 큰 효과가
7. 트랜잭션 사용 여부
238.58
100.85
78.62 76.86 76.63 77.29 76.76
0
50
100
150
200
250
300
1개 10개 100개 1천개 1만개 10만개 100만개
commit interval 별 입수 시간 (lower is better)
입수 시간 (초)
• commit-interval이 10이란 이야기는 매 10개 INSERT마다 commit을 한다는
이야기
• 1이면 AUTO COMMIT
• 역시 트랜잭션을 사용해야 빠르다
8. MULTI INSERT
76.76
53
26.63
19.84
13.5 12.87 13.2
0
10
20
30
40
50
60
70
80
90
1개 2개 5개 10개 100개 1,000개 10,000개
MULTI INSERT 개수별 입수 속도 (lower is better)
입수 시간 (초)
• MySQL에서는 “INSERT INTO ... VALUES (), (), . . ., ()” 를
이용하여 INSERT 1번 호출에 여러 개의 Record를 INSERT할 수 있다
• 단순 입수라면 MULTI INSERT를 사용하는 것이 젤 빠르다
9. 결론
• Prepared Statement의 성능 향상은 미비했다
– 이해가 잘 안 됨
• 트랜잭션을 켜주는 것 만으로도 성능 향상
효과가 높다
• MULTI INSERT를 방식으로 변환하면 더욱
빨라진다