スケーラブルな MySQL スキーマを作成する方法についてできる限り読んでいますが、これが良いアイデアかどうかはまだわかりません。
価値があるので、RDS を使用して EC2 でこのプロジェクトをホストしています。
私のデータベースには、読み取りよりも書き込みが多くなるコアテーブルがあります (約 70% の書き込みと 30% の読み取りが推測されます)。
ただし、テーブルに新しい行を作成するときは、5 秒ごとに更新を追加する必要があります。全体として、複数の行が毎秒追加/更新されるため、UPDATE ステートメントが約 1 秒ごとに実行されていることを意味します。
私が読んでいたことに基づいて、MySQLには、テーブルに書き込んでいるときに発生するテーブルロックと呼ばれるものがありますか? このテーブルも大量に読み取られるため、行で UPDATE ステートメントを使用すると、オーバーヘッドやロックが多すぎますか?
私のオプション(私が知る限り)は次のとおりです。
- 大きなテーブルに対して UPDATE ステートメントを頻繁に (1 秒ごと、またはそれ以上) 実行します。
- 行を作成して更新し、準備ができたら (行が完成するまで約 20 分)、ステージング テーブルからメイン テーブルに行を送信するステージング テーブルを用意します。
ステージング テーブルは、ユーザーがコンテンツを表示するまでに 20 分ほど待たされるので避けたいのですが、必要悪なのかどうか疑問に思っています。
他のアイデアはありますか?提案?
ありがとうございました!