2013-02-26 107 views
0

任何人都知道为什么InnoDB中的information_schema.tables.data_free始终为8388608,无论表中有多少行;为什么information_schema.tables.data_free总是8388608?

table_schema table_name table_rows data_free engine 

g33v1  appraise 0  8388608  InnoDB 

g33v1  areatype 12403  8388608  InnoDB 

g33v1  atype  581982  8388608  InnoDB 

g33v1  atype2  579700  8388608  InnoDB 

谢谢。

回答

0

我认为这是临时表的最大尺寸分配用于排序和其他需要硬盘空间的东西。因为同样的东西出现在其他情况下也

mysql> show global variables like '%tmp%'; 
+----------------+-----------------------+ 
| Variable_name | Value     | 
+----------------+-----------------------+ 
| bdb_tmpdir  | /usr/local/mysql/tmp/ | 
| max_tmp_tables | 32     | 
| tmp_table_size | 8388608    | 
| tmpdir   | /usr/local/mysql/tmp | 
+----------------+-----------------------+ 

mysql> show global variables like '%myisam%'; 
+---------------------------------+---------------+ 
| Variable_name     | Value   | 
+---------------------------------+---------------+ 
| myisam_data_pointer_size  | 4    | 
| myisam_max_extra_sort_file_size | 2147483648 | 
| myisam_max_sort_file_size  | 2147483647 | 
| myisam_recover_options   | OFF   | 
| myisam_repair_threads   | 1    | 
| myisam_sort_buffer_size   | 4194304  | 
| myisam_stats_method    | nulls_unequal | 
+---------------------------------+--------------- 
+0

嗨,维尼特。感谢您的回答。我再次检查了这个问题,并发现data_free与所有表相同的原因是因为我没有设置innodb_file_per_table。所以data_free意味着idbdata的data_free。也就是说,这个值应该等于所有的表格。是对的吗? – SarahCla 2013-02-26 07:21:49