WL#5535: Separate tablespace(s) for the InnoDB undo log

Status: Complete

Currently, the InnoDB transaction undo log lives in the system tablespace. There
is some provision in the code to have it in different tablespaces. Splitting the
undo log to multiple tablespaces could lift some performance bottlenecks (mutex
contention). It has been requested in BUG#25697.

Moving the undo log outside the system tablespace would also benefit users of
solid-state storage (SSD). As noted in BUG#56283, it could be useful to move
the user tablespaces to SSD and keep the system tablespace on HDD. The reason to
keep the system tablespace on HDD is the sequential bulk writes to the
doublewrite buffer that would quickly wear out SSDs due to their limited number
of rewrites. If we disable the insert buffer and move the undo logs away from
the system tablespace, it will be practically read-only except for DDL
operations and the doublewrite buffer.

Moving the undo log to different tablespace(s) doesn't require a file format 
change, it will however break backward compatibility. Older versions of InnoDB 
will not be able to access the UNDO logs that reside in their own tablespace 
because they will not know where to find them. Secondly, InnoDB opens all system 
tablespaces before doing recovery and the UNDO logs qualify as system space and 
older version will not know about this new system tablespace.

* Have one tablespace per undo log (insert, update, update_key_or_delete).

Advantages:

* More flexibility in using posix_fadvise to avoid file system cache pollution:
http://dom.as/2010/11/18/logs-memory-pressure/
* Users can control how many rollback segments they want to create and whether to 
use separate tablespaces or not

Disadvantages:

* Breaks backward compatibility