title: Choice of MySQL table type for non-critical webapp data (MyISAM vs. InnoDB)
body: <p>Consider this scenario with the following assumptions:</p>
  
  <ul>
  <li>The database is used for a non-critical webapp.</li>
  <li>Query speed is of vital importance. </li>
  <li>The read/write patterns are roughly >95 % reads and &lt;5 % writes.</li>
  <li>The database is backuped up daily using mysqldump.</li>
  <li>The is no need for transactions or advanced crash recovery. If the database crashes I'll simply import last night's mysqldump. This is good enough in this scenario.</li>
  <li>No need for full-text searching.</li>
  </ul>
  
  <p>Pros of MyISAM under said assumptions:</p>
  
  <ul>
  <li>It's very fast (with one exception - see below).</li>
  <li>It's light-weight and has an easy-to-understand mapping between database/table to physical files in file system (.MYD/.MYI/.frm).</li>
  <li>Easy backup (mysqldump).</li>
  </ul>
  
  <p>All-in-all I'm very happy with MyISAM with one major exception. MyISAM has one major shortcoming under said assumptions and that is table level locking. When UPDATEs are running towards a frequently read table all reads are blocked. Needless to say this causes major performance problems which must be solved.</p>
  
  <p>My questions are:</p>
  
  <ol>
  <li>Is there some way to get rid of table level locking without switching away from MyISAM?</li>
  <li>If I must switch to InnoDB - how do I configure InnoDB so that it behaves as similar to MyISAM as possible (think no transactions, logical file structure, etc.). How do I configure a InnoDB to be "just like MyISAM but without table level locking"?</li>
  </ol>