ちょっとした問題にぶつかりました。ストーリーは次のようになります。
複数のクライアント(現在23)で実行されるドキュメントアーカイブシステム(PHPで記述)があります。彼らのシステムでは、彼らは彼らの文書しか持っていません。毎晩、それらはすべてサイト上のマスターデータベース(中央サーバー)に「同期」する必要があります。中央サーバーから各MySQLデータベースにアクセスできるので、それらに接続しても問題ありません。
クライアントデータベースに接続し、同期列= '0000-00-00 00:00:00'(同期されなかったことを示すデフォルト)のテーブルからすべてのエントリを選択するスクリプトがあります。次に、各レコードを反復処理して中央サーバーに挿入し、クライアントデータベースレコードの同期時間をスクリプトが実行された時間に設定します。これは機能しますが、明らかに複数のクエリで大きなオーバーヘッドが発生し、問題に気づきました。
各クライアントは、1日に最大2000〜3000の奇数ドキュメントを生成できます。これらの大きな数では、時間がかかりすぎます(1秒/ 2ドキュメント)。
私の問題に対するより良い解決策はありますか?すべてが成功したかどうかを確認するためにログを作成する必要があるため、PHPスクリプトソリューションが望ましいです。
ありがとう
編集: 私の現在のプロセスは:
- 同期されていないデータをすべて選択します
- トランザクションを開始します
- 中央データベースサーバーにレコードを挿入します
- クライアントからドキュメントレコードを選択します
- ドキュメントを中央データベースサーバーに挿入します
- クライアントの同期列を更新します
- サーバーの同期列を更新します
- トランザクションをコミットする
これは、中央サーバーで実行されるスクリプトです。考えてみると、ステップ7を削除して、ステップ5の一部にすることができますが、処理時間を大幅に短縮することはできません。