标准 SQL中 针对同时执行的控制 有4 种隔离级别。 | |||
在逻辑处理中我们一般不希望以下几种现象发生: 脏读:一个事 务读 取了另一个未提交事 务 写入的数据。 | |||
不可重复读 :一个事 务 重新 读 取前面 读 取 过 的数据, 发现该 数据已 经 被另一个已提交事 务 修改。 | |||
幻读 :一个事 务 重新 执 行一个 查 询 ,返回一套符合 查 询 条件的行, 发现这 些行因 为 其它最近提交的事 务 而 发 生了改 变 。 | |||
隔离级别 | 脏读 | 不可重复读 | 幻读 |
读未提交 | 可能 | 可能 | 可能 |
读 已提交 | 安全 | 可能 | 可能 |
可重复读 | 安全 | 安全 | 可能 |
可串行化 | 安全 | 安全 | 安全 |
根据需求可以采取锁表,锁行等等来控制。 | |||
在用jdbc来操作数据库的数据,主要有两种方式。 | |||
一种是自动 提交,是默 认 方式, 这 种方式在比 较 复 杂 的 处 理中是不建 议 使用的。 毕 竟 逻辑 只有人能 够 控制。 | |||
自动 提交的 时 候, SQL 执 行的 时 候就提交了,即使回 滚 也没有用了。如果一个事 务处 理中某一个步 骤 出 错 ,出 错 前的 处 理已 经 提交到数据 库 。 | |||
另外一种就是非自动提交。人为控制事务。 | |||
这种方式如果没有commit的话,这个事务所插入的,更新的,删除的等等在处理的这段时间内,其他的事务是看不到的。只有提交之后其他事务才能看到数据。 | |||
如果一个事务处 理中某一个步 骤 出 错 ,出 错 前的 处 理并没有真正提交到数据 库,所以可以回滚到这个事务开始前的状态,就是等于这个事务什么也没干。这样能够保持数据的整合性。 | |||
在很多项目中好多开发人员(开发经验比较少的人员)并不是特别理解,代码写的也就不怎么严谨了。大学本科的教育并不是教你怎么编代码的,最主要是学习理论,提高自己的认知能力,思考能力,让自己能够触类旁通。 | |||
现在是开放的 时 代,新知 识 新概念 层 出不 穷 ,如果一味追求反而 过 犹不及。 |