私はいくつかのスレッドを持つ並列bashスクリプトを持っています。各スレッドはレコードが存在するかどうかをチェックし、それ以外の場合は新しい値を挿入します。 スレッドの並行性について気にする必要がありますか? ロック解除テーブルをロックするか、mysqlがそれを気にする必要がありますか?MySQL(MyISAM)テーブルを並行して更新するには?
私の更新は、コマンドライン上で行く:
#get.sh script...
# set status Downloading
mysql -uroot -pmypass -ss -e "use filestatus; call changeStatus(\"$1/$2\", 1)"
rsync -ar rsync://[email protected]/$2/ $1/$2/
if [ $? -eq 0 ];
then
# set status OK
mysql -uroot -pmypass -ss -e "use filestatus; call changeStatus(\"$1/$2\", 0)"
else
# set status ERROR
mysql -uroot -pmypass -ss -e "use filestatus; call changeStatus(\"$1/$2\", 2)"
fi
私は、異なるパラメータを持つ複数のget.sh呼び出します。
ありがとうございました
アルマン。
ありがとうございました、私はスレッドごとに一意のレコードを書いたり更新したりしています。たとえば、スレッド1は1から始まるファイルのみを管理します。スレッド2はファイル2を返します。テーブルは危険ではないですか? – Arman
いいえ、データベースは競合の問題を処理します。それがデータベースの役割です。挿入、更新、または削除は、必要なロックを自動的に実行します。 –