タグ

2013年9月5日のブックマーク (2件)

  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 15.7.2.3 一貫性非ロック読み取り

    一貫性読み取りとは、InnoDB がマルチバージョンを使用して、ある時点でのデータベースのスナップショットをクエリーに提供することを意味します。 クエリーには、その時点よりも前にコミットされたトランザクションによる変更のみが表示され、その時点よりもあとのトランザクションまたはコミットされていないトランザクションによる変更は表示されません。 このルールの例外として、同じトランザクション内の以前のステートメントによる変更はクエリーに表示されます。 この例外によって、次のような異常が発生します。テーブル内の一部の行を更新すると、更新された行の最新バージョンが SELECT に表示されますが、いずれかの行の旧バージョンも表示される可能性があります。 その他のセッションで同じテーブルが同時に更新される場合、その異常は、データベースに存在しない状態でテーブルが表示される可能性があることを意味します。

    chanpon0
    chanpon0 2013/09/05
    トランザクション中は、同じselectデータを得る。別トランザクションでcommitされていても。for updateしましょう。
  • ke-tai.org > Blog Archive > MySQLとPostgreSQLのRepeatable Read時の挙動の違いについて

    MySQLとPostgreSQLのRepeatable Read時の挙動の違いについて Tweet 2010/7/2 金曜日 matsui Posted in サーバ | 1 Comment » モバイルとは全く関係ないですが、自分のメモ代わりに記事にしてみたいと思います。 たまたまテストしていて、MySQLとPostgreSQLのRepeatable Read時の挙動の違いを見つけました。 AさんとBさんという二人のユーザが同時に一つのレコードを更新している場合です。 user_tblのuser_typeというカラムを「0」→「1」にアップデートしています。 分離レベルはMySQL、PostgreSQLともにRepeatable Readです。 Aさん Bさん mysql> begin; Query OK, 0 rows affected (0.00 sec) トランザクション開始 my