SkinnerDB Article Swipe
YOU?
·
· 2019
· Open Access
·
· DOI: https://doi.org/10.1145/3299869.3300088
· OA: W2889503624
SkinnerDB is designed from the ground up for reliable join ordering. It\nmaintains no data statistics and uses no cost or cardinality models. Instead,\nit uses reinforcement learning to learn optimal join orders on the fly, during\nthe execution of the current query. To that purpose, we divide the execution of\na query into many small time slices. Different join orders are tried in\ndifferent time slices. We merge result tuples generated according to different\njoin orders until a complete result is obtained. By measuring execution\nprogress per time slice, we identify promising join orders as execution\nproceeds.\n Along with SkinnerDB, we introduce a new quality criterion for query\nexecution strategies. We compare expected execution cost against execution cost\nfor an optimal join order. SkinnerDB features multiple execution strategies\nthat are optimized for that criterion. Some of them can be executed on top of\nexisting database systems. For maximal performance, we introduce a customized\nexecution engine, facilitating fast join order switching via specialized\nmulti-way join algorithms and tuple representations.\n We experimentally compare SkinnerDB's performance against various baselines,\nincluding MonetDB, Postgres, and adaptive processing methods. We consider\nvarious benchmarks, including the join order benchmark and TPC-H variants with\nuser-defined functions. Overall, the overheads of reliable join ordering are\nnegligible compared to the performance impact of the occasional, catastrophic\njoin order choice.\n