What is Aurora?
It's a mySQL wire protocol compatible storage management system that sits on top of mySQL and modifies some innodb internals. You can read about more of the architecture here: I think of it as a Proxy Storage Engine System
The differences start from just starting the server. Aurora MySQL has Huge Page support turned on by default since AWS launches Aurora MySQL server with their custom flag for innodb large page support:
innodb_shared_buffer_pool_uses_huge_pages
This is not an open source setting documented by MySQL official build. In fact, there is not much information on this setting at all. I can only assume RDS instances are configured with Huge page support as detailed here and this custom setting for Aurora turns large page support on for mysqld.
So, what else is different between Aurora and Innodb? From Amazon's docs
The following MySQL parameters do not apply to Aurora MySQL:
innodb_adaptive_flushinginnodb_adaptive_flushing_lwminnodb_checksum_algorithminnodb_doublewriteinnodb_flush_methodinnodb_flush_neighborsinnodb_io_capacityinnodb_io_capacity_maxinnodb_log_buffer_sizeinnodb_log_file_sizeinnodb_log_files_in_groupinnodb_max_dirty_pages_pctinnodb_use_native_aioinnodb_write_io_threadsthread_cache_sizeThe following MySQL status variables do not apply to Aurora MySQL:
innodb_buffer_pool_bytes_dirtyinnodb_buffer_pool_pages_dirtyinnodb_buffer_pool_pages_flushedNoteThese lists are not exhaustive.
In summary, Aurora uses mySQL but it's also a layer on top of mySQL. In all essence, it's just another storage engine which forks Innodb and provides management primitives built into the DBMS system.
In the next weeks, I'll describe how we launch Aurora instances and why as well as capturing more differences that have not made it into this list.
No comments:
Post a Comment