我想问的是这时候我们操作的表会被锁定吗
12 个解决方案
#1
和数据库类型也有关,是会发生死锁,例如一次插入百万数据耗时五分钟之类的,会影响其他人查询,这也是自身锁机制吧,但A不会得到B返回的id,这样就乱套了,具体没太研究过,全当顶起~
#2
我猜应该不会吧,要人为设置,不然高并发下怎么使用数据库呢!
#3
应该不会吧!如果id设置为主键且为自增的话,B就根本不会得到A的id,所以你说的那种情况不会发生,否则如果遇到高并发,就乱套了...
#4
是的 这时候我们操作的表会被锁定
在你没有关闭数据库连接之前,其他用户对数据库的任何操作都不会反映到你这里
可以这样理解:连接数据库后,操作的只是数据库的一个副本
在你没有关闭数据库连接之前,其他用户对数据库的任何操作都不会反映到你这里
可以这样理解:连接数据库后,操作的只是数据库的一个副本
#5
数据库有自己的机制来处理这些问题。
你这种现象是传输延迟的问题。
你这种现象是传输延迟的问题。
#6
mysql_insert_id 获取的id是安全独立的。你可以放心使用
#7
恩,谢谢大家
#8
mysql_insert_id()可以安全的返回a的id,至於是否會亂套的問題這是mysql自身需要處理的基本操作,你想太多了,钻了牛角尖
#9
还是有可能的啊
不然为什么 sql 要 lock table 的操作? 数据库不会自己处理这种并发冲突的吧?
不然为什么 sql 要 lock table 的操作? 数据库不会自己处理这种并发冲突的吧?
#10
4楼正解,
#11
那就是说看不到表里的全局数据了?
假如: 数据表有两个字段 id, url;
规定 id 是自增,为主键。 url 保持唯一。
则客户端插入一个新 url 的操作是: 先查看数据表存不存在 url, 没有则 insert, 否则什么都不做。
照楼上说法: 两个客户端要插入相同一个 url,最后会插入2份?
假如: 数据表有两个字段 id, url;
规定 id 是自增,为主键。 url 保持唯一。
则客户端插入一个新 url 的操作是: 先查看数据表存不存在 url, 没有则 insert, 否则什么都不做。
照楼上说法: 两个客户端要插入相同一个 url,最后会插入2份?
#12
怎么没有人讨论了啊~~
#1
和数据库类型也有关,是会发生死锁,例如一次插入百万数据耗时五分钟之类的,会影响其他人查询,这也是自身锁机制吧,但A不会得到B返回的id,这样就乱套了,具体没太研究过,全当顶起~
#2
我猜应该不会吧,要人为设置,不然高并发下怎么使用数据库呢!
#3
应该不会吧!如果id设置为主键且为自增的话,B就根本不会得到A的id,所以你说的那种情况不会发生,否则如果遇到高并发,就乱套了...
#4
是的 这时候我们操作的表会被锁定
在你没有关闭数据库连接之前,其他用户对数据库的任何操作都不会反映到你这里
可以这样理解:连接数据库后,操作的只是数据库的一个副本
在你没有关闭数据库连接之前,其他用户对数据库的任何操作都不会反映到你这里
可以这样理解:连接数据库后,操作的只是数据库的一个副本
#5
数据库有自己的机制来处理这些问题。
你这种现象是传输延迟的问题。
你这种现象是传输延迟的问题。
#6
mysql_insert_id 获取的id是安全独立的。你可以放心使用
#7
恩,谢谢大家
#8
mysql_insert_id()可以安全的返回a的id,至於是否會亂套的問題這是mysql自身需要處理的基本操作,你想太多了,钻了牛角尖
#9
还是有可能的啊
不然为什么 sql 要 lock table 的操作? 数据库不会自己处理这种并发冲突的吧?
不然为什么 sql 要 lock table 的操作? 数据库不会自己处理这种并发冲突的吧?
#10
4楼正解,
#11
那就是说看不到表里的全局数据了?
假如: 数据表有两个字段 id, url;
规定 id 是自增,为主键。 url 保持唯一。
则客户端插入一个新 url 的操作是: 先查看数据表存不存在 url, 没有则 insert, 否则什么都不做。
照楼上说法: 两个客户端要插入相同一个 url,最后会插入2份?
假如: 数据表有两个字段 id, url;
规定 id 是自增,为主键。 url 保持唯一。
则客户端插入一个新 url 的操作是: 先查看数据表存不存在 url, 没有则 insert, 否则什么都不做。
照楼上说法: 两个客户端要插入相同一个 url,最后会插入2份?
#12
怎么没有人讨论了啊~~