A method comprising: receiving, at data processing hardware , cache configuration information indicating a maximum size and an incremental size for a cache associated with a user , the cache configured to store a portion of a table stored on memory hardware in communication with the data processing hardware , the table stored on the memory hardware in a row-major format and comprising a plurality of columns and a plurality of rows; caching, by the data processing hardware , in a column-major format, a subset of the plurality of columns of the table in the cache associated with the user ; receiving, at the data processing hardware , a plurality of data requests , each data request requesting access to the table stored on the memory hardware and associated with a corresponding access pattern requiring access to one or more of the plurality of columns of the table ; and while executing one or more workloads on the data processing hardware : for each column of the plurality of columns of the table , determining, by the data processing hardware , an access frequency indicating a number of times the corresponding column is accessed over a predetermined time period based on the corresponding access pattern associated with each of the plurality of data requests ; and dynamically adjusting, by the data processing hardware , the subset of the plurality of columns cached in the column-major format in real-time based on the access patterns , the maximum size for the cache , and the incremental size for the cache . receiving, at data processing hardware , cache configuration information indicating a maximum size and an incremental size for a cache associated with a user , the cache configured to store a portion of a table stored on memory hardware in communication with the data processing hardware , the table stored on the memory hardware in a row-major format and comprising a plurality of columns and a plurality of rows; caching, by the data processing hardware , in a column-major format, a subset of the plurality of columns of the table in the cache associated with the user ; receiving, at the data processing hardware , a plurality of data requests , each data request requesting access to the table stored on the memory hardware and associated with a corresponding access pattern requiring access to one or more of the plurality of columns of the table ; and while executing one or more workloads on the data processing hardware : for each column of the plurality of columns of the table , determining, by the data processing hardware , an access frequency indicating a number of times the corresponding column is accessed over a predetermined time period based on the corresponding access pattern associated with each of the plurality of data requests ; and dynamically adjusting, by the data processing hardware , the subset of the plurality of columns cached in the column-major format in real-time based on the access patterns , the maximum size for the cache , and the incremental size for the cache . for each column of the plurality of columns of the table , determining, by the data processing hardware , an access frequency indicating a number of times the corresponding column is accessed over a predetermined time period based on the corresponding access pattern associated with each of the plurality of data requests ; and dynamically adjusting, by the data processing hardware , the subset of the plurality of columns cached in the column-major format in real-time based on the access patterns , the maximum size for the cache , and the incremental size for the cache . <EOS>