9

よろしければ、簡単な質問または意見をお寄せください。

データベース テーブルの UUID をいくつか生成する必要があります。

データベースとシステム間でもキーが一意である必要があるため、キーの自動インクリメントはそれをカットしません。UUID は正常に機能しますが、行がエクスポートされる一部のシステムでは出力が長すぎます。UUID_SHORT() はうまく機能し、その一意性を保証する MYSQL の条件を読みました。

しかし、UUID_SHORT() を使用して行の UUID を時々生成する場合、UUID() と同様に時間と空間で実際に一意になることを再確認したいだけです。

乾杯。

4

2 に答える 2

4

あなたの重要な質問は、UUID_SHORT()時間と空間の中でユニークな価値を生み出すかということでしたUUID(). MySQL が要求する特別な条件に従う限り、短い答えはイエスです。

長い答えは「はい」ですが、なぜそれを使用したいのですか? の唯一の明白な欠点UUID()は、その表現がストレージ効率が低く (64 ビット整数ではなく 36 文字の文字列を生成する)、ステートメントベースのレプリケーションでは使用できないことです。しかしUUID()、MySQL が .NET のために必要とする特別な条件について考える必要がないという大きな利点がありますUUID_SHORT()。条件が問題にならないことが確実で、1 レコードあたり 224 ビットすべてを節約したい場合は、使用しても問題ありませんUUID_SHORT()。ただし、特別な条件について懸念がある場合は、おそらくそれを避けるのが最善です.

特殊な条件に対する懸念の程度は、運用環境によって大きく異なります。再起動の合間にシステム クロックを決して逆に設定しないという要件mysqldは、私にとって大きな懸念事項です。多くの場合、サーバーはクロックを他のタイム ソース ( ntpUNIX では、Windows ではタイム サービス) と自動同期するように構成されています。この動作が期待どおりに実行されない場合、その状態を保証できない可能性があります。一貫して満たされています。


于 2013-09-30T13:21:16.290 に答える