title: mysql 5.6 adjust varchar length to longer value without table locking
body: <p>We have a varchar column right now that is 255 chars in length.  We're about to up it to 400 using this statement:</p>
  
  <pre><code>ALTER TABLE `resources` CHANGE `url` `url` varchar(400) NOT NULL;
  </code></pre>
  
  <p>I've read the docs about <a href="http://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html#innodb-online-ddl-summary-grid" rel="noreferrer">online ddl</a> which states</p>
  
  <pre><code>Operation                   In-Place?   Copies Table?   Allows Concurrent DML?  Allows Concurrent Query?
  ---------------------------|-----------|---------------|-----------------------|---------------------------------
  Change data type of column  No          Yes             No                      Yes
  </code></pre>
  
  <p>And I have these two questions:</p>
  
  <ul>
  <li>does changing the col from varchar(255) to varchar(400) constitute a changing of data type?</li>
  <li>will this lock the table for writes?</li>
  </ul>
  
  <p>I guess on question two, it just seems unclear what concurrent DML really means.  Does it mean I can't write to this table at all, or that the table goes through the copy/swap process?</p>
  
  <p>We only have about 2.5 million rows in this table, so the migration only takes about 30 seconds, but I'd prefer the table not be locked out during the time period.</p>