[ale] Mysql troubles. Updates are very slow
Jim Lynch
ale_nospam at fayettedigital.com
Wed Dec 23 16:01:36 EST 2015
You probably caught it. I ignored that write. Sort of forgot it was in
the loop. I've looked at that code for hours and never saw it.
Thanks,
Jim.
On 12/23/2015 02:47 PM, Jeff Jansen wrote:
> Just to be clear, is your benchmark only profiling the MySQL calls or
> the disk access as well? The problem could be disk access with the
>
> file_put_contents("/tmp/kids","$kidId $rank\n",FILE_APPEND);
>
> line. 19 seconds is still A LONG TIME to open, write, and close a
> file 500+ times, but I would comment that line out and run the code
> again and see what happens. If it is a disk problem, try fopen()
> before the foreach() loop, fwrite() in the loop, and fclose() after
> the loop. See how that compares. (Make sure you fclose() on any
> exceptions in that case.)
>
> HTH
>
> Jeff
>
> On Wed, Dec 23, 2015 at 2:00 PM, Jim Lynch
> <ale_nospam at fayettedigital.com <mailto:ale_nospam at fayettedigital.com>>
> wrote:
>
> Here's a strange one. I'm running a database update: The code
> looks like:
>
> try {
> $sth = $dbh->prepare("update child set class_rank=:rank
> where child_id=:child");
> foreach($childRanks as $kidId=>$rank) {
> $sth->bindParam(':rank',$rank,PDO::PARAM_INT);
> $sth->bindParam(':child',$kidId,PDO::PARAM_INT);
> $sth->execute();
> // prof_flag("update child set rank $kidId");
> file_put_contents("/tmp/kids","$kidId
> $rank\n",FILE_APPEND);
>
> }
> There is an index on child_id. It takes 19 seconds to execute on
> 506 updates.
>
> Number of ranks = 506 Start
> 0.011958
> Start at try
> 0.044773
> Get child data next
> 0.025755
> loop through familys
> 0.005682
> update child set rank
> 19.035966
> Done
> That's output from a custom profiling app. time php xxx.php gives
> similar results without the profiling. It seems like a lot, so
> I've run it on another machine, a VPS in the cloud.
>
> 506 Start
> 0.000419
> Start at try
> 0.050433
> Get child data next
> 0.048817
> loop through familys
> 0.003815
> update child set rank
> 0.116944
> Done
> This is a mysql database. The slow one is on a 4 processor AMD
> machine with a single 1 TB Seagate SATA drive. (3 mb/s). Nothing
> else is running except apache, chrome and mysql. Memory usage is
> 3GB out of 4GB. Cpu usage is around 5% average on each of the 4
> processors. Very little swap is used. CPU bogomips 6443.
> Running on a ext4 FS. Smartctl says nothing is amiss. No errors
> in logs.
>
> The VPS shows a 2 processor Intel running 6800 bogomips. Can't
> tell anything about I/O. Main memory is 512 MB with 100 MB used.
> Most of swap is also used.
>
> Version on tower:
> mysqld Ver 5.5.44-0ubuntu0.14.04.1 for debian-linux-gnu on x86_64
> ((Ubuntu))
> version on VPS:
> mysqld Ver 5.5.46-0ubuntu0.14.04.2 for debian-linux-gnu on x86_64
> ((Ubuntu))
>
> No special configurations done to either mysql. Running it as it
> was installed via apt-get. No tuning.
>
> I verified that both runs actually did update the table. The
> indexes are identical. I exported the tables on the tower and
> imported them into the VPS. I verified they were the same.
>
> Tower is running Mint 17.2 while the VPS is running Ubuntu 14.04.1.
>
> I don't see anything other than updates that are running slow.
> Selects and inserts are OK.
>
> Any ideas?
>
> Thanks,
> Jim.
>
>
>
> _______________________________________________
> Ale mailing list
> Ale at ale.org <mailto:Ale at ale.org>
> http://mail.ale.org/mailman/listinfo/ale
> See JOBS, ANNOUNCE and SCHOOLS lists at
> http://mail.ale.org/mailman/listinfo
>
>
>
>
> _______________________________________________
> Ale mailing list
> Ale at ale.org
> http://mail.ale.org/mailman/listinfo/ale
> See JOBS, ANNOUNCE and SCHOOLS lists at
> http://mail.ale.org/mailman/listinfo
More information about the Ale
mailing list