[Zope-DB] Zope and MySQL Slowwwwwwwwwwwww on Windows

Deb B. intranetdeb@yahoo.com
Tue, 24 Dec 2002 11:54:32 -0800 (PST)


--0-2018629970-1040759672=:50120
Content-Type: text/plain; charset=us-ascii


I came to this group today to see what I could find on a particular 
ZOPE/MySQL issue I'm having. It relates to this thread, somewhat. I 
hope someone can give me some insight.

I have ZOPE installed on a WIN98 machine that is acting as a 
temporary server until we go through a complete network upgrade to 
Windows 2000 Server, et. al. I have a development workstation that is 
using Windows 2000 Professional. This machine is where I have 
installed MySQL. So, I have ZOPE on one machine and MySQL on the 
other. 

I installed the myODBC from mysql.com because I couldn't get any of 
the ZMySQLDA/MySQLdb products to work on any version of Windows 
(obviously it favors the Unix/Linux environment). Well, Windows is 
what I'm stuck with now.

I created databases, set up my ODBC connections, set up my Z SQL 
Methods and SQL Forms (depending upon which databases I access) and 
can access the databases with beautiful results on my ZOPE 
pages......BUT.....the results are extremellllllllllllllllllllly slow 
in coming. Even small databases with just a few records take forever 
to come up even with the most basic of SQL statements using either 
SQL Forms (for example, my Purchase Order database):


<dtml-var standard_html_header>
<dtml-if CheckPermissions>

<dtml-unless REFERER><dtml-call "REQUEST.set
('REFERER',HTTP_REFERER)"></dtml-unless>
<dtml-unless sqf_edit_method><dtml-call "REQUEST.set
('sqf_edit_method','edit')"></dtml-unless>

<h3>> <dtml-var title_or_id>: <dtml-var document_title> (List)</h3>
<P>
<a href="&dtml-URL2;/">Up</a> -
<a href="&dtml-REFERER;">Back</a> -
<a href="list?REFERER=&dtml-REFERER;">List</a> -
<a href="add?REFERER=&dtml-REFERER;">Add</a>

<br><br>

        
<table CELLSPACING='&dtml-table_cell_spacing;'>
<tr BGCOLOR='&dtml-internal_title_color;'>
<th>P.O.#</th>
<th>Order Date</th>
<th>P.O. Vendor</th>
<th>Items</th>
<th>Terms</th>
<th>Total</th>
</tr>


<dtml-call "REQUEST.set('bat_size',_.int(viewlistlen))">
<dtml-unless start_key><dtml-call "REQUEST.set('start_key',0)"></dtml-
unless>
<dtml-if "_.int(start_key)<0"><dtml-call "REQUEST.set
('start_key',0)"></dtml-if>
<dtml-call "REQUEST.set('next_key',_.int(start_key))">

<dtml-call "REQUEST.set('flag',0)">

<dtml-call "REQUEST.set('q','select * from po2002 where autoid 
>= '+_.str(start_key)+' order by autoid asc')">


<dtml-try>
<dtml-in "SQL(q=q)" size=bat_size>
<dtml-if "_.int(next_key) < _.int(autoid)">
  <dtml-call "REQUEST.set('next_key',autoid)">
</dtml-if>

<tr valign="top" align="left" BGCOLOR='<dtml-if "_.int(flag)
==1">&dtml-internal_c1_color;<dtml-else>&dtml-
internal_c2_color;</dtml-if>'>

<td><a href="&dtml-sqf_edit_method;?edit_key=<dtml-var 
autoid>&REFERER=&dtml-REFERER;"><dtml-var autoid></a></td>
<td><dtml-var order_date></td>
<td><dtml-var vendor_name></td>
<td><dtml-var items></td>
<td><dtml-var terms></td>
<td><dtml-var total></td>
</tr>
<dtml-call "REQUEST.set('flag',1-_.int(flag))">
</dtml-in>

<dtml-except>
  <h1>General error</h1>
  <dtml-var errorinternalmethod>
</dtml-try>

</table>
<!-- navigation links -->
<br>
<a href="&dtml-URL0;?start_key=0&REFERER=&dtml-REFERER;">First</a> -
<a href="&dtml-URL0;?start_key=<dtml-var "_.int(start_key)-_.int
(bat_size)">&REFERER=&dtml-REFERER;">Prev</a> -
<a href="&dtml-URL0;?start_key=<dtml-var "_.int
(next_key)">&REFERER=&dtml-REFERER;">Next</a>

<dtml-else>
    <dtml-var standard_html_header>
