SQL始めました

久しぶりの日記になります。
 
つい数時間前ぐらいから、初めてSQLを勉強し始めました。
色々なSQLの中から、とりあえずMySQLをやることになりました。
 
#データベースの理論は、だいぶ前から、だいたい頭の中に入ってます。言語としてのSQLが初めてなわけです。
レンタルサーバーが貧弱すぎたのと、本格的なアプリケーション開発を行う必要がなかったので、ずっと手をつけずに居ました。
 
とりあえず現在の理解では、ちゃんとデータベースを使う上では、ロックよりもトランザクションの概念の方が、色々な所がスッキリする気がしています。
 
ロック中にクライアント側が落ちた場合……等々。この辺は、データベース側で自動的に対応してくれるのが望ましい。
 
ところでトランザクションでは、デッドロックが起こる可能性が残る様な気がするんですが……しかしMySQLの教科書には、「トランザクション使う場合にはロック使うな」と書かれてる。
まぁ、デッドロックの起こりそうな複雑なデータベースの使い方はしてないから、良いかな。
 
そうそう、MySQLには、トランザクション中にデッドロックが起きた場合には、自動検出してくれるみたいなことが書かれていました。
これってトランザクション中にデッドロックが発生した場合、片方のトランザクションを強制失敗のロールバックさせるってことなんでしょうかね。
強制失敗させられた側は不愉快かもしれませんが、しかし最初からデータベースに接続失敗したとか思えば腹も立たない。
そう考えると、ますます、トランザクションに魅力を感じます。
 
失敗するときは、失敗する。それがデータベース。みたいな感じに思っておけば良いんかなぁと。
 
はてさて、ところで、トランザクションロールバックコストや、トランザクション中の更新後のコミット前に再度検索を行った場合のコスト等、経験があまりに少なくて、どうコーディングした方が高速なのか分かりません。
(実際コーディングしたにしても、テーブル内のレコード数や状況に依存する部分が大きすぎて、一意の答えがあるのかどうかw)
 
とりあえず今回は、テケトーにコーディングしておこうと思います。
 
#これを書いている時点で、まだINSERT文すら実行したことのない僕がいますw