2

自動インクリメント BIGINT の一意の主キーを持つ架空のテーブルがあります。テーブルを分割することを選択した場合、主キー BIGINT はどうなりますか? シャーディングは BIGINT の容量を超えることを許可しますか? シャーディングは、重複したキーが表示されるのを防ぐために何かをしますか?

前もって感謝します...

4

1 に答える 1

1

私が理解しているように、NDB ストレージ エンジンは、シャードの数に対する最初の主キー列のモジュラスに基づいてシャードします。これにより、行を格納するノードが決定論的になり、クエリが行を要求したときにどのノードから読み取るかが決定論的になります。

つまり、複数のシャードに同じ主キー値を存在させることはできません。つまり、BIGINT の値の範囲はシャード間で分割されます。

いいえ、BIGINT の値の範囲を超えることはできません。BIGINT は非常に大きく、行ごとに数十億の id 値をスキップしない限り、BIGINT を使い果たす可能性は低いため、なぜ質問する必要があるのか​​疑問に思います。

はい、ノードへの値のマッピングは、各ノードで一意のキー チェックを実行できることを意味します。ただし、レプリケーションを使用する場合は注意が必要です。https://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-replication-issues.htmlを読む

于 2013-08-12T04:11:54.567 に答える