Zrychlení MySQL příkazu SHOW DATABASES při desetitisících DB

User avatar
Ashus
Administrátor
Posts: 417
Joined: 07. 07. 2007 10:51
Location: Ostrava - Polanka nad Odrou
Contact:

Zrychlení MySQL příkazu SHOW DATABASES při desetitisících DB

Postby Ashus » 23. 08. 2012 15:43

Načítání PhpMyAdminu při 20 000 databázích je docela problém, trvá to okolo 4 minut. Vymyslel jsem řešení, které načítání solidně zrychlí (nehledají se složky, ale selectuje se z databáze).
Nejprve je nutno vytvořit ControlUsera - pojmenoval jsem ho phpmyadmin_optimizer. Je nutné mu přidělit právo SELECT na mysql.db.Db a mysql.db.User..

Code: Select all

CREATE USER 'phpmyadmin_optimizer'@'localhost' IDENTIFIED BY '<password>';
GRANT SELECT (`Db` , `User`) ON `mysql`.`db` TO 'phpmyadmin_optimizer'@'localhost'; 
Následně do konfigurace config.inc.php vložíte toto:

Code: Select all

$cfg['DisplayDatabasesList'] = 'auto';

$cfg['Servers'][$i]['controluser'] = 'phpmyadmin_optimizer';
$cfg['Servers'][$i]['controlpass'] = '<password>';
$cfg['Servers'][$i]['ShowDatabasesCommand'] = "SELECT Db FROM `mysql`.`db` WHERE User LIKE (SELECT IF(('#user#'='root'),'%','#user#'))"; 
Zajistíte zobrazení všech databází rootovi, ale ostatním uživatelům necháte zobrazit jen databáze, které jim patří.
Image
Coffee phreak!

Who is online

Users browsing this forum: No registered users and 1 guest

cron