2012-05-30 4 views
7

Essayer d'accéder à la base de données avec des grandes tables (au moins 15 tables dans cette base de données pas moins de 1 million, maximum - 20 millions). Une fois que je sélectionne la base de données - phpMyAdmin charger au moins 5 minutes (et plus).phpMyAdmin et les grandes tables

Comment puis-je accélérer le chargement de la page avec des tables? PhpMyAdmin est un outil de page Web basé sur un navigateur.

+0

Êtes-vous trier les tables? Avez-vous des indices ou des clés primaires? Quel moteur de stockage utilisez-vous? –

+0

Je suppose que c'est une tonne d'instructions de compte lent – Corbin

+0

Utilisation de InnoDB pour tous. base de données de la base de données 1ère étape - connexion 2ème - choisir la base de données .... 3ème attendre minutes et minutes ... – webbear

Répondre

-3

Pourquoi ne pas essayer d'autres outils pour travailler sur la base de données comme sqlyog.

+0

J'ai une telle limitation.mon FAI rejetant le trafic 3306. Donc, seul moyen - est basé sur le Web. – webbear

+0

phpMyAdmin se comportera lentement avec ce genre de charge lourde parce que lorsque vous utilisez son interface graphique pour voir la structure ou parcourir les données ou le tableau énumérant il lance des requêtes sur la console mysql selon vos besoins .. Sinon, vous pouvez utiliser la console directement .. ou vous pouvez essayer de vous connecter avec le port que vous utilisez console mysql, si vous pouvez faire avec phpMyAdmin, il peut également être fait par sqlyog ou tout autre outil – manurajhada

+0

Je suis nous ing [dbForge] (http: // www.devart.com/dbforge/mysql/studio/) mais aucune chance avec mon FAI l'utiliser - parce que de tels produits se connectent directement à la base de données via le port 3306. Donc, j'ai été wundering si phpmyadmin a quelques options pour accélérer le chargement de grandes tables d'informations. – webbear

1

Peut-être que nous pouvons chasser cela avec d'autres intéressés?

Je marqué les colonnes du intormation_schema.tables qui tardent à accéder:

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 

En outre, le cadre de navigation est le /navigation.php qui appelle

/libraries/common.lib.php => PMA_getTableList() qui appelle ensuite

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

qui contient l'une des requêtes lentes.

I ont remplacé les colonnes lentes SELECT dans cette:

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` 

à ceci:

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` 

Ce qui fait la requête courir vite. (Je n'ai généralement pas besoin du nombre de lignes par exemple .. Et je peux les obtenir manuellement aussi, ou avoir 2 installations PhpMyAdmin.)

Remarque: les valeurs remplacées devraient apparaître comme des valeurs factices à partir de maintenant sur l'admin page - mais je pourrais vivre avec cela plutôt que la vitesse lente.

Mais il doit bien y avoir d'autres requêtes lentes, car il se charge toujours lentement. Donc, je voulais juste partager cela, quelqu'un peut continuer avec elle. En ce moment, je n'ai plus de temps.

8

coller ces lignes dans le fond de votre fichier config.inc.php dans votre installation phpMyAdmin:

//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 

Merci à future500.nl!

Je souhaite avoir trouvé ce correctif quelques heures plus tôt, avant que je supprime accidentellement toutes mes données. :-(

+6

Si vous surveillez plusieurs serveurs avec phpmyadmin, notez qu'il s'agit d'une variable globale. J'ai essayé $ cfg ['Servers'] [$ i] ['MaxExactCountViews'] = 0; et ne pouvait pas le faire fonctionner. Ce n'est que plus tard que j'ai compris que je ne peux pas définir cette valeur par serveur. J'espère que cela aide les autres. – IvanD

+0

http://www.future500.nl/articles/2012/07/phpmyadmin-slow-on-startup/ – mathheadinclouds

Questions connexes