for 루프를 사용한 멀티스레딩

for 루프를 사용한 멀티스레딩

이것은 멀티스레딩을 사용하려는 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

관련 정보