![for 루프를 사용한 멀티스레딩](https://linux55.com/image/131729/for%20%EB%A3%A8%ED%94%84%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%9C%20%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%94%A9.png)
이것은 멀티스레딩을 사용하려는 bash 스크립트 코드의 일부입니다.
for DATABASE in $DATABASES ; do
echo Converting $DATABASE
# Check if the table is MyISAM (we don't want to convert InnoDB tables over and over again)
TABLES=$(echo "SELECT TABLE_NAME FROM information_schema.TABLES where TABLE_SCHEMA = '$DATABASE' and ENGINE = 'MyISAM'" | $MYSQL_COMMAND)
for TABLE in $TABLES ; do
echo Converting MyISAM $TABLE to InnoDB
echo "ALTER TABLE $TABLE ENGINE = INNODB" | $MYSQL_COMMAND $DATABASE
done
if [ "x$TABLES" = "x" ] ; then
echo No MyISAM tables found in $DATABASE database
fi
echo
done
FOR
멀티스레딩을 사용할 수 있나요 ?
스크립트를 다시 작성해서 등으로 해볼 생각인데 xargs -P3 -n1 -I{}
그럴 것 같습니다.더러운큰 책.
답변1
내가 해냈어!
function convert_db() {
echo Converting $1
# Check if the table is MyISAM (we don't want to convert InnoDB tables over and over again)
TABLES=$(echo "SELECT TABLE_NAME FROM information_schema.TABLES where TABLE_SCHEMA = '$1' and ENGINE = 'MyISAM'" | $MYSQL_COMMAND)
for TABLE in $TABLES ; do
echo Converting MyISAM $TABLE to InnoDB
echo "ALTER TABLE $TABLE ENGINE = INNODB" | $MYSQL_COMMAND $1
done
if [ "x$TABLES" = "x" ] ; then
echo No MyISAM tables found in $1 database
fi
echo
}
for DATABASE in $DATABASES ; do
convert_db $DATABASE &
done