Bug #71468 [Com]: increased memory usage with mysqli in php 7

From: Date: Mon, 22 Feb 2016 08:35:06 +0000
Subject: Bug #71468 [Com]: increased memory usage with mysqli in php 7
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-199381@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=71468&edit=1

 ID:                 71468
 Comment by:         rendername at gmail dot com
 Reported by:        ryan dot brothers at gmail dot com
 Summary:            increased memory usage with mysqli in php 7
 Status:             Feedback
 Type:               Bug
 Package:            MySQLi related
 Operating System:   Linux
 PHP Version:        7.0.2
 Block user comment: N
 Private report:     N

 New Comment:

Of course, we use only mysqlnd:

PHP 7 phpinfo()
Client API library version  mysqlnd 5.0.12-dev - 20150407 - $Id:
f59eb767fe17a6679589b5c076d9fa88d3d4eac0 $

php7.0 -m|grep mysql
mysqli
mysqlnd
pdo_mysql


PHP 5 phpinfo()
Client API version  mysqlnd 5.0.11-dev - 20120503 - $Id: 3c688b6bbc30d36af3ac34fdd4b7b5b787fe5555 $

php5 -m|grep mysql
mysql
mysqli
mysqlnd
pdo_mysql

New Example:
 (mysql table pays with 650k rows, getting ID numbers)
...
    echo round(memory_get_usage()/1024/1024)."m<br>";    
    $res=mysqli_query($db,"select id from pays");
    echo round(memory_get_usage()/1024/1024)."m<br>";
    die();

Output PHP7:
1m
52m

Output PHP5:
1m
11m

PHP7 need 5 times more memory for each Mysql Query
We have debian 8 64 bit + Dotdeb packets with PHP7


Previous Comments:
------------------------------------------------------------------------
[2016-02-22 05:43:48] rasmus@php.net

Are you sure that your mysqli was compiled against mysqlnd in both PHP 5 and PHP 7? On your
phpinfo() page, in the mysqli section, what does it say for "Client API library version"
in both PHP 5 and 7?

The reason being, if PHP 5 was compiled against libmysqlclient then since libmysqlclient does not
use the PHP memory allocator none of the memory allocated by that library is reported by
memory_get_usage(). That doesn't mean it wasn't allocated, of course.

------------------------------------------------------------------------
[2016-02-21 23:00:15] rendername at gmail dot com

We have the same issue, does anyone have any idea?
php5 - 45mb, php7 - 250mb
Debian 8 (jessie) 64bit

------------------------------------------------------------------------
[2016-01-28 11:53:16] ryan dot brothers at gmail dot com

Yes, mysqlnd is used in both.  PHP was compiled with --with-mysqli.

------------------------------------------------------------------------
[2016-01-28 03:02:25] laruence@php.net

do they all used mysqlnd?

------------------------------------------------------------------------
[2016-01-27 23:57:23] ryan dot brothers at gmail dot com

Description:
------------
I am seeing an issue in PHP 7 where large database queries are taking up more memory compared to PHP
5.6.  

In the below example, PHP 7 uses 8.3MB while PHP 5.6 only uses 1.8MB.

I have placed SQL to create a test table of 100,000 rows at https://drive.google.com/uc?export=download&id=0B37DKbJklxg_Y3NadnRjc2tVbE0.

Is this expected behavior or an issue with PHP 7 memory usage?

Thanks for your help.


Test script:
---------------
<?php
$mysqli = new mysqli('localhost', 'test', 'test', 'test');

$mysqli->real_query("SELECT * FROM a");

$result = $mysqli->store_result();

echo memory_get_usage()."\n";
exit;


Expected result:
----------------
PHP 5.6.17:
1832472

PHP 7.0.2:
1832472 (or close to it)


Actual result:
--------------
PHP 5.6.17:
1832472

PHP 7.0.2:
8356704



------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=71468&edit=1


Thread (15 messages)

« previous php.bugs (#199381) next »