From: Daniel Brown on
Chris;

From my understanding of your question, your message (included
below in its entirety) is better sent to the MySQL General list, which
I've CC'd on this reply. If you haven't yet, please subscribe there
at mysql-subscribe(a)lists.mysql.com to follow the thread for responses.

If I'm misunderstanding and you're asking a PHP-related question,
please rephrase your question.

[Full original message follows.]


On Fri, Jul 10, 2009 at 12:22,
workerholic(a)studysite.eu<workerholic(a)studysite.eu> wrote:
> hi guys, i need some help by optimize the performance.
> my problem is that i need a lot of rows the whole site (don't ask i need the
> rows really :-) )
> this is about ~4000 rows it will be loaded from mysql database in 0.3
> seconds
> my idea was to cache this rows in a xml file like for example:
>
> <category>
>   <id>some hash id</id>
>   <title>category title </title>
> </category>
> ......
>
> also load query from mysql first, save to xml using 6 hours, erase the
> cached file, load query against....
> but to load the same num rows from xml during more then 3 seconds in
> comparison mysql need just 0.3 seconds.
>
> how can i optimize the reading from xml faster?
>
> server design:
> 2 mysql server (Master & Slave with Replication  )
> 8 Applikation Server with connect to the 2 mysql server
>
> this i the reason why i want to cache this query anyway! other querys just
> need about 0.0004 seconds, but this is the slowest query!
> i hope someone can help me or had a better ideas to solve this problem!
>
> thanks chris
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>



--
</Daniel P. Brown>
daniel.brown(a)parasane.net || danbrown(a)php.net
http://www.parasane.net/ || http://www.pilotpig.net/
Check out our great hosting and dedicated server deals at
http://twitter.com/pilotpig
From: Andrew Ballard on
On Fri, Jul 10, 2009 at 12:36 PM, Daniel Brown<danbrown(a)php.net> wrote:
>    Chris;
>
>    From my understanding of your question, your message (included
> below in its entirety) is better sent to the MySQL General list, which
> I've CC'd on this reply.  If you haven't yet, please subscribe there
> at mysql-subscribe(a)lists.mysql.com to follow the thread for responses.
>
>    If I'm misunderstanding and you're asking a PHP-related question,
> please rephrase your question.

I understood the question to be how to improve performance by caching
MySQL results into an XML document (which, given that it was posted
here) within a PHP script. Perhaps this is not the correct
interpretation, but if so it would be relevant.

However, I'm not sure I'd spend time trying to devise a "fast" XML
cache for a query that only took 0.3 seconds to execute. By itself,
that isn't bad performance unless this is a query that is called
frequently by several concurrent users. Personally, I'd look into ways
to improve the execution of the query itself in MySQL (making sure the
query is sargable and improving indexes, etc.) until I thought I had
exhausted everything there.

Just my 2 cents.

Andrew
From: "workerholic on
hi andrew i think you understand my problem a little,
but if 100 user load this query at the same time, the two mysql server
had a lot to do!
so i think to cache this query as xml to the application server local
make thinks faster,
but, i would like to have the same performance to read this xml document
as read the query from mysql server...
i dont know why php is so slow to read the xml file...


Andrew Ballard schrieb:
> On Fri, Jul 10, 2009 at 12:36 PM, Daniel Brown<danbrown(a)php.net> wrote:
>
>> Chris;
>>
>> From my understanding of your question, your message (included
>> below in its entirety) is better sent to the MySQL General list, which
>> I've CC'd on this reply. If you haven't yet, please subscribe there
>> at mysql-subscribe(a)lists.mysql.com to follow the thread for responses.
>>
>> If I'm misunderstanding and you're asking a PHP-related question,
>> please rephrase your question.
>>
>
> I understood the question to be how to improve performance by caching
> MySQL results into an XML document (which, given that it was posted
> here) within a PHP script. Perhaps this is not the correct
> interpretation, but if so it would be relevant.
>
> However, I'm not sure I'd spend time trying to devise a "fast" XML
> cache for a query that only took 0.3 seconds to execute. By itself,
> that isn't bad performance unless this is a query that is called
> frequently by several concurrent users. Personally, I'd look into ways
> to improve the execution of the query itself in MySQL (making sure the
> query is sargable and improving indexes, etc.) until I thought I had
> exhausted everything there.
>
> Just my 2 cents.
>
> Andrew
>

From: Daniel Brown on
On Fri, Jul 10, 2009 at 12:59, Andrew Ballard<aballard(a)gmail.com> wrote:
>
> I understood the question to be how to improve performance by caching
> MySQL results into an XML document (which, given that it was posted
> here) within a PHP script. Perhaps this is not the correct
> interpretation, but if so it would be relevant.

You're probably correct. Seems I'm just experiencing a Friday
Fog, so to speak.

(And no, there are no chemical connotations implied there, just
that the weekend and all the work it entails is looming much closer.
;-P)

--
</Daniel P. Brown>
daniel.brown(a)parasane.net || danbrown(a)php.net
http://www.parasane.net/ || http://www.pilotpig.net/
Check out our great hosting and dedicated server deals at
http://twitter.com/pilotpig
From: Daniel Brown on
On Fri, Jul 10, 2009 at 13:07,
workerholic(a)studysite.eu<workerholic(a)studysite.eu> wrote:
> hi andrew i think you understand my problem a little,
> but if 100 user load this query at the same time, the two mysql server had a
> lot to do!
> so i think to cache this query as xml to the application server local make
> thinks faster,
> but, i would like to have the same performance to read this xml document as
> read the query from mysql server...
> i dont know why php is so slow to read the xml file...

It will be slower to read a file than data from an SQL database by
sheer design --- regardless of whether it's XML, CSV, plain text, etc.
And MySQL is faster still because it's run as a server with it's own
processing engine, completely independent of the PHP engine and
spawned process. Other factors involved are disk seek time, memory
capabilities, et cetera, but the SQL-vs-file point is the biggest.

For PHP to locate something within the file, it must load the
entire file into memory or read it byte-by-byte, line-by-line, from an
exact offset (given explicitly). SQL databases such as MySQL work
similarly, but don't catalog all data in quite the same linear
fashion. Further, MySQL is capable of indexing, allowing it to return
the data far faster.

There's a time and a place for each, but it sounds as though what
you're attempting to do would not be best-served by caching it in an
XML sheet.

Also, something to keep in mind (with no offense intended by any
means): if you have two database servers (using replication) for
load-balancing and they - combined - cannot handle 100 simultaneous
connections and queries, you may want to re-evaluate your
infrastructure and architecture.

--
</Daniel P. Brown>
daniel.brown(a)parasane.net || danbrown(a)php.net
http://www.parasane.net/ || http://www.pilotpig.net/
Check out our great hosting and dedicated server deals at
http://twitter.com/pilotpig