我使用InnoDB數據庫與單個文件配置(在/ var),所以沒有innodb_file_per_table。ibdata1有多少空間是元數據?
在MySQL工作臺,當我查詢使用的空間數據庫,此查詢
SELECT table_schema "Database", sum(data_length + index_length)/1024/1024 "Data Base Size in MB"
FROM information_schema.TABLES GROUP BY table_schema;
它說我有47 GB的數據。 然而ibdata1中的大小爲99 GB ...
我知道ibdata1中,包含了一些其他的事情等該表數據,例如表索引,MVCC(多版本併發控制)數據和表元
所以我的問題是:這是正常的,據說52 GB的ibdata1是medatada和一堆其他的東西?通常,ibdata1文件應包含的表數據旁邊有多少數據?
'innodb_file_per_table'可以引入性能處罰(它對我和其他幾個人都有效)。雖然我同意你的回答(我的+1),但我只是想評論說,轉換innodb_file_per_table可能會導致性能問題(更可能會導致它們承受更重的負載)。 –
@ N.B。 - 我同意,當然可以,但如果您有多個磁盤並將表文件符號鏈接到不同的主軸,它也可以提高性能。所以這是一個混合包。 –
感謝您的回答和評論。任何想法如何解釋空間的巨大差異(47GB的數據VS ibdata1文件大小爲99GB)? 我的sql查詢是否正常? 我還經常刪除不同表中的數百萬行來釋放空間。這可能是一個問題嗎? – Mathieu