teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

修正

2017/05/06 01:28

投稿

SVC34
SVC34

スコア1149

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  Oracleではトランザクションは常に有効です。
2
2
  差異が生じているとしたらそれはトランザクションではなくコネクションプールの有無によるものではないでしょうか。
3
3
 
4
- SELECTのみの場合でも、2つ以上のSQLをREPEATABLE READ以上の分離レベルで実行するにはトランザクションが必要です。トランザクションを分けると前後で同じSQLを実行した場合の結果が変わってしまう可能性があるためです。またその逆として、COMMITで一度トランザクションを終了しなければ他の処理の更新結果を参照することは出来ません。
4
+ SELECTのみの場合でも、2つ以上のSQLをREPEATABLE READ以上の分離レベルで実行するにはトランザクションが必要です。トランザクションを分けると前後で同じSQLを実行した場合の結果が変わってしまう可能性があるためです。
5
5
 
6
6
  [Oracle Database 概要 11gリリース1(11.1)4 トランザクションの管理](http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05765-03/transact.htm)
7
7
 

4

追記

2017/05/06 01:28

投稿

SVC34
SVC34

スコア1149

answer CHANGED
@@ -5,4 +5,6 @@
5
5
 
6
6
  [Oracle Database 概要 11gリリース1(11.1)4 トランザクションの管理](http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05765-03/transact.htm)
7
7
 
8
- なお、SQL ServerやDB2のような通常のSELECTでも参照ロックが取得されるRDBMSではCOMMITを早めに明示的に行った方がよいです。REPEATABLE READ以上の分離レベルを使用するとトランザクション終了まで参照ロックが残り、ロック競合が生じやすいためです。
8
+ なお、SQL ServerやDB2のような通常のSELECTでも参照ロックが取得されるRDBMSではCOMMITを早めに明示的に行った方がよいです。REPEATABLE READ以上の分離レベルを使用するとトランザクション終了まで参照ロックが残り、ロック競合が生じやすいためです。
9
+
10
+ [Wikipedia トランザクション分離レベル](https://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E5%88%86%E9%9B%A2%E3%83%AC%E3%83%99%E3%83%AB)

3

追記

2017/05/06 01:06

投稿

SVC34
SVC34

スコア1149

answer CHANGED
@@ -1,7 +1,8 @@
1
1
  Oracleではトランザクションは常に有効です。
2
2
  差異が生じているとしたらそれはトランザクションではなくコネクションプールの有無によるものではないでしょうか。
3
3
 
4
- SELECTのみの場合でも、2つ以上のSQLをREPEATABLE READ以上の分離レベルで実行するにはトランザクションが必要です。トランザクションを分けると前後で同じSQLを実行した場合の結果が変わってしまう可能性があるためです。
4
+ SELECTのみの場合でも、2つ以上のSQLをREPEATABLE READ以上の分離レベルで実行するにはトランザクションが必要です。トランザクションを分けると前後で同じSQLを実行した場合の結果が変わってしまう可能性があるためです。またその逆として、COMMITで一度トランザクションを終了しなければ他の処理の更新結果を参照することは出来ません。
5
5
 
6
+ [Oracle Database 概要 11gリリース1(11.1)4 トランザクションの管理](http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05765-03/transact.htm)
6
7
 
7
- [Oracle Database 概要 11gリリース1(11.1)4 トランザクションの管理](http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05765-03/transact.htm)
8
+ なお、SQL ServerやDB2のような通常のSELECTでも参照ロックが取得されるRDBMSではCOMMITを早めに明示的に行った方がよいです。REPEATABLE READ以上の分離レベルを使用するとトランザクション終了まで参照ロックが残り、ロック競合が生じやすいためです。

2

修正

2017/05/06 01:01

投稿

SVC34
SVC34

スコア1149

answer CHANGED
@@ -1,6 +1,7 @@
1
1
  Oracleではトランザクションは常に有効です。
2
2
  差異が生じているとしたらそれはトランザクションではなくコネクションプールの有無によるものではないでしょうか。
3
3
 
4
- SELECTのみの場合でも、2つ以上のSQLをREPEATABLE READ以上の分離レベルで実行するにはトランザクションが必要です。ロックを解放してしまう前後で同じSQLを実行した場合の結果が変わってしまう可能性があるためです。
4
+ SELECTのみの場合でも、2つ以上のSQLをREPEATABLE READ以上の分離レベルで実行するにはトランザクションが必要です。トランザション分けると前後で同じSQLを実行した場合の結果が変わってしまう可能性があるためです。
5
5
 
6
+
6
7
  [Oracle Database 概要 11gリリース1(11.1)4 トランザクションの管理](http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05765-03/transact.htm)

1

追記

2017/05/06 00:37

投稿

SVC34
SVC34

スコア1149

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  Oracleではトランザクションは常に有効です。
2
- 差異が生じているとしたらそれはトランザクションではなくコネクションプールの有無によるものではないでしょうか。
2
+ 差異が生じているとしたらそれはトランザクションではなくコネクションプールの有無によるものではないでしょうか。
3
3
 
4
- SELECTのみの場合でも、REPEATABLE READ以上の分離レベルが機能するためにはトランザクションが必要です。ロックを解放してしまうと、前後で同じSQLを実行した場合の結果が変わってしまう可能性があるためです。
4
+ SELECTのみの場合でも、2つ以上のSQLをREPEATABLE READ以上の分離レベルで実行するにはトランザクションが必要です。ロックを解放してしまうと、前後で同じSQLを実行した場合の結果が変わってしまう可能性があるためです。
5
5
 
6
6
  [Oracle Database 概要 11gリリース1(11.1)4 トランザクションの管理](http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05765-03/transact.htm)