2010년 12월 26일 일요일

MySQL 세션 단위의 메모리 할당 주의점


세션 기반의 메모리 사용시 주의 사항
  • 필요 이상으로 너무 많은 메모리를 할당 자제(특히 세션 기반의 메모리 할당시)
  • 128KB를 할당할 때보다 2MB의 메모리를 할당할 때, 훨씬 더 많은 시간이 소모됨
    - Linux의 메모리 할당 함수[malloc()]는 내부적으로 512KB 미만의 경우에는 brk()함수를,
      그 이상인 경우에는 mmap() 함수를 이용
  • 때때로, 너무 큰 세션 기반의 메모리 할당은 성능에 부정적인 영향을 미침
    - CREATE TABLE huge_table (...) ENGINE=MyISAM;
    - SELECT * FROM huge_table LIMIT 1;
    - SET read_buffer_size = 256*1024; -- 256KB
      ==> 10,000번 실행에 0.68 초 소요
    - SET read_buffer_size = 2048*1024; -- 2MB
      ==> 10,000번 실행에 18.81 초 소요
  • 대 부분, MySQL의 세션 기반의 메모리는 필요 이상 할당하지 않지만,
    특별한 경우(MyISAM 테이블의 FullScan후 LIMIT 실행과 같은)는 주의해야 함

==> 이 내용은 웹 사이트에 돌아다니는 자료(Yoshinori Matsunobu 작성) 번역한 것임

댓글 없음:

댓글 쓰기