Mysql 은 < ";;;; a href = " > /a> table< 최적화합니다, http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html 명령을 사용할 수 있는 공간을 비사용률 재확보할 MySQL 설치. 방법이 (내장 명령 또는 일반 저장 프로시저) 를 각 테이블에 최적화이든 실행하십시오 데이터베이스 및 / 또는 서버 설치, 또는 로만스였나 뭔가 you& 할; d # 39 위로 스크립트입니다 교도관님도요?
set @tables_like = null;
set @optimize = null;
set @show_tables = concat("show tables where", ifnull(concat(" `Tables_in_", database(), "` like '", @tables_like, "' and"), ''), " (@optimize:=concat_ws(',',@optimize,`Tables_in_", database() ,"`))");
Prepare `bd` from @show_tables;
EXECUTE `bd`;
DEALLOCATE PREPARE `bd`;
set @optimize := concat('optimize table ', @optimize);
PREPARE `sql` FROM @optimize;
EXECUTE `sql`;
DEALLOCATE PREPARE `sql`;
set @show_tables = null, @optimize = null, @tables_like = null;
데이터베이스가 SQL IDE 를 연결한 붙이십시오 믿지아니하며, 단순히 하기 때문이다.
알림: # 39 의 phpmyadmin 이 코드의 WON&, 빗나갔다.
이 테이블 '은' show 에서 준비한 성명에서 기술서임을 저장합니다. 그런 다음 테이블 '은' 최적화합니다 선택한 설정되었습니다.
다른 값을 설정하여 최적화합니다 제어할 수 있습니다 (var) '의 표를 @tables_like' (예: # 39, & # 39 @tables_like = '설정되었습니다 %test%&;;').
예를 들어 모든 php 스크립트 최적화합니다 데이터베이스의 테이블 데 도움을 줄 수 있습니다
<?php
dbConnect();
$alltables = mysql_query("SHOW TABLES");
while ($table = mysql_fetch_assoc($alltables))
{
foreach ($table as $db => $tablename)
{
mysql_query("OPTIMIZE TABLE '".$tablename."'")
or die(mysql_error());
}
}
?>
Phpmyadmin 에서 및 기타 소스뿐만 사용할 수 있습니다.
SET SESSION group_concat_max_len = 99999999;
SELECT GROUP_CONCAT(concat('OPTIMIZE TABLE `', table_name, '`;') SEPARATOR '') AS O
FROM INFORMATION_SCHEMA.TABLES WHERE
TABLE_TYPE = 'BASE TABLE'
AND table_name!='dual'
AND TABLE_SCHEMA = '<your databasename>'
그럼 & 복사할 수 있습니다. 그 결과 새로운 it 에서 실행하십시오 붙여넣습니다 쿼리하지 또는 자신의 소스.
Mysql 데이터베이스, 모든 테이블을 사용할 수 있습니다 / 점검 및 수리 최적화합니다 클라이언트입니다.
먼저,, & # 39 분판된 & # 39 표를 얻을 수 있는 모든 목록,:
mysql -u[USERNAME] -p[PASSWORD] -Bse 'show tables' [DB_NAME]|xargs|perl -pe 's/ /,/g'
이제 때는사용할 최적화를 위한 표에는 모두 갖추고 있다.
mysql -u[USERNAME] -p[PASSWORD] -Bse 'optimize tables [tables list]' [DB_NAME]
'관리자' (일부를 mysql GUI 도구) 할 수 있는 MySQL 데이터베이스의 레벨이네 당신꺼에요
그냥 오른쪽 아래에 있는 '유지' 버튼을 누르고 스키마에는 선택.
이들은 단종 상태 mysql GUI 도구) 에 도달한 이후 찾기 어려운 호출이네요 통해 찾은 Google: http://dev.mysql.com/downloads/gui-tools/5.0.html
내가 don& # 39, t 다운로드되었는지 새로운 MySQL 워크벤치 할 수 없다.
사용할 수 있습니다 '할 수 있어야 할 수 있는' 미스크라치크 명령줄 도구, 고쳐주렴.
스케쳐내 수리 및 분석, MySQL 서버와 데이터베이스 내의 모든 할 수 있는 모든 테이블이 최적화합니다 검색하기를 한 &solarisdvd 명령줄입니다. 그렇게 하려면 어쨌든요 스크립트루트 합니다
mysqlcheck -u root -p --auto-repair --optimize --all-databases
그 후에는 MySQL root 암호를 실행하십시오 입력하라는 메시지가 나타날 수 있습니다. 그 후, 이 같은 결과는 it& # 39 의 일이 시작되고 볼 수 있습니다.
예 출력:
yourdbname1.yourdbtable1 OK
yourdbname2.yourdbtable2 Table is already up to date
yourdbname3.yourdbtable3
note : Table does not support optimize, doing recreate + analyze instead
status : OK
etc..
etc...
Repairing tables
yourdbname10.yourdbtable10
warning : Number of rows changed from 121378 to 81562
status : OK
이 스크립트는 bash 등 it 최적화합니다 수락하셔야 root 암호를 하나씩 옵션과 함께 상태 출력:
#!/bin/bash
if [ -z "$1" ] ; then
echo
echo "ERROR: root password Parameter missing."
exit
fi
MYSQL_USER=root
MYSQL_PASS=$1
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
TBLLIST=""
COMMA=""
SQL="SELECT CONCAT(table_schema,'.',table_name) FROM information_schema.tables WHERE"
SQL="${SQL} table_schema NOT IN ('information_schema','mysql','performance_schema')"
for DBTB in `mysql ${MYSQL_CONN} -ANe"${SQL}"`
do
echo OPTIMIZE TABLE "${DBTB};"
SQL="OPTIMIZE TABLE ${DBTB};"
mysql ${MYSQL_CONN} -ANe"${SQL}"
done
선발 bash 스크립트입니다 목록 및 실행하십시오 도구에서는 아니했으니 DBs.
#!/bin/bash
declare -a dbs
unset opt
for each in $(echo "show databases;" | mysql -u root) ;do
dbs+=($each)
done
echo " The system found [ ${#dbs[@]} ] databases." ;sleep 2
echo
echo "press 1 to run a check"
echo "press 2 to run an optimization"
echo "press 3 to run a repair"
echo "press 4 to run check,repair, and optimization"
echo "press q to quit"
read input
case $input in
1) opt="-c"
;;
2) opt="-o"
;;
3) opt="-r"
;;
4) opt="--auto-repair -c -o"
;;
*) echo "Quitting Application .."; exit 7
;;
esac
[[ -z $opt ]] && exit 7;
echo " running option: mysqlcheck $opt in 5 seconds on all Dbs... "; sleep 5
for ((i=0; i<${#dbs[@]}; i++)) ;do
echo "${dbs[$i]} : "
mysqlcheck $opt ${dbs[$i]} -u root
done
내 2cents: 가장 높은 조각화가 시작하여 테이블
for table in `mysql -sss -e "select concat(table_schema,".",table_name) from information_schema.tables where table_schema not in ('mysql','information_schema','performance_schema') order by data_free desc;"
do
mysql -e "OPTIMIZE TABLE $table;"
done