私はフィールドを持つテーブルを持っている:: ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
mysqlの遅れ挿入タイムスタンプ
私の質問は、私は、このテーブルの上に遅延挿入を使用している場合、タイムスタンプは要求がキューイングされている時刻または時間ときになります、です挿入は実際に行われますか?
私はフィールドを持つテーブルを持っている:: ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
mysqlの遅れ挿入タイムスタンプ
私の質問は、私は、このテーブルの上に遅延挿入を使用している場合、タイムスタンプは要求がキューイングされている時刻または時間ときになります、です挿入は実際に行われますか?
の時間を取る必要がありますそれがまだない場合はmysql 5.1 dev docsから
:
スレッドは、代わりに、テーブルに 行を書くのINSERT 文を実行し、それが によって管理されているキューに の最終行をコピーしますハンドラスレッド。 構文エラーは、 スレッドによって検出され、クライアント プログラムに報告されます。
遅れ文が実行されるイベントの順序:すでに1
DELAYED
を得るために待ちますロックINSERT
を実行し、最後の行をキューに入れます。delayed_insert_limit
行を書き込み、実行キューが空の場合、DELAYED
ロックががスレッドを作成する必要があるかどうかに応じてかないとどのように解放され
SELECTS
文章の実行(ステップ0)と文の実行(ステップ3)との間の時間は変化するので、DELAYED
ロックを確認または取得するのに時間がかかります。次に、キューの大きさ(特に、delayed_insert_limit
行以上の場合)と、保留中のいずれかがあるかどうかに応じて、書き込みは予期しない時間だけ遅延します。これは、テーブルのスレッドが確立された後、要求がキューイングされているように、要求がキューに登録されたときに答えはあるが、要求が行われたときにそれは必ずしも正しくありません、実際の挿入
にかかわらずINSERT DELAYED
を使用する、またはテーブルが原因他のスレッドまたは更新またはその他もろもろにロックされている場合、値ts
がかかる場合INSERT
が発行された時間に等しいです。
実際にデータベースで行われたハンドラスレッドまたはINSERTによって作成された「ダミー」INSERTを意味しますか? –
コマンドがクライアントスレッドによって発行されたとき。 – Riedsio
私はあなたが正しいと思っています(しかしわかりません)。スレッド*がステートメントを実行して*レポート*構文エラーがあれば、実際にはCURRENT_TIMESTAMPも実際のタイムスタンプに「展開」するためです。 –