10

大きなテーブルを含むデータベースにアクセスしようとしています (このデータベースには少なくとも 15 個のテーブルがあり、100 万個以上、最大で 2,000 万個)。データベースを選択すると、phpMyAdmin の読み込みに少なくとも 5 分 (およびそれ以上) かかります。

テーブルを含むページの読み込みを高速化するにはどうすればよいですか?

4

3 に答える 3

10

これらの行を、phpMyAdmin インストール内の config.inc.php ファイルの下部に貼り付けます。

//http://future500.nl/phpmyadmin-slow-on-startup/:
$cfg['MaxExactCountViews'] = 0;//disable trying to count the number of rows in any view
$cfg['MaxExactCount'] = 0;//disable correcting the InnoDB estimates

future500.nl に感謝します。

誤ってすべてのデータを削除する前に、この修正を何時間も前に見つけていたらよかったのにと思います。:-(

于 2013-01-16T03:49:41.123 に答える
1

興味のある人たちと一緒にこれを追い詰めてみませんか?

intormation_schema.tablesアクセスが遅い列にマークを付けました。

SELECT 

`TABLE_CATALOG`
,`TABLE_SCHEMA`
,`TABLE_NAME`
,`TABLE_TYPE`
,`ENGINE`
,`VERSION`
,`ROW_FORMAT`      ------SLOW
,`TABLE_ROWS`      ------SLOW
,`AVG_ROW_LENGTH`  ------SLOW
,`DATA_LENGTH`     ------SLOW
,`MAX_DATA_LENGTH` ------SLOW
,`INDEX_LENGTH`    ------SLOW
,`DATA_FREE`       ------SLOW
,`AUTO_INCREMENT`  ------SLOW
,`CREATE_TIME`     ------SLOW
,`UPDATE_TIME`     ------SLOW
,`CHECK_TIME`      ------SLOW
,`TABLE_COLLATION`
,`CHECKSUM`        ------SLOW
,`CREATE_OPTIONS`
,`TABLE_COMMENT`

 FROM `tables` WHERE 1

また、ナビゲーション フレーム/navigation.php

/libraries/common.lib.php => PMA_getTableList()次に呼び出す

/libraries/database_interface.lib.php => PMA_DBI_get_tables_full()

遅いクエリの 1 つが含まれています。

これで遅い SELECT 列を置き換えました:

SELECT *,
`TABLE_SCHEMA`       AS `Db`,
`TABLE_NAME`         AS `Name`,
`TABLE_TYPE`         ÀS `TABLE_TYPE`,
`ENGINE`             AS `Engine`,
`ENGINE`             AS `Type`,
`VERSION`            AS `Version`,
`ROW_FORMAT`         AS `Row_format`,
`TABLE_ROWS`         AS `Rows`,
`AVG_ROW_LENGTH`     AS `Avg_row_length`,
`DATA_LENGTH`        AS `Data_length`,
`MAX_DATA_LENGTH`    AS `Max_data_length`,
`INDEX_LENGTH`       AS `Index_length`,
`DATA_FREE`          AS `Data_free`,
`AUTO_INCREMENT`     AS `Auto_increment`,
`CREATE_TIME`        AS `Create_time`,
`UPDATE_TIME`        AS `Update_time`,
`CHECK_TIME`         AS `Check_time`,
`TABLE_COLLATION`    AS `Collation`,
`CHECKSUM`           AS `Checksum`,
`CREATE_OPTIONS`     AS `Create_options`,
`TABLE_COMMENT`      AS `Comment`

これに:

SELECT 
`TABLE_SCHEMA`        AS `Db`,
`TABLE_NAME`          AS `Name`,
`TABLE_TYPE`          AS `TABLE_TYPE`,
`ENGINE`              AS `Engine`,
`ENGINE`              AS `Type`,
`VERSION`             AS `Version`,
'Compact'             AS `Row_format`,
0                     AS `Rows`,
0                     AS `Avg_row_length`,
0                     AS `Data_length`,
0                     AS `Max_data_length`,
0                     AS `Index_length`,
0                     AS `Data_free`,
0                     AS `Auto_increment`,
'2000-01-01 00:00:00' AS `Create_time`,
NULL                  AS `Update_time`,
NULL                  AS `Check_time`,
`TABLE_COLLATION`     AS `Collation`,
NULL                  AS `Checksum`,
`CREATE_OPTIONS`      AS `Create_options`,
`TABLE_COMMENT`       AS `Comment`

これにより、クエリが高速に実行されました。(たとえば、通常、行数は必要ありません。また、手動で取得することもできます。または、2 つの PhpMyAdmin をインストールします。)

注:オーバーライドされた値は、今後管理ページにダミー値として表示されるはずですが、速度が遅いのではなく、それで問題ありません。

ただし、読み込みが遅いため、他にも遅いクエリがあるはずです。

だから、これを共有したかっただけで、誰かがそれを続けるかもしれません. 今、もう時間がありません。

于 2012-08-27T11:58:03.900 に答える
-3

phpMyAdminはブラウザベースのウェブページツールです。sqlyogのようなデータベースで動作する他のツールを試してみませんか。

于 2012-05-30T07:07:41.327 に答える