タグ

SQLに関するy_rのブックマーク (12)

  • 「理論から学ぶデータベース実践入門」を読破するための参考資料 - 周回遅れのブルース

    先日来、ずっと「理論から学ぶデータベース実践入門」を読んで勉強中です。 私はどちらかと言えば下流メインで DB設計に関しては意見できる程度ですが、それでもSQLは割と書く方だしDB関連書籍もいくつか読んでたので、それなりに判ってたつもりでした。だけに、読めば読むほど、今まで RDBDB設計についてどれだけ勘違いしてたのか、つくづく身につまされる思いです。むかし「1ページに1度、あなたは激しくうなずく」とかいって宣伝してるありましたが、この読んでると、5ページに1度は、「おお、そうだったのかー!」と仰け反るような記述が出てくるので、当に驚かされますね。 理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus) 作者: 奥野幹也出版社/メーカー: 技術評論社発売日: 2015/03/10メディア: 単行(ソフトカバー)こ

    「理論から学ぶデータベース実践入門」を読破するための参考資料 - 周回遅れのブルース
    y_r
    y_r 2017/06/07
  • MySQL Casual Talks vol.10でトークしてきたMySQL的アンチパターン

    2024 ( 18 ) 5月 ( 1 ) 4月 ( 3 ) 3月 ( 6 ) 2月 ( 1 ) 1月 ( 7 ) 2023 ( 20 ) 12月 ( 3 ) 11月 ( 3 ) 10月 ( 1 ) 8月 ( 1 ) 5月 ( 2 ) 4月 ( 2 ) 3月 ( 3 ) 2月 ( 5 ) 2022 ( 27 ) 12月 ( 5 ) 10月 ( 1 ) 9月 ( 1 ) 8月 ( 5 ) 7月 ( 4 ) 6月 ( 3 ) 4月 ( 1 ) 3月 ( 3 ) 2月 ( 2 ) 1月 ( 2 ) 2021 ( 22 ) 12月 ( 4 ) 10月 ( 2 ) 9月 ( 6 ) 7月 ( 1 ) 6月 ( 3 ) 5月 ( 3 ) 4月 ( 1 ) 3月 ( 2 ) 2020 ( 42 ) 12月 ( 3 ) 10月 ( 2 ) 9月 ( 4 ) 8月 ( 3 ) 7月 ( 4 ) 6月 ( 6

  • InnoDBとREPEATABLE READとSELECT FOR UPDATEと楽観ロックその2 - もやぶろ

    前回の話に排他(行ロック)を絡めてみる。 Versionカラムを使った楽観ロックをしてみます。 ■ストーリー 1.セッション1 トランザクション開始 2.セッション2 トランザクション開始 3.セッション1 行情報取得→versionカラムを使って楽観ロックをした更新→commit or rollback 4.セッション2 行情報取得→versionカラムを使って楽観ロックをした更新→commit or rollback 楽観ロックなので、1行も更新できなかった場合はrollbackする想定です。 長いので1,2は省略しちゃいます。 READ COMMITTEDセッション1 mysql> select * from Version; +----+------+---------+ | id | text | version | +----+------+---------+ | 1 | i

    InnoDBとREPEATABLE READとSELECT FOR UPDATEと楽観ロックその2 - もやぶろ
    y_r
    y_r 2016/11/14
  • InnoDBとREPEATABLE READとSELECT FOR UPDATEと楽観ロックその1 - もやぶろ

    現場でちょっとはまった話。 InnoDBのトランザクション分離レベルhttp://dev.mysql.com/doc/refman/5.1/ja/innodb-transaction-isolation.html InnoDBはトランザクション分離レベルが選べますが、 デフォルトは「REPEATABLE READ」です。 Oracleは「READ COMMITTED」に近いとの事。(どこが違うんだろう。。) じゃあこの2つどう違うかというと、 READ COMMITTEDセッション1 mysql> begin; Query OK, 0 rows affected (0.00 sec) mysql> select * from Version; +----+------+---------+ | id | text | version | +----+------+---------+ |

    InnoDBとREPEATABLE READとSELECT FOR UPDATEと楽観ロックその1 - もやぶろ
    y_r
    y_r 2016/11/14
  • MySQL InnoDBのネクストキーロック おさらい - SH2の日記

    MySQLのInnoDBストレージエンジンは行ロックをサポートしています。しかしOracleと同じ感覚でアプリケーションを作っていると、思わぬところでデッドロックに出くわすことがあります。これはInnoDBのロック範囲がOracleよりも微妙に広いためです。 実際の例で確認してみましょう。 mysql> select * from t; +----+------+ | c1 | c2 | +----+------+ | 10 | a | | 15 | a | | 20 | a | | 25 | a | | 30 | a | | 35 | a | | 40 | a | | 45 | a | | 50 | a | +----+------+c1列は主キーになっています。1つめのセッションで以下のSQLを実行します。 mysql> set tx_isolation = 'repeatable-r

    MySQL InnoDBのネクストキーロック おさらい - SH2の日記
    y_r
    y_r 2016/11/14
  • 知って得するInnoDBセカンダリインデックス活用術!

    InnoDBはクラスタインデックスという構造になっている。今日はクラスタインデックスがどういうことかということを、皆さんに理解して頂きたい。もっとも理解して頂きたいポイントは「セカンダリインデックスのリーフノードには主キーの値が含まれている」ということだ。 主キーの構造InnoDBの主キーは次の図のように「データが主キーのリーフノードに含まれる」という構造になっている。このような構造をクラスタインデックスという。 このような構造になっていることには利点と欠点があるが、大きな利点は主キーの値で検索をすると非常に高速だということだ。主キーのリーフノードにたどり着いたときには、既にデータのフェッチも完了している。データとインデックスが別々に格納されているタイプのストレージエンジンでは、インデックスからデータの位置を読み取って、その後データファイルからデータをフェッチする。このように二段階の操作が

    知って得するInnoDBセカンダリインデックス活用術!
    y_r
    y_r 2016/11/14
  • 同時実行制御とSQLite3 - Qiita

    Intro 同時実行制御とは, 共有リソースにアクセスする複数のトランザクションを, いかに並列処理しつつ競合によるデータ破壊を回避するかを扱う分野である. 昨今のアプリケーションではクライアントが複数いることは珍しくない. 同時アクセスを許容せず, クライアントからの要求を直列的に処理できれば同時実行制御の課題は解決されるが, アプリケーションのレスポンスは極端に低下し使い物にならない. パフォーマンスの低下を抑えるためにトランザクションを並列化し, かつリソースの整合性を保証しなければならないため, 同時実行制御を考える必要が出てくる. Conflict 並列処理されるトランザクションの競合を制御しなかった場合の問題は主に4種類ある. 基的にデータの一貫性は保証されない. Dirty Read (w-r) コミットされていないデータを別のトランザクションから参照できてしまう問題. ト

    同時実行制御とSQLite3 - Qiita
    y_r
    y_r 2016/09/15
  • InfoQ: Web開発者が知っておくべき八つの分離レベル

    原文(投稿日:2009/3/15)へのリンク ACID特性はデータベース論の基礎の一つです。ACIDではデータベースの信頼性を保つために必要とされる4つの属性を定義しています。原子性(Atomicity)、一貫性(Consistency)、分離性(Isolation)、そして永続性(Durability)です。4つの属性はいずれも重要ですが、とりわけ分離性については最も柔軟に解釈されています。ほとんどのデータベースがいくつかの分離レベルを選択できるようにしていますし、最近は多くのライブラリがより極め細やかな分離レベルを作成するレイヤを追加しています。このように広範囲の分離レベルが存在している主な原因は、緩い分離レベルによって拡張性や性能が数桁のオーダーで異なることにつながるからである。 シリアライズ可能というのは最も古典的で高い分離レベルであり、一般的に使うことが出来るもので、多くの人がそ

    InfoQ: Web開発者が知っておくべき八つの分離レベル
    y_r
    y_r 2016/09/15
    トランザクション分離レベル。概念的には 8 個あるらしい。
  • Rails でトランザクション分離レベルを設定する方法

    MySQLのトランザクション分離レベル突然ですが問題です。MySQLのデフォルトのトランザクション分離レベルは何でしょうか? REPEATABLE READ This is the default isolation level for InnoDB. via. MySQL :: MySQL 8.0 Reference Manual :: 15.7.2.1 Transaction Isolation Levels ハイ、答えは「REPEATABLE READ」ですネ。 Railsでトランザクション分離レベルを設定続いての問題です。Railsにおいてトランザクション分離レベルを設定するにはどうしたらよいでしょうか? 実は Rails 3 と Rails 4 と Rails 5 以降ではトランザクション分離レベルの設定方法はそれぞれ異なっています。 Rails 3Rails 3の時代では ex

    Rails でトランザクション分離レベルを設定する方法
    y_r
    y_r 2015/10/23
  • トランザクション分離レベル - Wikipedia

    トランザクション分離レベル (トランザクションぶんりレベル)または 分離レベル (英: Isolation) とは、データベース管理システム上での一括処理(トランザクション)が複数同時に行われた場合に、どれほどの一貫性、正確性で実行するかを4段階で定義したものである。隔離レベル 、 独立性レベルとも呼ばれる。トランザクションを定義づけるACID特性のうち,I(Isolation; 分離性, 独立性)に関する概念である。 データベースへの読み書き(トランザクション処理)には処理時間が発生する。複数のトランザクション処理依頼がデータベース管理システムへ行われたとき、これらを処理する1つの方法は逐次的(Serial)に1つずつトランザクションを処理する方法である。トランザクション処理に処理時間がかかることから、後に行われた処理は先に行われた処理が完了するまでの間「待ち」の状態になってしまう。 待

    y_r
    y_r 2015/10/23
  • トランザクション分離レベルについて極力分かりやすく解説してみた[SQL] - 明日になったら本気出せる

    こっちに移動 qiita.com

    トランザクション分離レベルについて極力分かりやすく解説してみた[SQL] - 明日になったら本気出せる
    y_r
    y_r 2015/10/23
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    y_r
    y_r 2007/06/05
  • 1