I really don't know if it should take 2, 5 or 60 seconds. The numbers surprise me (in the bad maner). There is an incredible overhead when wrapping this query in a function. I wonder if there is an invocation of the function for every iteration.-- PeterOn Tue, Mar 3, 2015 at 2:51 PM, Federico Razzoli <federico_raz@yahoo.it> wrote:SELECT 1 was .42. What I find amazing is not the absolute numbers (it's an old computer with desktop installed, etc) but the difference between the tests. If SELECT 1 takes .42, test 2 shouldn't take more than 1 min... do you agree?
Federico
--------------------------------------------
Mar 3/3/15, Justin Swanhart <greenlion@gmail.com> ha scritto:
Oggetto: Re: [Maria-discuss] stored programs
A: "Peter Laursen" <peter_laursen@webyog.com>
Cc: "Federico Razzoli" <federico_raz@yahoo.it>, "Maria Discuss" <maria-discuss@lists.launchpad.net>
Data: Martedì 3 marzo 2015, 14:28
You
probably have either a faster CPU or bigger cache on your
cpu. How long does benchmark select 1 take? You should
find it is faster on your system too, right?
--Justin
Sent from my iPhone
On Mar 3,
2015, at 6:18 AM, Peter Laursen <peter_laursen@webyog.com>
wrote:
Your 3rd test case takes
2:02 in MariaDB 10.1 and 2:13 in MySQL 5.6 on my system
(when otherwise idle) .
--
Peter
On Tue,
Mar 3, 2015 at 1:58 PM, Federico Razzoli <federico_raz@yahoo.it>
wrote:
I made
some quick test to show what I mean by "performance
problem". Note that I'm not saying the the first
and the second test cases should perform equally. But there
is too much difference - see the conclusion.
1)
MariaDB [test]> SELECT BENCHMARK(50000000, (SELECT
1));
+---------------------------------+
| BENCHMARK(50000000, (SELECT 1)) |
+---------------------------------+
| 0 |
+---------------------------------+
1 row in set (0.42 sec)
2)
DELIMITER ||
CREATE FUNCTION f()
RETURNS TINYINT
BEGIN
RETURN 1;
END ||
DELIMITER ;
MariaDB [test]> SELECT BENCHMARK(50000000, (SELECT
f()));
+-----------------------------------+
| BENCHMARK(50000000, (SELECT f())) |
+-----------------------------------+
| 0 |
+-----------------------------------+
1 row in set (2 min 5.70 sec)
3)
DELIMITER ||
CREATE FUNCTION f(x TINYINT)
RETURNS TINYINT
BEGIN
RETURN x;
END ||
DELIMITER ;
MariaDB [test]> SELECT BENCHMARK(50000000, (SELECT
f(1)));
+------------------------------------+
| BENCHMARK(50000000, (SELECT f(1))) |
+------------------------------------+
| 0 |
+------------------------------------+
1 row in set (3 min 35.20 sec)
-- Conclusions:
Times in seconds:
0.42
125.70
215.20
I don't know which ratio would be acceptable, but the
difference betweem a trivial query and a trivial function is
too high.
Also, the difference between 2) and 3) is that the function
in 3) accepts and returns a parameter. Again, the
performance difference seems to me too high.
Regards
Federico
_______________________________________________
Mailing list: https://launchpad.net/~maria-discuss
Post to : maria-discuss@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-discuss
More help : https://help.launchpad.net/ListHelp
_______________________________________________
Mailing list: https://launchpad.net/~maria-discuss
Post to : maria-discuss@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-discuss
More help : https://help.launchpad.net/ListHelp