1

1日あたり最大5,000の新しい行を格納するメインデータベースがあります。

いつでも最新の30日分のデータのみを含む2番目のデータベースが必要です。

したがって、30日より古い行を定期的にダンプし、新しい行をコピーするcronジョブを設定する予定です。

コピー部分の最適なデザインは何ですか?

  • MySQLのみを使用してオンザフライでコピーする
  • MySqlをtxtファイルにエクスポートし、次にMySqlをインポートして、一時ファイルを削除します
  • 行を繰り返して1つずつコピーするphpスクリプト

堅牢性とCPU/メモリ使用量を最小限に抑えたい

4

2 に答える 2

2

The quickest and most robust way is to perform the transfer directly in MySQL. Here are the steps involved:

First, create the second table:

CREATE TABLE IF NOT EXISTS second.last30days LIKE main_table;

Next, insert the records 30 days old, or newer:

INSERT INTO 
second.last30days
SELECT
*
FROM
main_table
WHERE
created >= CURDATE() - INTERVAL 30 DAYS
ORDER BY created;

Lastly, delete the records older than 30 days:

DELETE FROM 
second.last30days
WHERE
created < CURDATE() - INTERVAL 30 DAYS
ORDER BY created;

It would be advisable to not run the INSERT and DELETE statements at the same time.

于 2013-01-16T02:07:49.113 に答える
0

データベースが両方とも同じサーバーでホストされている場合。insert ... selectステートメントを使用するだけです。そうすれば、すべてを最小限に抑えることができます。1つのクエリ、および完了。

MySQL5.0-13.2.5.1。INSERT...SELECT構文"

于 2013-01-15T23:11:29.660 に答える