行のロックはテーブルのロックよりも優れているように思われるため、MyISAM テーブルから InnoDB に切り替えました。
問題は、以前に行っていた多くのことが機能しなくなったことです。
たとえば、閲覧履歴に基づいてユーザーにアイテムを推奨するスクリプトが 1 つあります。これは、推奨テーブルに行を挿入または更新することによって行われます。推奨事項の実際の計算は、SQL ステートメントを介して行われます。そのため、推奨ステートメントを実行し、すぐに (同じ PHP スクリプトで) その結果を要求して、その場でユーザーに表示できるようにすることがあります。MyISAM ではこれは完全に機能しましたが、InnoDB では古い結果が返されるか、結果が返されないことがあります (以前は何もなかった場合)。
また、何かのキューとして機能するテーブルもあります。それを使用するには、実行して更新し、この更新の結果を選択します。繰り返しますが、MyISAM では機能しますが、InnoDB では機能しません。
場合によっては、行がすぐに挿入または更新されるようにするにはどうすればよいですか? それ以外の場合は、クエリの速度が向上する場合は、挿入または更新の遅延に満足します。しかし、概説されている特定のケースでは、すぐに行う必要があります。これを行うPHPコマンドはありますか?それともMySQLの設定ですか?