Hi,<br><br>I did some research this weekend and definitely MyISAM could
be (extrremaly) fast for sites with little updating (10% of queries
max) comparing with data retrieval but not for OSM - The normal OSM
utilization as show in the logs is more than 50% of updates/inserts.
The problem with MyISAM is that every update/insert locks the hole
table, blocking all subsequent queries on the same table.
<br><br>The consequences for the database utilization could be checked on two charts that show http serving in a "quiet" moment (<a href="http://wiki.openstreetmap.org/images/4/4f/Bysecond_200708111600.png" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">

http://wiki.openstreetmap.org/images/4/4f/Bysecond_200708111600.png
</a>) compared with a busy one (<a href="http://wiki.openstreetmap.org/images/9/92/Bysecond_200708112000b.png" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://wiki.openstreetmap.org/images/9/92/Bysecond_200708112000b.png
</a>). The "gaps" in this last graph are certanly periods when the
backlog of queries fron the web layer reached some limit (apache
threads? connection pool size?) and everything has to wait for about
1-3 minutes until MySQL is available again.
<br><br>Lock contention could be attenuated with some code changes (<a href="http://dev.mysql.com/doc/refman/5.0/en/table-locking.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://dev.mysql.com/doc/refman/5.0/en/table-locking.html
</a>), but before risking entering in a bigger problem, the right thing
todo IMHO would be level up the system monitoring and do a lot of tests
on simulated envs.
<br><br>For better monitoring I suggest 2 things:<br><br>    * Collect MySQL stats periodicaly (every hour) for posterior analysis/crosschecking. This could be something like:<br>        mysql -e "SHOW STATUS" >> /var/log/mysql-stats
<br><br>    * Identify costly requests and/or heavy load periods. For
this, the Apache time-to-serve key (as suggested by Frederik) could be
used. On httpd.conf, add the following line:<br>           <font face="sans-serif" size="2">
LogFormat "%h %l %u %t \"%r\"
%>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D"
combinedtime</font>
<br>      and change this one:<br>           <font face="sans-serif" size="2">CustomLog logs/access.log combinedtime<br><br>I Hope to load a full db this week to help on the tunnings effort.<br><br>[]s<br><br><br></font>
<br><div><span class="gmail_quote">2007/3/22, SteveC <<a href="mailto:steve@asklater.com">steve@asklater.com</a>>:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Apache anonymised api data with description:<br><br><a href="http://wiki.openstreetmap.org/index.php/Database#Data_statistics">http://wiki.openstreetmap.org/index.php/Database#Data_statistics</a><br><br>Please play, make cool viz and stats.
<br><br>If there are _any_ problems with the anonymity side of things (eg, it<br>not doing what it's supposed to) please contact me.<br><br>have fun,<br><br>SteveC <a href="mailto:steve@asklater.com">steve@asklater.com
</a> <a href="http://www.asklater.com/steve/">http://www.asklater.com/steve/</a><br><br>_______________________________________________<br>dev mailing list<br><a href="mailto:dev@openstreetmap.org">dev@openstreetmap.org</a>
<br><a href="http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/dev">http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/dev</a><br></blockquote></div><br>