1

ケース:24時間ごとにすべてのデータを削除し、代わりに新しいデータを取得する必要がある巨大なテーブルがあります。

このテーブルからデータを読み取るためにユーザーをブロックせずに、このテーブルを切り捨てて新しいデータを挿入するにはどうすればよいですか?

私がやろうと思っていること:(どちらのオプションをより適切に書くか、より適切なオプションまたは標準ソリューションを提案してください)

オプション1:

 1. insert new data to temp table
 2. drop old table
 3. rename temp table to the table name

Option2(問題:ユーザーが途中のテーブルデータにアクセスできない):

 1. truncate the table
 2. insert new data to table
4

2 に答える 2

1

保持する古いデータがある場合: テーブルに id 列を追加します。行内のすべての列の値によって計算されたハッシュ値を入力します。新しいデータを一時テーブルにロードします。変更された新しい行で古いデータを更新します。それ以外の場合は、テーブルの名前変更にそれほど時間がかからないため、最初の解決策が適しています。

于 2012-09-24T09:44:52.027 に答える
1
1.insert new data to temp table
2.CREATE TABLE newtable select * from oldtable where 1=2
3.drop old table
4.INSERT INTO newtable select * from temp
于 2012-09-24T08:44:47.720 に答える