7.0 Beta 2 Release Notes

The MemSQL 7.0 Beta 2 release is the second publicly available release of MemSQL 7.0. The main features in this release are highlighted below.

Release Highlights

  • Much improved performance of synchronous replication and durability. Our synchronous replication now has only a minor performance penalty compared to our already fast asynchronous replication – giving you better data consistency guarantees without incurring large performance penalties. You can read more about our improved synchronous replication here.

  • Selective queries on columnstore tables now run faster, via sub-segment access.

  • Hash indexes on columnstore tables are now supported. CREATE TABLE and ALTER TABLE now support adding and dropping hash indexes on columnstore tables.

  • By default, UPDATE and DELETE queries now lock columnstore tables at the row level, allowing improved concurrency. Previously, these queries locked columnstore tables on the segment level.

  • Sparse rowstore compression is now supported.

  • Queries on columnstore tables can now reorder filters to decrease execution time. Reordering occurs automatically and allows filters that are more selective to be evaluated first.


This beta release cannot be upgraded to or from other releases and is not supported for production use. You should test this release on a non-production cluster only.

Restoring a database from a backup taken in a different 7.0 beta version is not guaranteed to work. For example, restoring a database to version 7.0.5 from a backup taken in 7.0.4 may not be successful.

In addition to the release highlights noted above, the following new features and improvements are available in this release:

Query Execution

  • Improved Workload Management implementation that no longer needs to be tuned via the expected_num_aggs config option; the expected_num_aggs config option is now deprecated.
  • Support for multi-statement transactions that use distributed joins.
  • Support for multi-statement transactions that write to a database and then read from a different database.
  • Added a query hint node_degree_of_parallelism that specifies the number of threads per node to use for columnstore table scans.
  • Queries that use the IN filter on sharded data now perform better.
  • Hash joins that use reference tables now perform better.

Query Optimization

  • Column statistics are now automatically gathered on rowstore tables. This is in addition to column statistics being automatically gathered on columnstore tables, which was done previously.
  • Range statistics (histograms) are now automatically gathered on rowstore and columnstore tables.
  • Rowstore table sampling has been improved.
  • Now, sampling for cardinality estimates of complex predicates on columnstore tables is automated.
  • All shapes of bushy joins are now supported.
  • Common Table Expressions (CTEs) can now be materialized; redundant expressions can use cached data instead of being recomputed.

Data Storage, Loading, and Backup

  • Performance improvements for bulk inserts, large insert/selects, LOAD DATA, and pipelines to columnstore tables (particularly for wide columnstore tables).
  • Added support for Parquet in LOAD DATA.
  • Improved error reporting for pipelines and LOAD DATA.
  • Incremental backup for columnstore data.

System Management

  • Added a column to information_schema.TABLE_STATISTICS to indicate if a table is rowstore or a columnstore.

Functional Extensions

  • Cross-database views are now supported.
  • Added TABLE(json_array), which returns a table with one row per array element.
  • Added built-in support for time series reporting through the new FIRST, LAST, and TIME_BUCKET functions.

Maintenance Release Changelog

2019-09-24 Version 7.0.5

  • Initial 7.0 beta 2 release
Was this article useful?