2011-09-25 6 views
4

私は、明らかにPDO :: lastInsertIdの実装であるPDO :: lastInsertId関数を持つYii PHPフレームワークを使用しています。私のアプリケーションで数千人の同時ユーザーが非常に高速に挿入されている場合、この機能は信頼性が高く、挿入されたばかりのデータの自動インクリメント行IDを取得できますか?PDO :: lastInsertIdは非常に高速な挿入で信頼性がありますか?

私はちょうど挿入自体の後に少しの作業を行うために挿入した行のIDを取得する必要がありますが、挿入率が非常に高い場合は、矛盾した結果を引き起こすことはありません。

ありがとうございます!

答えて

12

はい、もちろん、心配する必要はありませんが、挿入クエリの直後にlastInsertIdを確認する必要があります。その間にその接続で他のクエリを実行する必要はありません。各PHPプロセスには別々の接続が必要です。

また、テーブルに1秒あたり数百または数千の挿入があると思われる場合は、インデックスを使用しないか、最小限のインデックスを使用することを検討してください。 MySQLの場合、MyISAMテーブルが優先されます。

+0

lastInsertId()の呼び出しは、挿入クエリの直後に行われます。私の心配は、他の同時ユーザーに関するものでした。 PHPプロセスはデフォルトで別々の接続を持っていますか? (私はyiiの中で最も具体的に思う?)。私に戻ってきてくれてありがとう。 – csjohn

+4

> PHPプロセスにはデフォルトで個別の接続がありますか?はい。 – stivlo

+0

+1非常に良い答え。一時的にインデックスを削除すると、挿入速度が増えるかもしれません(私は推測します)。 – Melsi

関連する問題