Mike,<div><br></div><div>Thanks for the list. I'll try them out.</div><div><br></div><div>Using ENUMs, I've gotten the table down to < 3GB. I have 7GB+ RAM to work with. The table is a little too big to put in memory (but it's close). It's seems really hard to get MySQL to use more RAM other by specifying MEMORY for the engine.</div>
<div><br></div><div>I may try InnoDB again with transactions turned off. But I might as well be doing MyISAM at that point.</div><div><br></div><div>I'm a little annoyed that AWS has provisioned IO on the order of 1000-2000 IOPS. The SSDs I'm using are rated at 100,000+ IOPS. Paying extra still yields 100X less performance. Rackspace provides SSD block storage at 70 cents/GB/month. I wish I had gone that direction but the client went and bought an AWS reserved instance (without asking me first).</div>
<div><br></div><div>-Eric</div><div><br></div><div><br></div><div class="gmail_extra"><br clear="all">-=--=---=----=----=---=--=-=--=---=----=---=--=-=-<br>Eric B. Wolf                           720-334-7734<br><br><br><br>

<br><br><div class="gmail_quote">On Sun, Nov 18, 2012 at 3:43 AM, Mike Harrison <span dir="ltr"><<a href="mailto:cluon@geeklabs.com" target="_blank">cluon@geeklabs.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The application in question has one really big table with a bunch of ENUMs and one joined table (with a 4K text<br>
field). All reads, minimal writes. Queries on the table work great in MySQL (MyISAM engine) with the DB is on an SSD<br>
(on a the new bad-ass High I/O Quadruple Extra Large EC2 instances) but performance sucks when the DB is moved back<br>
to EBS (and gets worse with the production m1.large instance).<br>
</blockquote>
<br></div>
I don't have any experience in Percona, but I've got a bit of experience with tuning up MySQL and especially queries. That the performance seemingly takes a hit when the hard drive/io changes is a big clue.<br>
<br>
1st: Check your my.cnf files, let it use some ram. Most default MySQL my.cnf files are for minimal uses on basic hardware.<br>
<br>
2nd: Make sure you have indexes on the columns you are using for selects and joins.<br>
<br>
3rd: Joins, especially complex ones or > 2 tables sucketh. I have had dramatic (10x+) speedups limiting a set of queries to 1 join each,<br>
creating temporary tables (I love it when you can use 'memory' as a table type for these.. if they fit). and then joining it again to the next table. I've also seen slight changes in join syntax make big changes.<br>

<br>
4th: Enums are way kewl, I remember playing with them.. but something stuck in my head said they caused more issues than they solved. No real info left, I slept since then. Might have been my strange way of looking at things. Others say Enums are faster: <a href="http://stackoverflow.com/questions/7879540/mysql-query-performance-dilema-enum-vs-tables" target="_blank">http://stackoverflow.com/<u></u>questions/7879540/mysql-query-<u></u>performance-dilema-enum-vs-<u></u>tables</a><br>

<br>
5th: MyISAM is fast, on current versions of MySQL, InnoDB is supposed to be almost as fast for simple reads, and my "seat of the pants" feeling<br>
is that complex queries using InnoDB seem to be faster.<br>
<br>
"SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED" aka Dirty Reads<br>
works on InnoDB tables (all tables involved must be InnoDB) makes a big difference if you are just reading static data.<br>
<br>
6th: VM's suck for serious DB work.<br>
<br>
7th: I was at an Oracle MySQL thingy a couple of weeks ago, MySQL 5.6 is<br>
supposed to have some multi-threading (ala PostgreSQL) that is supposed<br>
to make a big difference, especially in DB restores.<br>
<br>
8th: I debug MySQL queries using 'show processlist' in a loop in a term,<br>
while running the queries so I can see where they hang, and try to tune them up one line at a time. What hangs? "copying data" might be a bad query or IO bound..<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
______________________________<u></u>_________________<br>
Chugalug mailing list<br>
<a href="mailto:Chugalug@chugalug.org" target="_blank">Chugalug@chugalug.org</a><br>
<a href="http://chugalug.org/cgi-bin/mailman/listinfo/chugalug" target="_blank">http://chugalug.org/cgi-bin/<u></u>mailman/listinfo/chugalug</a><br>
</blockquote></div><br></div>