1

さて、私はより少ない結合で実行することを目的とした一連のテーブルを作成しましたが、正規化されたデータベースを維持したいと思います。私のサイトにトラフィックが多いときにそれらを切り替える方法はありますか?

4

4 に答える 4

1

ページにアクセスするたびにインクリメントされ、''と呼ばれるインクリメントごとに1分ごとに1ずつインクリメント解除される0にリセットされるグローバルを作成しますpages_accessed_per_minute

2つの引数を取る関数を作成します。1つは上記のグローバルで、もう1つはスロットルの制限ですthrottleOn('pages_accessed_per_minute', '1000')

1分あたりにアクセスされるページ数が特定のポイント(この場合は1000)を超えて増加した場合は、他のデータベースを使用する代替phpスクリプトに交換してください。

if throttleOn('pages_accessed_per_minute', '1000') == true){
  include_once('dbAccess1.php');
}
else{
  include_once('dbAccess2.php');
}

ただし、include_onceを正しく使用していることを100%確信しているわけではありません。

また、ほとんどのサーバーには、共有ホスト上のユーザーのホームディレクトリにシンボリックリンクされたログがあることもわかりました。$tail -fこれらのログは、 (コマンドライン)を使用してライブで監視できます。サーバーがビジーになる可能性があるため、ポーリングよりも優れています。その場合は、フックに依存することをお勧めします。

于 2011-10-24T08:06:54.570 に答える
1

クエリを単純化するための場合は、いくつかの結合をバンドルできるビューを作成することをお勧めします。

于 2011-10-24T09:14:03.980 に答える
0

これは「本番環境」で実行できますが、これは非常に迅速に重要になる可能性があることに注意してください。

  • 必要な列を追加して、テーブルを変更します。
  • 新しい列にデータを入力します(スクリプトを使用して、1回にタッチされる行数を制御し、大量の負荷が発生しないようにします)
  • 新しい構造を使用して(Webサイト)スクリプトを変更します。最善の方法は、すべてのスクリプトを同時に更新することです。
  • 「populate-script」を再実行して、すべての行が実際に新しい形式であることを確認します
  • 不要な列/テーブルを削除します
于 2011-10-24T06:34:03.773 に答える
0

Q:それらを切り替える方法はありますか?A:もちろんです。別のテーブルセットに対して別のクエリを実行する別のPHPページにリダイレクトするだけです。

... でも ...

Q:テーブルの同期をどのように維持しますか?

Q:「サイトのトラフィックが多い」ことを警告するために利用できるメカニズムは何ですか?

于 2011-10-24T06:35:57.260 に答える