TalkPHP
 
 
Account Login
Latest Articles
» The basic usage of PHPTAL, a XML/XHTML template library for PHP
» Vulnerable methods and the areas they are commonly trusted in.
» Simple way to protect a form from bot
» The Basics On: How Session Stealing Works
» How to keep your forms from double posting data
IRC Channel
IRC Speech Bubble Join the friendly bunch on IRC...
(#TalkPHP on Freenode)

...Also available via a web interface.

See this thread for information on the TalkPHP Free Hugs Initiative™. Subject to availability.
Associates
Associates
CSS Tutorials
Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old 07-19-2008, 11:30 PM   #1 (permalink)
The Acquainted
 
Dave's Avatar
 
Join Date: Apr 2008
Posts: 110
Thanks: 97
Dave is on a distinguished road
Default Speeding up MySQL updates

I have a PHP script that scores tests for about 2200 students. When it scores an individual student's record, MySQL writes the results out to a table for each item. The array for each individual student has about 225 values (i.e., has info on each test item).

This process takes about 1 min. and 40 secs. Not bad, but I notice that the hard drive is working furiously all the while.

Is there a way to optimize the memory so that the HD doesn't have to write the data for every student (which is what it seems to be doing), but can "bulk" update after a delay and speed up this process?

I've read a lot of information about tweaking MYSQL's use of memory, but it was too technical for me to understand. But if someone could direct me, I would be delighted to continue my research.

My computer has WINXP with 4 GB of memory. Lots of free disk space. Using localhost only.

Thanks,
Dave
Dave is offline  
Reply With Quote
Old 07-20-2008, 10:00 PM   #2 (permalink)
The Addict
 
CoryMathews's Avatar
 
Join Date: Nov 2007
Location: USA
Posts: 256
Thanks: 7
CoryMathews is on a distinguished road
Default

You might want to at least implement some stored procedures. These will speed up the time it takes to run a query because they will be precomipled instead of compiling at runtime.
CoryMathews is offline  
Reply With Quote
The Following User Says Thank You to CoryMathews For This Useful Post:
Dave (07-21-2008)
Old 07-20-2008, 10:34 PM   #3 (permalink)
is cute and cuddly
 
delayedinsanity's Avatar
 
Join Date: Mar 2008
Location: Vegas, Baby
Posts: 963
Thanks: 31
delayedinsanity is on a distinguished road
Default

Stored Procedures are EVIL
-m
delayedinsanity is offline  
Reply With Quote
The Following User Says Thank You to delayedinsanity For This Useful Post:
Dave (07-21-2008)
Old 07-21-2008, 03:14 AM   #4 (permalink)
The Acquainted
 
Dave's Avatar
 
Join Date: Apr 2008
Posts: 110
Thanks: 97
Dave is on a distinguished road
Default

Thanks for the comments. I'm going back over the PHP script now and I found a couple of places where there was some redundancy, and that helps a little.

I just wish that the PHP-MYSQL updates to multiple records were allowed to be stored in allocated memory until it becomes full, then bulk-written to the table.

Dave
Dave is offline  
Reply With Quote
Old 07-21-2008, 01:48 PM   #5 (permalink)
The Addict
 
CoryMathews's Avatar
 
Join Date: Nov 2007
Location: USA
Posts: 256
Thanks: 7
CoryMathews is on a distinguished road
Default

Quote:
Originally Posted by delayedinsanity View Post
Meh I disagree with that article. I was working on a coldfusion project and we used stored procedures and the speed increase was at least 20%. The guy has some good points on other things such as time to implement but he is wrong on the speed. I know that one for a fact. I did many a tests on this when I was writting them for the project. btw the project was with mssql who knows what he was using it didn't say and that could have a huge difference.

and Dave could you possibly store the info into a session and then say once the variable gets to be a certain length you write it to the database and erase it from the session? Haven't ever tried that but it would seem like it could work.
CoryMathews is offline  
Reply With Quote
Old 07-21-2008, 04:39 PM   #6 (permalink)
The Contributor
 
buggabill's Avatar
 
Join Date: Jan 2008
Location: Maine, USA
Posts: 92
Thanks: 2
buggabill is on a distinguished road
Default

I do not know if this could help but...

I do believe this could be done by altering your array to have one more dimension such as:

php Code:
$arr_scores[$studentid][$testitem][$testanswer]

Then, you could build an insert query using that array. MySQL allows you to insert multiple rows of data in one query like is shown here. If you run into a packet size error, you can alter that setting in your mysql config file as it is on your machine.
__________________
-- Bill
"Why is it drug addicts and computer aficionados are both called users?" -Clifford Stoll
buggabill is offline  
Reply With Quote
Reply



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


All times are GMT. The time now is 02:52 PM.

 
     

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0
Inactive Reminders By Icora Web Design