2

テーブル(2)の合計レコード値を保持するテーブル(1)があります。これは、ページが表示されるたびに select count を実行しなくても、ユーザーに合計値をすばやく表示できるようにするためです。

私の質問:

私は、新しいレコードが入ったときにテーブル (1) の合計レコード値を更新するか、5 分ごとにスクリプトを実行してテーブル (1) の合計レコード値を更新するかについて議論しています。

問題は、1 日に多くのレコードを作成することを計画しているため、それぞれのレコードが追加で更新されることになります。

ただし、スクリプトを実行すると、テーブル (1) のすべてのレコードに対して実行する必要があり、その更新クエリには、テーブル (2) のレコードをカウントするサブクエリが含まれます。このスクリプトは、同期を保つために 5 ~ 10 分ごとに実行する必要があります。

table(1) は急速に拡大することはなく、おそらくピーク時には約 5000 レコードに達する可能性があります。table(2) は、短期間で 100 万を超える大量のレコードを取得する可能性があります。

いくつかの提案を聞きたいです。

4

2 に答える 2

2

これは、PHP によって開始された 2 番目のクエリを使用するのではなく、同じトランザクションの一部としてテーブル 1 を自動的に更新するテーブル 2 のトリガーが役立つ場合があります。これはまだわずかなオーバーヘッドですが、PHP コードの大きなオーバーヘッドではなく、データベース自体によって処理され、ACIDly でテーブル 1 カウントの精度が維持されます (トランザクションを使用する場合)。

于 2013-06-15T22:37:10.927 に答える