Hi Marc,

4.1.0 is no worse in this regard than 4.0.x, however given that the performance issues appeared to be the primary reason for the dropping of 5.1 in 4.1 (at least that was the implications from postings in the discussions of the show databases command and disableIS issues), I thought it important to express that, not just so the underlying issue can be resolved for MySQL versions 5.5 and above, but also because a number of distros still ship MySQL 5.1 as its default version, as do multiple shared hosting providers and that keeping 5.1 support would probably benefit a reasonable percentage of your userbase.

Unfortunately due to time constraints, offering a fully working solution is not something I am able to do at present, however I can provide my (admittedly horrifically hacky) solution that solves the most severe issue experienced.

I added code to getData (libraries/navigation/Nodes/Node.class.php) which is provided at the close of this message. The purpose of this was to simply return a query object that contained the static information based on the only_db contents. This way, the related node building functions did not also need to be edited. For the start of a more complete solution, I would add a check in there to make sure only_db is actually set before building it, otherwise having it fall back over to the non database code, as the code provided will fail if only_db is not set.

The only downside to this base approach is that if an only_db database does not exist, it will still display on the navigation (whereas currently it would not), however its children of course wont as they still use the classic checks. It might however be an opportunity to display that fact, so users who use only_db are informed they have non existent databases in their list.

Following is probably some of the most horrible code to hit the mailing list, but hopefully it gives someone who is more familiar with the PMA codebase an idea. I shall also keep an eye on the mailing list in case I get the time to offer something a little more substantial.


        if ($type == 'databases')
        {
                $db_list = $GLOBALS['cfg']['Server']['only_db'];
                $query = "SELECT * FROM ( SELECT '";

                if (is_string($db_list))
                {
                        $db_list = array($db_list);
                }

                if (count($db_list))
                {
                        $query .= implode("' UNION ALL SELECT '",$db_list);
                        $query .= "' ";
                }
                return $GLOBALS['dbi']->fetchResult($query . ") as alias");
        }
        else
        {
                // ORIGINAL getData CODE
        }



On Wed, Nov 20, 2013 at 4:42 AM, Marc Delisle <marc@infomarc.info> wrote:
Martyn Dale a écrit :
> Hi,
>
> Personally I do not think it is advisable to move forward until certain
> issues have been addressed. I am talking about
> https://sourceforge.net/p/phpmyadmin/bugs/3944 and related bug reports.
>
> The alleged solution for 4.1 is requiring MySQL 5.5 as a minimum version.
> This is not going to solve the problems that people have reported when
> using the 4.x series with large systems, since while 5.5 is better than 5.1
> and below, a full directory scan can still be triggered by any number of
> combinations of variables as described here:
> http://dev.mysql.com/doc/refman/5.6/en/information-schema-optimization.html
>
> I explained this in that bug report where i showed PMAs default usage of IS
> for the navigation on a *5.6* system (with innodb_stats_on_metadata
> switched off). While that was just a 2 second example, I have seen that get
> up to 60 seconds before query killers kick in. Reports of users on shared
> hosting accounts, where this kind of behavior can get users accounts
> terminated has also already been reported (
> https://sourceforge.net/p/phpmyadmin/bugs/3945, second page "Here is what
> one provider sent as a warning before *deleting my account*")
>
> If you remove the use of disableIS and related functionality, it will not
> solve any issues. Take the SCHEMATA queries for example for getting
> database lists, this still effectively does a full directory scan, as
> documented: http://dev.mysql.com/doc/refman/5.6/en/schemata-table.html
> In this case for example, switching to IS to avoid using the slow
> performing show databases is redundant since they basically do the same
> thing. As a basic example, take a directory, with tens of thousands of
> files, and attempt to do an ls in it, even unsorted (-U) it will take a
> long time, simply because traversal of the filesystem takes time. Requiring
> higher versions isnt going to miraculously speed up the iteration of
> directories.
>
> On a similar note, when I referenced *innodb_stats_on_metadata *in earlier
> mentioned bug report, I was using it as an example of why relying on IS can
> be as bad, or worse than directly doing a show tables, since it can
> potentially end up doing additional work.
> I am pretty worried that modifying the variable was considered as a
> potential solution. The description of that very setting describes how it
> affects how the system handles IS queries. An administrator should be able
> to trust that installing something like PMA is not going to change any
> system variables that could otherwise affect the operation of the system
>
> Thank you for your consideration.
>
> Regards,
> Martyn

Thanks Martyn for your report. We'll discuss this issue before taking a
decision about 4.1.0-rc1.

Sadly, 4.1.0 will be released with some bugs in it, but we should avoid
regressions. So, in your opinion, is the current state of 4.1.0-beta
worse than 4.0.9, regarding this IS issue?

--
Marc Delisle
http://infomarc.info

------------------------------------------------------------------------------
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing
conversations that shape the rapidly evolving mobile landscape. Sign up now.
http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk
_______________________________________________
Phpmyadmin-devel mailing list
Phpmyadmin-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/phpmyadmin-devel