2009-11-20 78 views
9

ストアドプロシージャで使用する方が良い:一時テーブルまたはメモリテーブル?ストアドプロシージャのMySQLテンポラリテーブルとメモリテーブル

このテーブルは、レポートのサマリーデータを格納するために使用します。

開発者が認識すべきトレードオフはありますか?

CREATE TEMPORARY TABLE t (avg (double)); 

または

CREATE TABLE t (avg (double)) ENGINE=MEMORY; 
+0

メモリは、ORACLEで同じGLOBAL TEMPORARYているのですか? – zloctb

答えて

7

2人のうち、私は報告のために一時テーブルを使用します。

メモリテーブルには、ユーザーセッション間でデータが格納されているため、他のユーザーからのデータを使用しないように毎回切り捨てる必要があります。あなたのニーズに応じてメモリテーブルを維持するために必要なものを置いていると仮定すると、メンテナンスの観点から一時テーブルは少し安全です。

4

一時テーブルは、あなたのセッションの間に存在します。 Engine = Memoryで宣言されたテーブルは、ユーザーセッション/接続を越えて永続しますが、MySQLインスタンスの存続期間内にのみ存在します。したがって、MySQLが再起動された場合、テーブルは消えてしまいます。

8

これはなぜ2つのオプションに制限されますか?

メモリエンジンが実際にここで使用されているかどうかを確認する方法はわかりませんが、どのように動作しますか。 MySQLでは

関連する問題