Mr.Tの場所

特攻野郎Aチームじゃないよー

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  253  : 記事  0  : コメント  3709  : トラックバック  52

ニュース

  • 性別:男
  • 猫1:まる
  • 猫2:もろ
  • 猫3:にゃん左部郎
  • タバコ:男は黙ってJPS
[わんくま同盟] C#, VB.NET 掲示板

書庫

日記カテゴリ

Mr.Tです、こんにちは。

前回(http://blogs.wankuma.com/mrt/archive/2007/10/12/101615.aspx)の続きです。

 

トランザクションは、一連の流れにある複数の処理をまとめて管理するわけで、最終的な結果が、成功か
失敗かで、一貫性を保つことができます。

じゃあ、具体的に、データ更新中にアクセスしたら、どうなるん?というのは、やはり皆さん知ってるとは思います。
それを具体的にチョー簡単に、試してみましょう。

 

まずは、クエリのウィンドウ(Aとします)を開いて、次のようにSelect実行してみました。

20071013001

 

これに対して、もう一つクエリのウィンドウ(Bとします)を追加してみます。

追加したら、トランザクションをかけて、Update文を書き、その結果を見てみます。

20071013002

 

きちんと更新されています。この状態のまま、ウィンドウAに戻り、再度Selectを実行してみます。

 20071013003

 

さて、何も出てきません。どーなってんの?なんで?とか、最初は思いますが、

この状態では、いくら待っても表示が出てこないので、あきらめてクエリのキャンセルをします。

どうして出てこないのか?それの答えは、ロックにあります。

ロックは、Lockです。鍵のロックと同じですね。

 

SET TRANSACTION ISOLATION LEVEL:

http://msdn2.microsoft.com/ja-jp/library/ms173763.aspx

READ COMMITTED

他のトランザクションで変更されたが、まだコミットされていないデータを、ステートメントで読み取れないように指定します。これにより、ダーティ リードを防ぐことができます。現在のトランザクション内にある各ステートメント間では、他のトランザクションによるデータの変更が可能です。この結果、反復不能読み取りやファントム データが発生することがあります。これは SQL Server の既定のオプションです。

※引用中の赤色は、私がつけたもので、原文は黒色です。

きちんと書いてありますね。コミットされていないデータを読み取るのは、既定でできないようになっています。

20071013004

 

利用状況モニタで見ると、プロセスIDの53番が、55番をブロックしていることがわかります。ちなみに、LCK_M_Sというのは共有ロックを
示しています。(共有ロックってどんなん?ってのはここじゃ触れません)

とりあえず、ブロックしてるよ、というのがきちんとわかればいいわけですね。

決して、SQLServerが壊れたわけではないのです。

 

でも、読み取れるようにしたいのが人情。まあ、変更されたデータでなくとも、変更前の状態でもいいや、となれば
SQLSrever2005では、スナップショット分離というのができるようになっています。

スナップショットとは、ここでは、その時の状態を保存する、くらいの意味ですね。

 

いったんウィンドウBで、前の文をコメントアウトして、Rollback Tranしてください。

で、次のようにします。

20071013005

 

 最初に、スナップショット分離レベルでやるよー宣言してから、トランザクションをかけます。

 

で、ウィンドウAで、スナップショット分離でみるよーと指定して、再度Selectを実行してやると、

 20071013006

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

きちんと、表示できました。

で、ウィンドウBで、再度、全文コメントアウトしてから、RollBack tranしてください。

 

実は、もう一つ方法があります。トランザクションは、そのセッション中でトークン(鍵のようなものですね)を持っていて、そのトークンを

知ることで、トランザクションに参加することが出来ます。

ただし、この方法は、推奨されていません。

http://technet.microsoft.com/ja-jp/library/ms174403.aspx

この機能は、Microsoft SQL Server の将来のバージョンで削除されます。新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。代わりに、複数のアクティブな結果セット (MARS) または分散トランザクションを使用してください。詳細については、「複数のアクティブな結果セット (MARS) の使用」または「分散トランザクション (データベース エンジン)」を参照してください。

削除されます、と書いてあるくらいに強いわけなので、参考程度ですね。SQLServer2000でも利用はできるはずです。

20071013007

 

最初のSelectで表示された、MCE...という文字列をコピーして、ウィンドウAに次のようにして指定します。

20071013008

 

はい、同じようにできましたね。

 

最後に、プログラムで複数のアクセスがあった場合には、さっきみたいにロックされているとずっと待ってしまうのか?
という点ですが、ADOなどを使う時は、特に指定しないならば、CommandTimeoutでタイムアウトして制御を戻してくれます。

そのため、プログラムがフリーズ状態になってしまう、という現象にはなりません。

#トランザクションがかかっているなら、ちょっと待ってリトライしようよ、ということをしたくなるのですが...

投稿日時 : 2007年10月14日 2:42

コメント

# re: ちょー基本で簡単に、SQLServerでトランザクションの効果を確認する2 2007/10/14 2:49 けろ
あれ?SQL Server 2005 のデフォルトトランザクションレベルって、READ COMMITTED でしたっけ?
(begin tran した時にトランザクションレベルをつけてなかったので、省略するとどうなるんだっけかな?って思いましたです)

トランザクションレベルを明示的につけたサンプルの方が、わかりやすかったかなと思いました。(あくまで、個人的な勝手な意見ですいません)


# re: ちょー基本で簡単に、SQLServerでトランザクションの効果を確認する2 2007/10/14 3:12 Mr.T
つっこみ、ありがとうございます。
MSDSに間違いなければ、既定はRead Commitedです。

>トランザクションレベルを明示的につけたサンプルの方が、わかりやすかったかなと思いました。
あー、そういやそうですねぇ。
トランザクションレベルってナニ?ってレベルくらいの話と思ってもらえるとありがたいです。
へー、Read Commitedっていうのがあるんだー、
既定だとよめないんだー、
というのを「実感」してほしいな、と思った次第で。

他にも間違い、勘違い、適当などありましたら遠慮なくお願いします。

#あ、そういや最後のリトライの処理とか
#けろさん...エントリでやってもらえたりなんかしちゃうことありません?
#とかいってみたりするwww

# re: ちょー基本で簡単に、SQLServerでトランザクションの効果を確認する2 2007/10/14 12:50 けろ
あ、やっぱり。(既定はRead Commited)
それなら、このサンプルでOKですね。

>あ、そういや最後のリトライの処理とか
>けろさん...エントリでやってもらえたりなんかしちゃうことありません?

ぜひ、Mr.Tさんに差し上げますと言ってみるテストw
でも、おもしろそうですね。ちょっとネタにしてみたい気分ですw


# re: ちょー基本で簡単に、SQLServerでトランザクションの効果を確認する2 2007/10/14 13:11 けろ
それから、SnapShotですが、経験上、レスポンスが悪くて話になりませんでした。
(tempdbに同期データを格納するので)
中さんのアドバイスでtempdbのファイル分割等をやってだいぶ良くなったんですけどね。

UPDATEで、ロックの問題を避けるために、SnapShotは安全かなと思いますが、SELECTで使うときは、レスポンスや処理・用途に応じたトランザクションレベルを適切に設定すべきなんでしょうね。
(全部SnapShotにすればいいかというと、私の個人的な意見ではNOですね)

# sp_bindsession は、将来のバージョンでなくなってしまうのは、知りませんでした orz
  使うのを自粛しないといけませんね。勉強になりました。


# re: ちょー基本で簡単に、SQLServerでトランザクションの効果を確認する2 2007/10/14 14:51 Mr.T
>それから、SnapShotですが、経験上、レスポンスが悪くて話になりませんでした。
なるほど、tempdbにデータ格納するのは聞きかじってましたが、レスポンスは良くないわけですね。

やはり全部Snapshotにするのは私も意味がないとは思いますが、そうなると使いどころで、具体的にどういうケースがよいのかが問題になりますね。

>ぜひ、Mr.Tさんに差し上げますと言ってみるテストw
自分がやると、ちょー適当になりそうな予感と悪寒www
...いや、逆に考えたら、即効突っ込んでもらえて幸せ状態になれるのか?

# re: ちょー基本で簡単に、SQLServerでトランザクションの効果を確認する2 2007/10/15 0:50 けろ
>自分がやると、ちょー適当になりそうな予感と悪寒www

ぜひ、Mr.Tさんにやって頂きたいですね。
いい加減でもいいので、徐々に反応をみながら、修正するっていうのも、
おもしろいかもしれませんよ!

# erectile vacuum device 2021/07/07 20:16 hydroxychloroquine sulfate tabs 200mg
hydroxychlor tab https://plaquenilx.com/# risks of hydroxychloroquine

# re: ??????????SQLServer?????????????????2 2021/07/09 10:29 hydroxychloraquine
chloroquine amazon https://chloroquineorigin.com/# hydroxyclorine

# re: ??????????SQLServer?????????????????2 2021/07/25 13:42 hydroxycloquine
is chloroquine phosphate over the counter https://chloroquineorigin.com/# plaquenil 400 mg

# Software to support live stream - Facebook FPlusLive Full Cracked 2021/08/02 17:14 Matthewtoort
Software to support live stream - Facebook FPlusLive Full

<img src="https://plus24h.com/upload/editor/images/1_1(30).png">

FPlusLive Features FPlusLive User Guide
You need to live video on multiple walls, pages, groups at the same time, schedule live videos to live on walls, groups...
FPLUSLIVE FUNCTIONS
Live video, webcam on page wall, profile, group
Live video on multiple pages, walls, groups at the same time.
Live webcam on multiple pages, walls, groups at the same time.
Live screen on multiple pages, walls, groups at the same time.
Schedule live videos on multiple pages and walls.
Live repeats 1 or more videos.
Playback the video being livestreamed on facebook (Play Forward).
Live youtube videos to facebook.
Schedule a live video to the group
Schedule a live video to the group once or repeat daily.

Free Download Here:

https://filehug.com/FPlusLive.zip
https://filerap.com/FPlusLive.zip
https://fileshe.com/FPlusLive.zip

Thx

# re: ??????????SQLServer?????????????????2 2021/08/09 4:53 hydroxychlor tab
drug chloroquine https://chloroquineorigin.com/# hydroxyquine drug

# AccStores.com - Buy Facebook accounts and more! Bulk and aged social media accounts. High quality! 2021/08/31 10:20 AccstoresUtigo
A very good account store, it has been working for a long time. I buy for the purpose of earning money through social networks, on freelance exchanges. Accounts provide only high-quality ones, with different registration terms, and a wide geography. Personally, as a client, I am satisfied with everything, I see no reason to complain, the pricing policy is also reasonable. We plan to continue using the service.
Visit here
https://accstores.com

# You can double your BITCOIN in just 24 hours without any problems 2021/09/07 2:57 JamesBot
Your welcome to join with this program, You can double your BITCOIN in just 24 hours without any problems. Minimum is only 0.001BTC, Our Company Is Legit.

Visit

https://earn2xcoin.com
<img src="https://picfat.com/images/2021/08/18/Earn2xcoin.png">

Regards

# How To Double ETH Instantly In 2021 2021/11/03 15:16 Edwardlom
How To Double ETH Instantly In 2021

ETHER Double is a fully automated ETHEREUM investment platform operating with no human intervention.
Take full advantage of our fast and legit ETHEREUM doubler platform.
Our automated system gathers information from the blockchain transfers and cryptocurrency exchanges to study and predict the ETHEREUM price.
Our servers open and close thousands of transactions per minute, analyzing the price difference and transaction fees, and use that information to double your ETHEREUMS.
Our data centers are located on multiple locations around the world so that our system has 100% uptime guaranteed.

Visit link

https://etherdouble.com

Thanks a lot

# Свежие новости 2022/02/17 15:16 Adamhto
Где Вы ищите свежие новости?
Лично я читаю и доверяю газете https://www.ukr.net/.
Это единственный источник свежих и независимых новостей.
Рекомендую и Вам

# nLxizYLXmQiCxpYkm 2022/04/19 13:52 johnansaz
http://imrdsoacha.gov.co/silvitra-120mg-qrms

# spnmqmeqbauh 2022/05/08 13:10 pcenie
hidroxicloroquina 400mg https://keys-chloroquinehydro.com/

# Double Bitcoin in 24 Hours 2022/07/10 6:14 Josepherext

Double BTC is a fully automated Bitcoin investment platform operating with no human intervention. Take full advantage of our fast and legit Bitcoin doubler platform. Our automated system gathers information from the blockchain transfers and cryptocurrency exchanges to study and predict the Bitcoin price. Our servers open and close thousands of transactions per minute, analyzing the price difference and transaction fees, and use that information to double your Bitcoins. Our data centers are located on multiple locations around the world so that our system has 100% uptime guaranteed.

Trusted Bitcoin Investment platform with fully automated payouts
Receive your double Bitcoins in 24 hours
Only 0.005 BTC minimum and Unlimited BTC maximum investment limits
Easy to use interface for both new and experienced investors
Track your investment with our dynamic table showing most recent transactions
CDN powered website with SSL security and DDoS protection
100% uptime with zero chance for a transaction to fail

Click Here

https://doublebtc.net

thnx

# jbyedckvt@softbank.jp 2022/09/30 20:50 プロのウブロ 時計
こんにちは!
休暇を取ってすでに終わりました!
ご来店誠にありがとうございます。
^_^ 超人気!!!、是非とも当店をご利用下さい。
シャネル 新入荷:
当店では高品質、超人気、注目の最新流行のグッズなどの数々を取り揃えております。
更に、全品送料無料でご注文から一週間以内のお届けが可能となっておりますので
この機会に是非ともご利用頂けますように皆さまのご来店をお待ち申し上げます。
2022年の新しい年を迎えるに当って、皆さまのご多幸をお祈りいたします。
↓↓↓↓↓
プロのウブロ 時計 https://www.bagraku.com/buygo/miumiu/

# Test, just a test 2022/12/14 7:44 www.candipharm.com
canadian pharmacies ed pills https://www.candipharm.com/

# plaquenil cheap 2022/12/29 12:13 MorrisReaks
hydroxychloroquine tablets for sale https://www.hydroxychloroquinex.com/#

Post Feedback

タイトル
名前
Url:
コメント