1
私はinnodbでMySQL 5.6を使用しています。我々は、次の2つのテーブルがあるとしましょう: 並行UPDATEまたはINSERT中にSELECTは一貫性を維持しますか?
create table order_head (
id int not null,
version int not null,
order_detail_count int not null,
primary key (id)
);
create table order_detail (
id int not null,
product_id int not null,
qty int not null,
order_head_id int not null,
primary key (id),
foreign key (order_head_id)
references order_head (id)
);
は、両方の二つのテーブルのために多くの同時
INSERTと
UPDATEはすべての時間を実行しているという状況を考えてみましょう。これらのトランザクションを実行するアプリケーションは、楽観的なロックでうまく設計されているため、同時実行では一貫性のないデータは作成されません。そのような状況下では
は、私は次のクエリを発行することについての懸念を持っている:
SELECT
*
FROM
order_head h
JOIN
order_detail d ON (h.id = d.order_head_id);
このクエリは、常にそれが一貫性のある結果が返されることを保証していますか?言い換えれば、このクエリは複数の異なるトランザクションのデータを混ぜ合わせることはありませんか?たとえば、レコード数が4
、一致しない結果がorder_head.order_detail_count
であり、3
であるとは限りません。
私はトランザクションをよく理解していないと思うので、参考文献(トランザクションに関する書籍など)への参考になることもあります。