我有一個表,例如stock
:如何使用shell模擬併發SQL命令
SELECT * FROM stock;
+------------+----------+
| product_id | quantity |
+------------+----------+
| 1 | 100 |
+------------+----------+
我想嘲笑併發提交訂單,並同時降低股票:
UPDATE store SET quantity = quantity-${count} WHERE product_id = ${product_id}
我想知道這是否SQL是線程安全的。我只是用下面的方式來嘲笑並行操作:
for ((i=0; i<100; i++))
do
mysql -uroot -p123456 test -e "update stock set quantity=quantity-1 where product_id = 1" >/dev/null &
done
然後檢查,如果最終數量爲0。 我想知道這種方式是正確的?也就是說,它是否能夠正確發送併發SQL命令,就像100個用戶同時提交訂單一樣?
,但它不是一個單獨的線程我有一個'&'最後。 – zhuguowei
但我認爲你是對的,因爲sql執行速度非常快,所以實際上它是序列化的 – zhuguowei