2017-05-12 3 views
1

Facebookのようなサイトでは、intまたはvarcharを使用していますか?たとえば、Facebookの投稿の数には、何十億もの数があります。投稿IDごとにintを使用するか、varcharを使用しますか? intの最大値は2,147,483,647なので、私は混乱しています。助けてください、ありがとう。多くのレコードでVarcharまたはint?

+2

'BIGINT'は18,446,744,073,709,551,615の値を扱うことができますが、シーケンス生成[例:自動インクリメント]は並列化に対する大きな障壁ですので、代わりにUUIDなどを使用する可能性があります。 – Sammitch

+0

@Sammitch申し訳ありませんが、どういう意味ですか?私は本当に理解していません –

+1

私は["スタック上のこの質問を引用します(http://stackoverflow.com/a/4638170/1415724):*" ... MySQLでBigIntの最大値は18,446,744,073,709,551,615です。 1秒あたりの行数は、あなたが数を使い果たす前に5849年かかります。」* –

答えて

3

BIGINTもあります。

十分以上だ署名された範囲-9223372036854775808

9223372036854775807の符号なし範囲は0 18446744073709551615.に

である:)

+0

ユーザーIDはどうですか?それは 'int'になると思いますか? –

+0

@ JasonBaleは一定期間のみ有効です。または、後でPSY江南スタイルのビデオクリップで状況を得ることができます。 Googleは、どんなビデオでもそれほど多くのビューに達するとは決して考えなかったと述べています。これは完全な説明です。 – Rulisp

3

@Sammitchに述べたように、UUIDは、長い値を生成することができますこれは32ビットintよりはるかに広い範囲を持っています。 UUIDは128ビットの値を生成します。

また、プライマリキーは複合プライマリキーにすることができますので、可能性の数を大幅に増やすことができます。

あなたはユーザーIDについて尋ねました。私は、署名された32ビットINTユーザーIDの値が不足しているサイトについて相談しました。その理由は、バグのために、作成された新しいユーザーごとに1000以上の値をスキップしていたからです。だから、一度に1を増やしていたユーザーIDよりもはるかに速く値を使い果たしました。

ユーザーIDをBIGINTにアップグレードする手助けをしました。これは、userテーブルと、userテーブルを参照していた他のテーブルが約30個ありました(なぜなら、他のテーブルがまだINTを使用していて大きな値を参照できない場合に、 。

私の答えはInteger overflow what will be nextも参照してください。

+0

実例に感謝します! +1 –

関連する問題