我有一个表,例如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