基本的に、リードを呼び出す営業担当者がいます。今は、それらを得るために "新鮮なリード"のクエリを試みました。これはMemcachedのリストの実行可能なソリューションですか?
新鮮なリードがない場合、「比較的新しい」クエリに移動します。私たちはこれらの「情報源」と呼んでおり、本質的により近い情報源は、実現可能な先を見つけるまで情報源を経由します。
これらのクエリはすべて同じテーブルをクエリし、異なるデータグループのみをクエリします。しかし、各クエリには複雑なソートがたくさんあります。テーブルへの挿入/更新(テーブルはInnoDB)では待ち時間がたくさんあります(デッドロックはありません。InnoDBには表示されませんステータス)私の推測では、たくさんの挿入/更新と組み合わせた遅い選択があります。
NOW、究極の質問です:私たちは、各ソースのDBを照会し、(システムに応じて明らかに変化)について100ishつかむと、memcachedの中でそれらをキャッシュすべき
。次に、クロージャがリードを要求すると、それらをキャッシュから送信しますが、キャッシュを更新して「is_acccepted」フラグを反映します。この方法では、キャッシュされたリードがなくなるたびに、各ソースを呼び出します。これは実行可能な解決策のように見えるんhttp://code.google.com/p/memcached/wiki/FAQ#Emulating_locking_with_the_add_command
-
はその後、我々はのmemcachedでシミュレートされたロックを使用することができますか?どんな勧告?私たちは、ロック待ちが絶望的かつ迅速に起こる可能性を最小限に抑える必要があります。
現在、すべてのトランザクションはREAD COMMITTED – mlebrun15
として読み込まれます。READ COMMITTEDは、データの整合性に依存する前にキャッシュとバッファがフラッシュするのを待たなければならないため、本来遅いです。 – jdarling
一時的なロックについて考えましたか?あなたはHIGH IDとis_accepted = falseを使ってテーブルを更新して、レコードを返すことができます。レコードが返されたときにis_acceptedを返してチェーンに戻ります。 – jdarling