-1

ホストが行った最近の変更の後、すべての auto_increment 列が 2 ずつ増加しています。これについて私のホストに電子メールを送った後、これは彼らが言ったことです:

このサイトは、負荷分散された新しい共有プラットフォーム上にあります。この動作は、新しいクラスターで想定されています。自動インクリメントは、テーブルのパフォーマンスや動作に実際には影響しません。また、テーブルでカウントを行い、インクリメントされた列を同じ方法で使用することもできます。データベースを直接確認すると、これらが 2 ずつ増加していることがわかります。

プラットフォーム全体でこの更新を実行すると、最終的にこの動作がすべてのサーバーに適用されます。

私が知りたいのは、彼らの言っていることは正しいですか? 私の考えでは、自動インクリメント列は2つではなく1つインクリメントする必要があります!!

これは、これを使用して注文番号などを生成する一部の古いサイトでいくつかの問題を引き起こす可能性があります。

しかし、私が持っている他のすべてのものは引き続き正常に動作しますが、少し面倒です.

4

2 に答える 2

3

ホストの詳細を無視して、コードの一部が常に 1 つずつ自動インクリメントに依存し、穴がない場合、コードは間違っています。これは保証されていないためです。

唯一の保証は、列に重複がなく、新しい行がその列の次のシーケンス値を持つことです。これは通常、最後の値 + 1 ですが、保証されていません。の値になることが保証されているため、たとえば、戻って穴を埋めることはありません。

于 2013-05-18T15:04:52.313 に答える
1

これは、主キーの衝突を防ぐためのマルチマスター MySQL セットアップでは非常に一般的です。

負荷分散された両方のサーバーに同時に行を追加すると、両方とも、たとえば 51 の auto_increment ID を使用して挿入を試みます。エラーが発生し、レプリケーションが中断されます。

したがって、2 台のサーバーのセットアップでは、サーバー 1 は 1、3、5、7 などを挿入し、サーバー 2 は 2、4、6、8 などを挿入します。

于 2013-05-18T15:21:15.220 に答える