2

データベースのサブセットを分析するために、410 万件のレコードをオフライン システムにインポートしています。インポートを実行しているので、次を使用して進行状況を確認しようとしています。

SHOW TABLE STATUS LIKE 'MailIssueElement'

奇妙なことに...さまざまな時期に、 の値が高くなったり低くなったりしていますRows。私はそれが上がることだけを期待します。出力のサンプルを次に示します。

mysql> show table status like 'MailIssueElement' \G
*************************** 1. row ***************************
           Name: MailIssueElement
         Engine: MyISAM
        Version: 10
     Row_format: Dynamic
           Rows: 2818307
 Avg_row_length: 120
    Data_length: 338392232
Max_data_length: 281474976710655
   Index_length: 158029824
      Data_free: 0
 Auto_increment: 10248973
    Create_time: 2010-02-03 10:58:41
    Update_time: 2010-02-03 11:04:06
     Check_time: 2010-02-03 10:58:53
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options:
        Comment:
1 row in set (0.60 sec)

mysql> show table status like 'MailIssueElement' \G
*************************** 1. row ***************************
           Name: MailIssueElement
         Engine: MyISAM
        Version: 10
     Row_format: Dynamic
           Rows: 1870294
 Avg_row_length: 119
    Data_length: 223251912
Max_data_length: 281474976710655
   Index_length: 107688960
      Data_free: 0
 Auto_increment: 10248973
    Create_time: 2010-02-03 10:58:41
    Update_time: 2010-02-03 11:04:13
     Check_time: 2010-02-03 10:58:53
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options:
        Comment:
1 row in set (0.35 sec)

mysql> show table status like 'MailIssueElement' \G
*************************** 1. row ***************************
           Name: MailIssueElement
         Engine: MyISAM
        Version: 10
     Row_format: Dynamic
           Rows: 3074205
 Avg_row_length: 120
    Data_length: 369507112
Max_data_length: 281474976710655
   Index_length: 171537408
      Data_free: 0
 Auto_increment: 10248973
    Create_time: 2010-02-03 10:58:41
    Update_time: 2010-02-03 11:04:36
     Check_time: 2010-02-03 10:58:53
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options:
        Comment:
1 row in set (0.01 sec)

mysql> show table status like 'MailIssueElement' \G
*************************** 1. row ***************************
           Name: MailIssueElement
         Engine: MyISAM
        Version: 10
     Row_format: Dynamic
           Rows: 1870294
 Avg_row_length: 119
    Data_length: 223251912
Max_data_length: 281474976710655
   Index_length: 107688960
      Data_free: 0
 Auto_increment: 10248973
    Create_time: 2010-02-03 10:58:41
    Update_time: 2010-02-03 11:04:40
     Check_time: 2010-02-03 10:58:53
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options:
        Comment:
1 row in set (0.00 sec)

この動作の説明はありますか? インポートの進行状況を確認するより良い方法はありますか?

次のバージョンを実行しています: サーバーのバージョン: 5.0.32-Debian_7etch11-log Debian etch ディストリビューション


編集:

これがDDLです。MyISAM テーブルです。

mysql> show create table MailIssueElement \G
*************************** 1. row ***************************
       Table: MailIssueElement
Create Table: CREATE TABLE `MailIssueElement` (
  `Id` int(11) NOT NULL auto_increment,
  `IssueId` int(11) NOT NULL default '0',
  `Date` datetime NOT NULL default '0000-00-00 00:00:00',
  `Direction` enum('inbound','outbound') NOT NULL default 'inbound',
  `ToAddr` varchar(255) NOT NULL default '',
  `FromAddr` varchar(255) NOT NULL default '',
  `CCAddrs` varchar(255) NOT NULL default '',
  `Subject` text NOT NULL,
  `ParentIssueElementId` int(11) default NULL,
  `ParentIssueElementType` enum('mail','phone') default 'mail',
  `AgentId` int(11) NOT NULL default '0',
  PRIMARY KEY  (`Id`),
  KEY `date_idx` (`Date`),
  KEY `IssueId` (`IssueId`),
  KEY `idx_agent_id` (`AgentId`)
) ENGINE=MyISAM AUTO_INCREMENT=15099881 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

前もって感謝します、

-aj

4

4 に答える 4

3

行数について

MyISAM などの一部のストレージ エンジンは、正確な数を保存します。InnoDB などの他のストレージ エンジンの場合、この値は概算値であり、実際の値とは 40 ~ 50% ほど異なる場合があります。

MySQLから取得 :: MySQL 5.1 リファレンス マニュアル - SHOW TABLE STATUS 構文

于 2010-02-03T17:16:18.053 に答える
2

テーブルは InnoDB である必要があります。

SHOW STATUS Doc から

行数。MyISAM などの一部のストレージ エンジンは、正確な数を保存します。InnoDB などの他のストレージ エンジンの場合、この値は概算値であり、実際の値とは 40 ~ 50% ほど異なる場合があります。このような場合は、SELECT COUNT(*) を使用して正確なカウントを取得します。

于 2010-02-03T17:17:38.833 に答える
1

OK、それは報告され修正されたバグだったようです。最終的に Etch から Lenny にアップグレードし、それらの新しいパッケージを入手する必要があると思います...すべてを試してくれてありがとう.

于 2010-02-05T02:11:51.027 に答える
0

InnoDB を使用している場合、Rows は "Data_length" を "Avg_row_length" で割って計算されるようです (これは大きく変動します)。

于 2011-07-10T10:22:25.243 に答える