統計上の理由から、何百万もの書き込みを含むログ テーブルがあります。すべての列は int 外部キーです。また、各行にタイムスタンプ列を追加します。DATETIME が 8 ビットかかることを考えるとint(10) unsigned
、ストレージ スペース (およびその列のインデックス) を半分に削減するために使用します。
しかし、このコラムはいつ機能しなくなるのでしょうか。2038 年 1 月 19 日の午前 3 時 14 分 7 秒の時点で、値 9,999,999,999 は UNIX タイムスタンプの問題になります。ただし、MySQL の unsigned int は最大 4,294,967,295 までしか保持できず、タイムスタンプ 4294967295 は PHP アプリケーションで無効な数値を示しています。
では、これはどういう意味ですか?9999999999 まで到達できないため、MySQL での int タイムスタンプの保存は 2021 年のいずれかで終了しますか?
答え:
- 2147483647 は 2038 (9999999999 ではない) なので問題ありません。
unsigned
2147483647 は署名された MySQL int にうまく適合するため、必要ありません。