</dtml-if>
<dtml-var standard_html_footer>


and then Z SQL Methods (for example, a document log database):

Example 1:

select * from yr2000 

Example 2:

SELECT * FROM yr2000 WHERE doc_author='JEF'

I also tried to set up a search form so users can perform searches 
themselves instead of having to be limited to choosing from pre-
constructed reports I provide them. It's 
daaaaaaaaaaaaaaawwwwwwwwwwwwwwwggggggggggggggg slowwwwwwwwwwwwwwwww 
though. I even went so far as to perform table structure tests on my 
MySQL databases to ensure I was optimizing them for the fastest 
performance. Any searches done through a MySQL client returns quick 
results but I want all of their access to these databases to be web-
based (i.e., through ZOPE site). Help!

Thanks.
Deb





---------------------------------
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now
--0-2018629970-1040759672=:50120
Content-Type: text/html; charset=us-ascii

<P>I came to this group today to see what I could find on a particular <BR>ZOPE/MySQL issue I'm having. It relates to this thread, somewhat. I <BR>hope someone can give me some insight.<BR><BR>I have ZOPE installed on a WIN98 machine that is acting as a <BR>temporary server until we go through a complete network upgrade to <BR>Windows 2000 Server, et. al. I have a development workstation that is <BR>using Windows 2000 Professional. This machine is where I have <BR>installed MySQL. So, I have ZOPE on one machine and MySQL on the <BR>other. <BR><BR>I installed the myODBC from mysql.com because I couldn't get any of <BR>the ZMySQLDA/MySQLdb products to work on any version of Windows <BR>(obviously it favors the Unix/Linux environment). Well, Windows is <BR>what I'm stuck with now.<BR><BR>I created databases, set up my ODBC connections, set up my Z SQL <BR>Methods and SQL Forms (depending upon which databases I access) and <BR>can access the databases with beautiful results on my ZOPE <BR>pages......BUT.....the results are extremellllllllllllllllllllly slow <BR>in coming. Even small databases with just a few records take forever <BR>to come up even with the most basic of SQL statements using either <BR>SQL Forms (for example, my Purchase Order database):<BR></P>
<P>&lt;dtml-var standard_html_header&gt;<BR>&lt;dtml-if CheckPermissions&gt;<BR><BR>&lt;dtml-unless REFERER&gt;&lt;dtml-call "REQUEST.set<BR>('REFERER',HTTP_REFERER)"&gt;&lt;/dtml-unless&gt;<BR>&lt;dtml-unless sqf_edit_method&gt;&lt;dtml-call "REQUEST.set<BR>('sqf_edit_method','edit')"&gt;&lt;/dtml-unless&gt;<BR><BR>&lt;h3&gt;&gt; &lt;dtml-var title_or_id&gt;: &lt;dtml-var document_title&gt; (List)&lt;/h3&gt;<BR>&lt;P&gt;<BR>&lt;a href="&amp;dtml-URL2;/"&gt;Up&lt;/a&gt; -<BR>&lt;a href="&amp;dtml-REFERER;"&gt;Back&lt;/a&gt; -<BR>&lt;a href="list?REFERER=&amp;dtml-REFERER;"&gt;List&lt;/a&gt; -<BR>&lt;a href="add?REFERER=&amp;dtml-REFERER;"&gt;Add&lt;/a&gt;<BR><BR>&lt;br&gt;&lt;br&gt;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&lt;table CELLSPACING='&amp;dtml-table_cell_spacing;'&gt;<BR>&lt;tr BGCOLOR='&amp;dtml-internal_title_color;'&gt;<BR>&lt;th&gt;P.O.#&lt;/th&gt;<BR>&lt;th&gt;Order Date&lt;/th&gt;<BR>&lt;th&gt;P.O. Vendor&lt;/th&gt;<BR>&lt;th&gt;Items&lt;/th&gt;<BR>&lt;th&gt;Terms&lt;/th&gt;<BR>&lt;th&gt;Total&lt;/th&gt;<BR>&lt;/tr&gt;<BR><BR><BR>&lt;dtml-call "REQUEST.set('bat_size',_.int(viewlistlen))"&gt;<BR>&lt;dtml-unless start_key&gt;&lt;dtml-call "REQUEST.set('start_key',0)"&gt;&lt;/dtml-<BR>unless&gt;<BR>&lt;dtml-if "_.int(start_key)&lt;0"&gt;&lt;dtml-call "REQUEST.set<BR>('start_key',0)"&gt;&lt;/dtml-if&gt;<BR>&lt;dtml-call "REQUEST.set('next_key',_.int(start_key))"&gt;<BR><BR>&lt;dtml-call "REQUEST.set('flag',0)"&gt;<BR><BR>&lt;dtml-call "REQUEST.set('q','select * from po2002 where autoid <BR>&gt;= '+_.str(start_key)+' order by autoid asc')"&gt;<BR><BR><BR>&lt;dtml-try&gt;<BR>&lt;dtml-in "SQL(q=q)" size=bat_size&gt;<BR>&lt;dtml-if "_.int(next_key) &lt; _.int(autoid)"&gt;<BR>&nbsp; &lt;dtml-call "REQUEST.set('next_key',autoid)"&gt;<BR>&lt;/dtml-if&gt;<BR><BR>&lt;tr valign="top" align="left" BGCOLOR='&lt;dtml-if "_.int(flag)<BR>==1"&gt;&amp;dtml-internal_c1_color;&lt;dtml-else&gt;&amp;dtml-<BR>internal_c2_color;&lt;/dtml-if&gt;'&gt;<BR><BR>&lt;td&gt;&lt;a href="&amp;dtml-sqf_edit_method;?edit_key=&lt;dtml-var <BR>autoid&gt;&amp;REFERER=&amp;dtml-REFERER;"&gt;&lt;dtml-var autoid&gt;&lt;/a&gt;&lt;/td&gt;<BR>&lt;td&gt;&lt;dtml-var order_date&gt;&lt;/td&gt;<BR>&lt;td&gt;&lt;dtml-var vendor_name&gt;&lt;/td&gt;<BR>&lt;td&gt;&lt;dtml-var items&gt;&lt;/td&gt;<BR>&lt;td&gt;&lt;dtml-var terms&gt;&lt;/td&gt;<BR>&lt;td&gt;&lt;dtml-var total&gt;&lt;/td&gt;<BR>&lt;/tr&gt;<BR>&lt;dtml-call "REQUEST.set('flag',1-_.int(flag))"&gt;<BR>&lt;/dtml-in&gt;<BR><BR>&lt;dtml-except&gt;<BR>&nbsp; &lt;h1&gt;General error&lt;/h1&gt;<BR>&nbsp; &lt;dtml-var errorinternalmethod&gt;<BR>&lt;/dtml-try&gt;<BR><BR>&lt;/table&gt;<BR>&lt;!-- navigation links --&gt;<BR>&lt;br&gt;<BR>&lt;a href="&amp;dtml-URL0;?start_key=0&amp;REFERER=&amp;dtml-REFERER;"&gt;First&lt;/a&gt; -<BR>&lt;a href="&amp;dtml-URL0;?start_key=&lt;dtml-var "_.int(start_key)-_.int<BR>(bat_size)"&gt;&amp;REFERER=&amp;dtml-REFERER;"&gt;Prev&lt;/a&gt; -<BR>&lt;a href="&amp;dtml-URL0;?start_key=&lt;dtml-var "_.int<BR>(next_key)"&gt;&amp;REFERER=&amp;dtml-REFERER;"&gt;Next&lt;/a&gt;<BR><BR>&lt;dtml-else&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;dtml-var standard_html_header&gt;<BR>&lt;/dtml-if&gt;<BR>&lt;dtml-var standard_html_footer&gt;<BR></P>
<P>and then Z SQL Methods (for example, a document log database):<BR><BR>Example 1:<BR><BR>select * from yr2000 <BR><BR>Example 2:<BR><BR>SELECT * FROM yr2000 WHERE doc_author='JEF'<BR><BR>I also tried to set up a search form so users can perform searches <BR>themselves instead of having to be limited to choosing from pre-<BR>constructed reports I provide them. It's <BR>daaaaaaaaaaaaaaawwwwwwwwwwwwwwwggggggggggggggg slowwwwwwwwwwwwwwwww <BR>though. I even went so far as to perform table structure tests on my <BR>MySQL databases to ensure I was optimizing them for the fastest <BR>performance. Any searches done through a MySQL client returns quick <BR>results but I want all of their access to these databases to be web-<BR>based (i.e., through ZOPE site). Help!<BR><BR>Thanks.<BR>Deb<BR><BR></P><p><br><hr size=1>Do you Yahoo!?<br>
<a href="http://rd.yahoo.com/mail/mailsig/*http://mailplus.yahoo.com">Yahoo! Mail Plus</a> - Powerful. Affordable. <a href="http://rd.yahoo.com/mail/mailsig/*http://mailplus.yahoo.com">Sign up now</a>
--0-2018629970-1040759672=:50120--