0

行数が のテーブルがあります48769914。問題は、データベースを照会するときの偽の情報、つまり data_length です。この不正行為を修正する方法についてのアイデアはありますか?

mysql> show table status like "events"\G
*************************** 1. row ***************************
           Name: events
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 0
 Avg_row_length: 0
    Data_length: 16384
Max_data_length: 0
   Index_length: 32768
      Data_free: 7405043712
 Auto_increment: 59816602
    Create_time: 2012-06-05 05:12:37
    Update_time: NULL
     Check_time: NULL
      Collation: utf8_general_ci
       Checksum: NULL
 Create_options:
        Comment:
1 row in set (0.88 sec)

正確な数:

mysql> select count(id) from events;
+-----------+
| count(id) |
+-----------+
|  48769914 |
+-----------+
1 row in set (5 min 37.67 sec)

更新ステータス情報は、テーブルが空だったようです。行がゼロ、行の長さがゼロで、基本的にテーブルにデータがありません。MySQL にそのデータの正確な見積もりを表示させるにはどうすればよいですか。

4

2 に答える 2

2

InnoDB はレコード数を内部的に追跡しないため、InnoDB の行数は正確ではありません。これは、テーブルスペースに割り当てられたスペースの量によってのみ推定できます。

詳細については、マニュアルのInnoDB の制限を参照してください。

于 2012-06-18T11:07:22.873 に答える
0

InnoDB はテーブル ステータスに行数を格納しないため、偽物ではありません。SELECT行数が必要な場所でクエリを実行することで、これを解決します。

于 2012-06-18T11:05:59.640 に答える