2013-09-28 82 views
0

我有一張表在InnoDB引擎中存儲了約100,000行數據。我只是將數據複製到內存引擎表中,但是我發現新數據的大小遠遠大於orignal表。爲什麼?爲什麼內存引擎比InnoDB引擎存儲大得多?

| Rows | Engine | Size | 

| 96702 | Memory|741MB| 

|96952|InnoDB|28MB| 

爲什麼?

+0

在兩者上都做一個顯示錶? – exussum

回答

0

內存引擎表使用固定長度的行存儲格式。可變長度類型(如VARCHAR)使用固定長度進行存儲。

注:從InnoDB引擎加載數據到存儲引擎是一個真正的SQL反模式(由於數據複製)。你真的應該在MySQL服務器上配置InnoDB緩衝池。由於內存引擎是基於行鎖的,因此InnoDB將優於具有多個客戶端的內存引擎。

請參閱the documentation on Memory engine's

+0

我實際上在做一個ETL操作,它會頻繁使用這組數據。所以我只是想將它存儲到內存中以避免從原始數據重複加載。如果你說的是反模式,我該如何實現這個功能? – brucenan

+0

我想你應該提出一個關於你的評論的新問題,包括所有的細節/存儲引擎/表結構/你需要什麼/你需要什麼數據/查詢行數/關於sqlfriddle的一些示例數據,這會使你的評論問題變得廣泛回答沒有細節,甚至可能在http://dba.stackexchange.com/上發佈此問題,因爲需要數據庫配置 –