2010-02-03 5 views
2

Я импортирую записи 4.1mil в автономную систему, чтобы сделать некоторый анализ в подмножестве нашей базы данных. Как я бегу импорт, я стараюсь, чтобы проверить свой прогресс с помощью:Ошибка MySQL? «SHOW TABLE STATUS» сообщает об уменьшении количества строк во время импорта

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 травить распределение


EDIT:

Вот 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) 

Заранее спасибо,

ответ

1

ОК, похоже, что это было a bug reported and fixed. Угадайте, мне нужно, наконец, перейти от Etch к Lenny и получить эти новые пакеты ... спасибо за все.

3

В отношении количества строк

Некоторые механизмы хранения, таких как MyISAM, хранить точное количество. Для других систем хранения данных, таких как InnoDB, это значение является приблизительным и может варьироваться от фактического значения на целых 40-50%.

Взятые из MySQL :: MySQL 5.1 Reference Manual - SHOW TABLE STATUS Syntax

+0

@ Энтони - см. Мое редактирование. Это фактически таблица MyISAM. Это противоречит информации, которую вы предоставили, нет? Или я неправильно его понимаю? –

+0

К сожалению, я не видел вашего редактирования. –

+0

не беспокоится ... это был * после * ваш ответ;) Спасибо за помощь. –

2

В таблице должны быть InnoDB.

От SHOW STATUS Doc

Ряды

Количество строк. Некоторые устройства хранения данных, такие как MyISAM, сохраняют точное количество. Для других систем хранения, , таких как InnoDB, это значение является приблизительным и может варьироваться от фактического значения на целых 40-50%. В таких случаях используйте SELECT COUNT (*) для получения точного подсчета.

+0

@Yada - см. Мое редактирование. Это фактически таблица MyISAM. Это противоречит информации, которую вы предоставили, нет? Или я неправильно его понимаю? –

0

Если вы используете InnoDB, строки, по-видимому, рассчитываются путем деления «Длина данных» на «Avg_row_length» (которая сильно колеблется).