2014-09-28 32 views
0

我有我的數據庫問題,我收集轉儲到其他數據庫來分析它,我已創建表引用日期檢查,所以當我看到我的界面phpmyadmin,我看到我的表大小相等於16Kio兩個日期與ID!爲什麼我的數據相對於實際大小而言太大?

我在這裏看到文檔http://dev.mysql.com/doc/refman/5.1/en/storage-requirements.html 和日期類型大小是3個字節...差異太大,我對所有數據都有問題! 對於一次轉儲,原始轉儲的大小爲1.9Mo,在我的數據庫中大小爲5Mo!

我不知道問題在哪裏?

回答

2

是沒有問題的,

在MySQL數據庫不僅是數據,你必須考慮到使用的空間:

  • 表定義
  • 表索引(> =表數據)
  • 表格數據

每種字段類型具有不同的存儲方法。

轉儲文件只包含表格定義和數據作爲SQL插入。

檢查你的數據庫結構和樣品轉儲:

你的數據庫中存儲爲InnoDBUTF8,在你的轉儲使用MyISAM存儲與latin1,是一個很大的區別,因爲UTF字符集使用更多的空間來存儲字符串/ varchar數據和InnoDB使用額外的空間,因爲該表物理存儲在InnoDB文件中。

我選擇轉儲文件和一個表,然後創建使用的是InnoDB與UTF8相同的表,請參閱尺寸的區別:

mysql> call tools.sp_status(database()); 
+---------------------+--------+-------+---------+-------------------+ 
| Table Name   | Engine | Rows | Size | Collation   | 
+---------------------+--------+-------+---------+-------------------+ 
| BDDJoueurs   | MyISAM | 33981 | 2.47 Mb | latin1_swedish_ci | 
| BDDJoueurs_unicode | InnoDB | 33981 | 6.03 Mb | utf8_unicode_ci | 
+---------------------+--------+-------+---------+-------------------+ 

我認爲你正使用InnoDB來分析,也許是好主意將您的整合數據更改爲保存您的字符集的MyISAM。

注意:我使用自定義show table status

+0

是的,但有一個真正的問題,我有一年的轉儲分析,所以365 * 1.9Mo = 693M我知道其他人使用max 170Mo來分析我的模型365 * 5Mo = 1 825Mo!根本不可能! – Freddy 2014-09-28 14:52:47

+0

Mo是什麼?是兆字節? – 2014-09-28 14:53:55

+0

您可以顯示錶格定義和樣本數據嗎? – 2014-09-28 14:55:24

0

表大小不是行數的簡單倍數,更多與頁面大小有關。對於單個頁面,16KB聽起來正確(請參閱mysql documentation)。你的兩行將少於1頁,所以1頁就足夠了。

還有其他的開銷太大了索引,元數據等

BTW什麼是Mo,一個Kio

相關問題