MySQL维护命令集锦--查看表的状态(show table status)

查看表的引擎类型等状态信息:
show table status from
[root@mail ~]# mysql -h 192.168.1.250 -uroot -p -e "show table status from upload/G"|grep -A1 -B1 -i name

...
*************************** 30. row ***************************
           Name: ac_upload_system_announce
         Engine: MyISAM
--
*************************** 31. row ***************************
           Name: ac_upload_tag
         Engine: InnoDB
--
*************************** 32. row ***************************
           Name: ac_upload_user
         Engine: InnoDB
--
*************************** 33. row ***************************
           Name: ac_upload_user_account
         Engine: InnoDB
...

下面这句能看到某个表的所有状态信息:
[root@mail ~]# mysql -h 192.168.1.250 -uadmin -p -e "show table status from upload/G"|grep -i -B1 -A17 '/'
*************************** 32. row ***************************
           Name: ac_upload_user
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 118754
 Avg_row_length: 269
    Data_length: 32047104
Max_data_length: 0
   Index_length: 7340032
      Data_free: 0
 Auto_increment: 173874
    Create_time: 2009-03-06 04:31:59
    Update_time: NULL
     Check_time: NULL
      Collation: utf8_bin
       Checksum: NULL
 Create_options:
        Comment: InnoDB free: 130048 kB


[root@master ~]# mysql -uroot -p -e "show table status from upload like 'ac_upload_pm'/G"
*************************** 1. row ***************************
           Name: ac_upload_pm
         Engine: MyISAM
        Version: 10
     Row_format: Dynamic
           Rows: 434732
 Avg_row_length: 1162
    Data_length: 505249200
Max_data_length: 281474976710655
   Index_length: 4463616
      Data_free: 0
 Auto_increment: 469941
    Create_time: 2008-12-18 14:49:58
    Update_time: 2008-12-25 01:08:05
     Check_time: NULL
      Collation: utf8_bin
       Checksum: NULL
 Create_options:
        Comment:

命令介绍:如果是myisam存储引擎,那么行数是精确的。如果是inndob引擎,Max_data_length的值总显示为0,不知道为什么。一个公式:

Data_length/
Rows = Avg_row_length

[root@master ~]# myisamchk -dv /var/lib/mysql/upload/ac_upload_pm

MyISAM file:         /var/lib/mysql/upload/ac_upload_pm
Record format:       Packed
Character set:       utf8_general_ci (33)
File-version:        1
Creation time:       2008-12-18  6:49:58
Status:              changed
Auto increment key:              1  Last value:                469940
Data records:               434732  Deleted blocks:                 0
Datafile parts:             434732  Deleted data:                   0
Datafile pointer (bytes):        6  Keyfile pointer (bytes):        5
Datafile length:         505249200  Keyfile length:           4463616
Max datafile length: 281474976710654  Max keyfile length: 1125899906841599
Recordlength:                  643

table description:
Key Start Len Index   Type                     Rec/key         Root  Blocksize
1   2     4   unique  long                           1      3322880       1024

注意:
Max datafile length:最大数据尺寸(.MYD) 256TB
Max keyfile length: 最大索引尺寸(.MYI) 1PB
--------------------------------------------------------------------------------
命令参数解释:

SHOW TABLE STATUS [FROMdb_name] [LIKE 'pattern']

SHOW TABLE STATUS的性质与SHOW TABLE类似,不过,可以提供每个表的大量信息。您也可以使用mysqlshow --statusdb_name命令得到此清单。

本语句也显示视图信息。

对于NDB Cluster表,本语句的输出显示Avg_row_lengthData_length列的适当值,不过BLOB列没有被考虑进来。另外,复制数量在Comment列中显示(作为number_of_replicas)。

SHOW TABLE STATUS会返回以下字段:

  •         Name

表的名称。

  •         Engine

表的存储引擎。在MySQL 4.1.2之前,本值被标记为Type。请参见第15章:存储引擎和表类型

  •         Version

表的.frm文件的版本号。

  •         Row_format

行存储格式(Fixed,Dynamic,Compressed,Redundant,Compact)。InnoDB表的格式被报告为RedundantCompact

  •         Rows

行的数目。部分存储引擎,如MyISAM,存储精确的数目。

对于其它存储引擎,比如InnoDB,本值是一个大约的数,与实际值相差可达4050%。在这些情况下,使用SELECT COUNT(*)来获得准确的数目。

对于在INFORMATION_SCHEMA数据库中的表,Rows值为NULL

  •         Avg_row_length

平均的行长度。

  •         Data_length

数据文件的长度。

  •         Max_data_length

数 据文件的最大长度。如果给定了数据指针的大小,这是可以被存储在表中的数据的字节总数。mysql5以后的版本所能支持的最大存储容量是非常大的,上面的 列子为256TB。这时表的最大存储容量主要受限于OS了。不过到现在,Linux ext3 fs支持单个最大文件尺寸2T了,所以基本这个问题不必过于担心了。存储引擎是innodb的话,这个值在show table status显示的值总是为0,不知道为什么。

  •         Index_length

索引文件的长度。

  •         Data_free

被整序,但是未使用的字节的数目。

  •         Auto_increment

下一个AUTO_INCREMENT值。

  •         Create_time

什么时候表被创建。

  •         Update_time

什么时候数据文件被最后一次更新。

  •         Check_time

什么时候表被最后一次检查。不是所有的存储引擎此时都更新,在此情况下,值为NULL

  •         Collation

表的字符集和整序。

  •         Checksum

活性校验和值。

  •         Create_options

CREATE TABLE同时使用的额外选项。

  •         Comment

创建表时使用的评注(或者有关为什么MySQL可以访问表信息的说明)。

在表评注中,InnoDB表报告表所属的表空间的空闲空间。对于一个位于共享表空间中的表,这是共享表空间中的空闲空间。如果您正在使用多个表空间,并且该表有自己的表空间,则空闲空间只用于此表。

对于MEMORY (HEAP)表,Data_length, Max_data_lengthIndex_length值近似于被整序的存储器的实际值。整序算法预留了大量的存储器,以减少整序操作的数量。

对于视图,由SHOW TABLE STATUS显示的所有字段均为NULL。例外情况是Name指示为视图名称同时Comment称为视图。

------------------------------------------------------------------------------
各参数信息解释见:http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html

Comment: it is the free space in the ibdata files or in the .ibd file.

你可能感兴趣的:(MYSQL)