본문 바로가기
Database/MYSQL

Open and closes Tables

by 반화넬 2009. 1. 14.
반응형
  1. mysqladmin status

Uptime: 426 Running threads: 1 Questions: 11082
Reloads: 1 Open tables: 12


  • 다중 thread 방식이기 때문에 해당 table 동시에 쿼리를 날리는 클라이언트가 많이 존재하기 때문에 6개의 테이블만 존재하더라도 위의 상태 값을 보면 open tables 12
  • 동시 thread 동일한 table 다른 상태로 존재하기 때문에 독립적으로 open 해야 되며, 방식은 메모리를 추가적으로 사용하지만 성능을 향상 시킬 있음
  • MyIsam table 이용할 경우  table open 클라이언트에 대해 데이터 파일용 디스크립터가 별도로 하나씩 존재(인덱스 파일 디스크립터는 thread 공유)
  • MyIsam storage engine 경우 각각의 open table 대해 2개의 파일 디스크립터를 필요로

개의 thread 동일한 table 접속을 하거나 하나의 thread 동일한 쿼리 내에서 테이블을 접속(self join) 경우 테이블이 열려야 .

Myisam table 처음 open 데이터 파일 디스크립터, 인덱스 파일 디스크립터를 필요로 하며 테이블을 추가적으로 사용할 경우 인덱스 파일 디스크립터는 공유하며

하나의 파일 디스크립트 필요


  1. 관련 variables

table_cache, max_connections, max_tmp_tables


위의 관련 변수가 open 파일 결정


  • max_connections

200개의 동시 접속

table cache = 200 * N(실행 쿼리 안의 join   table 최대 )   - 추가로 임시 table 임시 파일에 대한 여분의 디스크립터를 보관하고 있어야


shell> perror 23
OS error code  23:  File table overflow
shell>
perror 24
OS error code  24:  Too many open files
shell>
perror 11
OS error code  11:  Resource temporarily unavailable


위와 같은 에러 발생시 table cache( --open-files-limit ) 증가시키거나 max_connections 감소


  1. 사용되지 않는 close table

  • 캐시 상태에서 캐시 안에 없는 table open
  • When the cache contains more than table_cache entries and a table in the cache is no longer being used by any threads
  • flush tables, mysqladmin flush-tables, mysqladmin refresh 같은 flush 연산이 발생할 경우

  • Cache entry procedure

  • 현재 사용하지 않는  table 반환(가장 마지막으로 사용된 table 기준)
  • table open 필요할 , 캐시가 풀이지만 이상 반환할 table 없을 경우 임시 확장 가능(필요없을 경우 반환)

  1. HANDLER table_name OPEN

  • HANDLER table_name OPEN 구문을 사용하여 table open 경우, 지정된 table object thread 할당되며, 할당된 table object thread 사이에 공유되지 않음

  • HANDLER table_name CLOSE 호출 또는 thread 종료 close.
    table
    다시 table 캐시에 저장

반응형