У меня есть параллельный скрипт 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]server/$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 с различными параметрами.
Thank you pre
Arman.
Благодарю вас, я могу написать/обновить уникальную запись в поток, например: thread 1 управляет только файлами, начинающимися с 1 ???, thread 2 files 2 ???, только то, что я задавал себе вопрос, - это если каждый поток пишет то же самое Стол это не опасно? – Arman
Нет, база данных обрабатывает любые проблемы. Это то, что делают базы данных. Любая вставка, обновление или удаление автоматически выполняет любую необходимую блокировку. –