大きなテーブルを含むデータベースにアクセスしようとしています (このデータベースには少なくとも 15 個のテーブルがあり、100 万個以上、最大で 2,000 万個)。データベースを選択すると、phpMyAdmin の読み込みに少なくとも 5 分 (およびそれ以上) かかります。
テーブルを含むページの読み込みを高速化するにはどうすればよいですか?
大きなテーブルを含むデータベースにアクセスしようとしています (このデータベースには少なくとも 15 個のテーブルがあり、100 万個以上、最大で 2,000 万個)。データベースを選択すると、phpMyAdmin の読み込みに少なくとも 5 分 (およびそれ以上) かかります。
テーブルを含むページの読み込みを高速化するにはどうすればよいですか?
これらの行を、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 に感謝します。
誤ってすべてのデータを削除する前に、この修正を何時間も前に見つけていたらよかったのにと思います。:-(
興味のある人たちと一緒にこれを追い詰めてみませんか?
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 をインストールします。)
注:オーバーライドされた値は、今後管理ページにダミー値として表示されるはずですが、速度が遅いのではなく、それで問題ありません。
ただし、読み込みが遅いため、他にも遅いクエリがあるはずです。
だから、これを共有したかっただけで、誰かがそれを続けるかもしれません. 今、もう時間がありません。
phpMyAdminはブラウザベースのウェブページツールです。sqlyogのようなデータベースで動作する他のツールを試してみませんか。