- what is AIO - show synchronous IO - show math for synchronous query doing 1000 random IOs - show math for async ... - 17: - AIO infrastructure merged into 18 - performance example: - seq scan of 16 vs 17 - 18 - AIO infrastructure merged into 18 - only reads - infrastructure for writes through buffer pool is missing - different backends - what do we need to do utilize AIO for reads? - predict the future! - when can it help - IO bound - reads only - listed specific users - performance examples - seq scan - 16, 17 and 18 - bitmap heap scan - lots of clustered data - no clustering - vacuum - first vacuum - vacuum for interspersed data - index scan - no benefit - AIO isn't utilized yet - show good & bad example of DIO - -> don't enable DIO for prod - Future - AIO related infrastructure - buffered writes - additional backends? - AIO Users - readahead for index scans (19?) - table only - wins can be *ginormous* - performance examples - perfectly correlated forward index scan -> tiny wins - perfectly correlated backward index scan - > substantial wins - uncorrelated index scan -> large wins - background writer & checkpointer (19?) - wins substantial, crucial for DIO - COPY / VACUUM / strategy writes (19?) - non-strategy writes (20?) - async WAL writes (20?) - won't help single threaded OLTP - will often help multi-threaded OLTP - will often help bulk write workloads - Recovery Readahead - crucial for working without full-page-writes / RWF_ATOMIC - Smaller stuff - create database reads (strategy file_copy) & writes - alter database set tablespace - fsyncing files at end of checkpoint - unlinking lots of files - Integrate networking with AIO - Frontend use of AIO