일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Apache
- 윈도우10
- html/css
- 알리익스프레스
- PHP-FPM
- centos
- nginx
- 티스토리
- 아파치
- ConoHa
- 시놀로지
- 램가스초월
- Rocky
- 스톤에이지
- 복현오거리
- 리눅스
- 가상서버호스팅
- jQuery
- proxmox
- php
- SKT
- KB국민카드
- 킹북이초월
- 자바스크립트
- mysql
- 알뜰폰
- KB증권
- 소비전력
- iptime
- 보르비스초월
- Today
- Total
맛집 여행 캠핑 일상 생활
MySQL 단편화된 테이블 Optimize 하기 본문
테이블에 데이터를 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 |