タグ

2016年3月30日のブックマーク (14件)

  • 5.4. 排他制御 — TERASOLUNA Global Framework Development Guideline 1.0.0.publicreview documentation

    5.4.1. Overview¶ 排他制御とは、複数のトランザクションから同じデータに対して、同時に更新処理が行われる際に、データの整合性を保つために行う処理のことである。 複数のトランザクションから同じデータに対して、同時に更新処理が行われる可能性がある場合は、基的に排他制御を行う必要がある。 ここで言うトランザクションとは、かならずしもデータベースとのトランザクションとは限らず、ロングトランザクションも含まれる。 Note ロングトランザクションとは データの取得とデータの更新を、別々のデータベーストランザクションとして行う際に発生するトランザクションのことである。 具体例としては、取得したデータを編集画面に表示し、画面で編集した値をデータベースに更新するようなアプリケーションで発生する。

  • 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の日記
  • MySQLでお手軽デッドロック - jfluteの日記

    -- MEMBER_SEA は MEMBER の 1:n の子テーブル delete from MEMBER_SEA where MEMBER_ID = 3 insert into MEMBER_SEA ...(MEMBER_ID は 3) ん? 最初のdeleteが互いに「0件削除」だとデッドロック。別トランザクションのMEMBER_IDが別ID(例えば4)でもデッドロック。(とにかく両方のトランザクションでdeleteが0件であれば) これは... ネクストキーロックって? MySQLのInnoDBには「ネクストキーロック」という機構があります。 詳しくは、ぐぐってくれればOKですが、ひとまず参考になるオフィシャルサイトのページを。 => ネクスト キー ロック:ファントムの問題を防ぐ 難しいこと書いてありますねぇ。 「ギャップ」って何!? ここでいうインデックスレコードって!? とに

    MySQLでお手軽デッドロック - jfluteの日記
  • MySQLのautocommitとトランザクション分離レベルのメモ - Qiita

    概要 MySQL5.6のInnoDBエンジン使用時の自動コミットモードとトランザクション周りの調査メモです。 記事の前半は自動コミットやトランザクションに関係する設定値の参照、変更方法の確認で、後半は自動コミットモードとトランザクション分離レベルの組み合わせによるデータの見え方の確認を行います。 環境 Windows7 (64bit) MySQL 5.6.25 InnoDB 参考 InnoDB のトランザクションモデルおよびロック SET TRANSACTION 構文 バイナリログ形式の設定 設定値 自動コミットモード (autocommit) autocommit my.cnf

    MySQLのautocommitとトランザクション分離レベルのメモ - Qiita
  • MySQLでインデックスを使って高速化するならCovering Indexが使えそう - (゚∀゚)o彡 sasata299's blog

    2009年10月28日09:33 MySQL MySQLでインデックスを使って高速化するならCovering Indexが使えそう Linux-DB システム構築/運用入門 (DB Magazine SELECTION) 著者:松信 嘉範 販売元:翔泳社 発売日:2009-09-17 おすすめ度: クチコミを見る 最近、このを読んでいます。非常に面白いし、参考になります〜。中でもインデックスについての記事が特に興味深かったので簡単にまとめてみます。 前提 ・インデックスは検索性能には効果があるが、更新性能は落ちてしまう ・MyISAM と InnoDB ではインデックスの構造が違う ・インデックスは B+Tree インデックスと呼ばれ、ルート、ブランチ、リーフの階層構造になっている ・インデックスはソートされた状態で作成されている まずは MyISAM と InnoDB でのインデックス

  • DBMSのロック・分離戦略と同時実行制御 - マイクロソフト系技術情報 Wiki

    これを実現するための、ロック・分離戦略と、同時実行制御の仕組みは、 以下のようにOracleSQL Serverで大きな相違がある。 Oracleでは、一時領域を使用した「多バージョン法」(MultiVersion? Concurrency Control:MVCC)を使用する。 SQL Server(の既定の設定)では「ロック法」を使用する。 次節では、 「多バージョン法」 「ロック法」 の概要について説明する。 ※ なお、ドキュメントでは「多バージョン法」と「ロック法」の優劣については言及しない。 ↑ 多バージョン法 † 新旧の、複数のバージョンのデータを保持してデータの読み取り一貫性を保証するための仕組である。 このため、Oracleは、『マルチバージョン データベース』、『多バージョン データベース』などと呼ばれる。 Oracleでは、あるアプリケーションが更新トランザクショ

  • トランザクション分離レベルを理解するために実際に試してみる – sawara.me

    「トランザクション分離レベル」って今まで聞いたことはあったんだけど、なんのこっちゃわからんかったし、実用面で運用中に気にすることもなかったし、けど知らないままなのもなんだかなぁ、ってことで改めて調べてみました。 Wikipediaによりますと トランザクション分離レベル (-ぶんり-)または 分離レベル (英: Isolation) とは、データベース管理システム上での一括処理(トランザクション)が複数同時に行われた場合に、どれほどの一貫性、正確性で実行するかを4段階で定義したものである。隔離レベル 、 独立性レベルとも呼ばれる。トランザクションを定義づけるACID特性のうち,I(Isolation; 分離性, 独立性)に関する概念である。 Wikipedia「トランザクション分離レベル」より 重要なのはトランザクションのACID特性のI(Isolation; 分離性, 独立性)に関する概

    トランザクション分離レベルを理解するために実際に試してみる – sawara.me
  • MySQL/MariaDBとTransactdのInnoDBロック制御詳細 その1 - BizStationブログ

    今回から数回にわたり、TransactdのオペレーションとInnoDBにおけるロックについて解説します。 ロックについてはあまり良くわからなくてもとりあえずそれなりに動くアプリケーションは作れてしまいます。ですが、マルチユーザー環境でミッションクリティカルなアプリケーションを書くには、ロックの理解が不可欠です。ロックをうまく使って、矛盾や間違いのない読み書きをしつつ同時実行性も高いアプリケーションにしましょう。 その1では、Transactdを実装する上でMySQLのソースやドキュメントから得た知見を基に、InnoDBのロックの種類と分離レベルに応じてそれをどのように使うかをまとめてみます。 Index MySQLのトランザクション関連用語 MySQLのREPEATABLE-READ InnoDBのロック 行ロック (row-level locking) GAPロック GAPロック単体 ネ

    MySQL/MariaDBとTransactdのInnoDBロック制御詳細 その1 - BizStationブログ
  • VOYAGE GROUP エンジニアブログ : MySQL InnoDBのinsertとlockの話

    2015年03月08日17:06 カテゴリ MySQL InnoDBのinsertとlockの話 こんにちは。ECナビでアプリケーションエンジニアをやっている駒崎です。 今回はMySQLのInnoDBエンジンにおけるINSERTとロックの挙動について書きたいと思います。 はじめに アプリケーションでレコードの重複チェックをしてからINSERTをする。テーブルにはUNIQUE制約をかけてデータ不整合が起きないようにしている。という仕様はよくあるケースだと思います。 こういったケースでINSERTしたときにどのような仕組みが働いて重複データを防いでいるのだろう?アプリケーションで重複チェックをしてはいるけどMySQLではどんな挙動をしているんだろう?というのが気になったので調べました。 調べること INSERTした場合のロックの挙動 FOR UPDATE文で排他ロックをかけた場合のロックの挙動

  • 良く分かるMySQL Innodbのギャップロック - Qiita

    MySQLのロック ロックとはトランザクションの並列度を上げる為の並列スケジューリング方法の一つ トランザクションをサポートしているデータベースにおいては、トランザクションの並列数を上げる事が性能アップの一つの方法。 他のトランザクションに更新して欲しくないデータだけにロックをかけて、ロックされたデータ以外を更新するトランザクションは並列で実行される。 Innodbは行ロック? Innodbは更新対象の行だけをロックする。と思っていると、意外な落とし穴にハマる。 その一つがギャップロック。 ギャップロックを実際に起こしてみる サンプルテーブル idとstrがあるだけのシンプルなテーブル。idがPKで1~5までは順番に、その後、10,20と飛んで行が入っている。 通常の行ロック トランザクション1 select for updateでid=2の行を明示的にロック トランザクション2 id=1

    良く分かるMySQL Innodbのギャップロック - Qiita
  • Go言語(Golang) はまりどころと解決策

    Go の言語仕様はシンプルで他の言語に比べてはまりどころが少なくて学習コストが小さめな言語のように思います。しかし、それでもはまるところがないわけではないので、自分がはまって時間を無駄にしてしまったことを書き留めておきます。 念の為誤解のないように追記しておくと、この文書の目的は Go を批判することではなく GoGo であるがゆえに C++/Java/Python など利用者が Go を使い始めるときに困惑あるいは誤解するであろうポイントをまとめておくことで初めて Go を触る人がスムーズに Go を使い始められるようにすることです。私個人は Go はバランスがとれた良い言語でだと思いますし、気に入っています。 目次 interface と nil (Go の interface は単なる参照ではない) 文献 メソッド内でレシーバ(this, self)が nil でないことをチェ

  • therubyracer considered harmful - なるせにっき

    要約 therubyracerはやめてexecjsからnodeコマンド使え。 解説 Rails 3.1 で Asset Pipeline が導入されて以来、Gemfileにgem 'therubyracer'と書く人も増えたのではないでしょうか。しかし、それがどの程度のリスクを背負っているのか自覚のない人も多いように感じます。 平時はChrome由来のJavaScriptエンジンであるv8を手軽にインストールできてスーパー便利なtherubyracer.gem & libv8.gemですが、その潜在的なリスクには震えるものがあります。最初にこれが世を騒がせたのは3年前のクリスマス前のことだったでしょうか。 v8 この問題の背景には、質的に「v8のビルドは難しい」という点があります。雑にバージョンを選ぶとビルドが通りません。そもそもがChromeのためのものだからなんでしょうか。リリースす

    therubyracer considered harmful - なるせにっき
  • RSenseの導入 : とある技術者の外部記憶媒体

    rubyの開発支援ツールであるRSenseを導入します。 導入の手順としては、RSenseの体を公式サイトからダウンロードし、ユーザマニュアルに従って作業するだけなんですが、neocomplecacheと一緒に使う場合にはちょっとした設定の追加が必要となるので、備忘録として残しておきたいと思います。 公式サイトはこちらです。 [http://cx4a.org/software/rsense/index.ja.html] ちなみに、RSenseを利用するためにはJRE1.5以上が必要となります。 作業を行ったCentOS5.7ではインストール済みのjavaのバージョンが古かったのでyumで新しいバージョンをインストールしました。 (これが原因でインストール後も動作せずにちょっと悩みました・・・。動作要件はちゃんと見なきゃですね) # yum install java-1.6.0-openj

    RSenseの導入 : とある技術者の外部記憶媒体
  • Amazon Linuxの特徴とCentOSとの違い まとめ | DevelopersIO

    はじめに Amazon EC2でLinuxサーバを新規構築する場合は弊社ではAmazon Linuxをお勧めすることが多いです。その理由としてはAWSのツールが最初から入っていてAmazonのサポートも受けやすいからです。Amazon Linuxを使ったことがない方はどんなディストリビューションなのか特徴を知りたいのではないかと思いますので、CentOSとの違いも含めまとめてみました。以下はAWS公式サイトのページになります。 Amazon Linux AMI Amazon Linuxの特徴 Amazon LinuxはRedHat系のディストリビューションになります。CentOSやRHELを使ったことがある方なら同じように使えるのではないかと思います。CentOSとの比較をしながらAmazon Linuxの特徴を見ていきたいと思います。CentOSはAWS MarketPlaceにあるCe

    Amazon Linuxの特徴とCentOSとの違い まとめ | DevelopersIO