首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

数据库事务与并发及锁的有关问题

2012-12-24 
数据库事务与并发及锁的问题对于事务与并发以前了解了下,也以为自己知道了是怎么回事。可是最近又被这事务

数据库事务与并发及锁的问题
    对于事务与并发以前了解了下,也以为自己知道了是怎么回事。可是最近又被这事务及并发搞得晕乎了(最近脑袋很不好使,缺氧啊),事务为了解决什么?多个事务的并发又有什么问题?于是google了,做个笔记,以后忘记了好方便查看。

    一直以来了解得并不清楚,平常我们用得最多的可能就是涉及到两个表数据操作时为了保证数据的一致性,就会在这些操作时加上事务,因为我们知道事务具有原子性、一致性。

原子性: 事务中的操作为一个整体, 要么都做, 要么都不做. 即一旦事务出错, 就回滚事务.
一致性: 事务开始前, 数据库中的数据具有一致性, 事务结束时, 数据库中的数据仍具有一致性.
隔离性: 一个事务不能被另一个事务干扰, 退一步讲, 一个事务被另一个事务干扰的话, 为了防止出错, 它就会回滚.
持久性: 事务完成后, 就不能再回滚了, 对数据库的改动是永久的.

    事务所能解决也就是一致性,而不能解决多个事务并发带来的数据的不正确的问题。比如两个并发事务同时对一条记录进行操作,后提交的事务的更新会覆盖前提交的事务。比如购买扣费时我们得判断用户的金额大于物品的价格,然后扣除。

select gold from user where id=1000 for update 

这样多线程并发时就在阻塞在select上, 不会进行下一步的操作, 可这也加大的锁的区域影响了并发性能,一般不建议作用这种形式。

热点排行