맛집 여행 캠핑 일상 생활

MySQL 단편화된 테이블 Optimize 하기 본문

LAMP

MySQL 단편화된 테이블 Optimize 하기

영은파더♥ 2016. 2. 19. 13:34

테이블에 데이터를 insert, update, delete 하다보면 단편화 테이블이 생긴다.


단편화 테이블을 체크해서 최적화(optimize)를 해보자.


단순히 쿼리만으로 최적화를 할 수도 있겠지만 지금 내용은 PHP로 구현한 내용이다.


// from database명은 생략가능, Data_free > 0 이 조건이 단편화된 테이블을 찾는 조건이다.

$sql = "show table status from database명 where Name like '원하는테이블%' and Data_free > 0";

$fragTables = DBQueryArray($sql);

$fragCnt = count($fragTables);

echo "alert('단편화된 테이블이 ".$fragCnt."개 있습니다.');";

if($fragCnt > 0) {

$fragTableNameArr = array();

$lockTableArr = array();

foreach($fragTables as $_fragTable) {

$fragTableNameArr[] = $_fragTable['Name'];

$lockTableArr[] = $_fragTable['Name']." WRITE";

}

$lockTables = implode(", ", $lockTableArr);

DBQuery("LOCK TABLES $lockTables"); // 테이블락 걸어주고

$optimizeTables = implode(", ", $fragTableNameArr);

$sql = "optimize table $optimizeTables";

DBQuery($sql);

DBQuery("UNLOCK TABLES"); // 테이블락 해제

}

위 PHP소스를 적절한 위치에 넣어서 테이블 최적화를 해주도록 하자. (적절한? 어드민계정이 접근할 수 있고 빈번히 접근하지 않는 위치?)

DBQueryArray, DBQuery 함수는 여기(MySQL 기본 함수 만들기)를 참고하자.


'LAMP' 카테고리의 다른 글

PHP number_format 함수  (0) 2016.02.23
MySQL 대소문자 구분하기  (0) 2016.02.22
MySQL group_concat 함수  (0) 2016.02.16
PHP String 과 관련된 함수들  (0) 2016.02.15
아파치 RLimitCPU RLimitMEM RLimitNPROC  (0) 2016.02.11
Trackback : | Comments :