2013-07-27 15 views
1

我有一個InnoDB表。 mysql的版本是'5.1.66-0 + squeeze1'。 我想看看錶格的大小。innodb沒有改變data_length和index_length

SHOW TABLE STATUS LIKE "tablename" 

我獲得:

'tablename', 'InnoDB', '10', 'Compact', '27', '606', '16384', '0', '49152', '4194304', '55', '2013-07-26 15:53:04', NULL, NULL, 'utf8_general_ci', NULL, '', '' 

我添加一行,並獲得:

'tablename', 'InnoDB', '10', 'Compact', '28', '585', '16384', '0', '49152', '4194304', '56', '2013-07-26 15:53:04', NULL, NULL, 'utf8_general_ci', NULL, '', '' 

爲什麼data_lengthindex_length沒有改變?

回答

0

這兩個變量都只是估計值。維護數據長度和索引長度的確切數字(字節數)的代價是過高的,因爲對於同時訪問的服務器,這將意味着序列化寫入。

InnoDB是一個高度併發的引擎;因此它選擇了粗略估計的路徑。

粗糙嗎?很粗糙的。一個50%-200%的「錯誤」是相當普遍的;我見過更多。