2016-05-13 6 views
1

頻繁に変更される生データを持つデータベースがあります。 このデータのサマリーテーブルを作成するかなり複雑なプロセスがあります。切り捨て、1つのトランザクションに挿入MySQL

3つのテーブルのシーケンスを使用するこのテーブルを作成するためのストアドプロシージャを作成しました。私は1つのトランザクションにこれらの3件の問い合わせのすべてを移動した

TRUNCATE tablename ... 
INSERT INTO tablename ... 

:私はまだ更新された内容のデータを追跡していないとして、私は単にの配列を用いてこれらのクエリを移入(私はそれに取り組んでいます):

START TRANSACTION READ WRITE; 

    [Sequence of TRUNCATE/INSERT queries] 

COMMIT; 

コミット後すぐに結果の表が表示されると予想しましたが、表が空の場合は2-3秒の期間があるようです。これを修正する簡単な方法はありますか?

+0

この遅延が表示されるコンテキストとは何ですか? –

答えて

2

NO !! 、 トランザクションでTRUNCATEを使用することはできません。 切り捨ては穴テーブルファイルを削除して再作成します。 操作を切り捨てると、暗黙のコミットが発生します。

アイデア:

それはRENAMEで作業することができます。名前の変更は単一のトランザクションです

CREATE TABLE table_copy like your_table; 
INSERT DATA in table_copy; 
RENAME your_table TO your_table_old, table_copy TO your_table; 
DROP table_copy; 
+0

@ハンス - 私はいくつかのものを追加しました –

+0

ああ、問題は、そこに使用されているコマンドで座っている場合、それを解決していただきありがとうございます。 – Hans

+0

実際には、すべての行を削除するほうがよいでしょうか? – Hans

関連する問題