This prototype implementation is licensed under the 'MIT license' (see LICENSE).
- sqlite3
- Statistics extension (we provide a download script:
sqlean-extensions/download.sh
)
- Statistics extension (we provide a download script:
- python3 (at least version 3.10)
- Install python requirements using the file
pip3 install -r requirements.txt
- MySQL
- We tested AutoSteer with MySQL 8
Depending on your custom installation and DBMS setup, add the required information to the configs/<dbms>.cfg
-file.
Auto-Steer's training mode execution consists of two steps:
- (A) Approximate the query span, and (B) run the dynamic programming-based hint-set exploration
main.py --training --database {postgres|presto|mysql|duckdb|spark} --benchmark {path-to-sql-queries}
- By now, Auto-Steer persisted all generated training data (e.g. query plans and execution statistics) in a
sqlite-database that can be found under
results/<database>.sqlite
. - For PrestoDB query plans, we implemented the preprocessing of query plans for tree convolutional neural networks.
main.py --inference --database presto --benchmark {path-to-sql-queries}
- The inference results can be found in the directory
evaluation
.
- All python files will be checked using
pylint
before they can be comitted. The code style is primarily based on the Google Python Style Guide. However, it allows longer lines (160 characters). - Please, install and run pylint (there is also a git pre-commit hook) before committing
If you use AutoSteer in your work, please cite us:
@article{autosteer2023,
author = {Anneser, Christoph and Tatbul, Nesime and Cohen, David and Xu, Zhenggang and Pandian, Prithviraj and Laptev, Nikolay and Marcus, Ryan},
date = {2023},
journaltitle = {PVLDB},
number = {12},
pages = {3515--3527},
title = {AutoSteer: Learned Query Optimization for Any SQL Database},
volume = {16},
}