A modern database query optimizer needs to be able to handle a lot of different workloads, especially when it comes to general-purpose databases. Most of the time, it does a good job; however, certain patterns are hard to predict. With so many moving parts, it’s hard for the average DBA or database developer to come up with a good explanation for why the optimizer chooses certain query plans.
Vicențiu Ciorbaru dives deep into the optimizer, covering strategies for dynamic query rewriting, including derived-table merging and condition push down; temporary table reuse; join optimizations via IN/EXISTS subqueries; condition selectivity estimations via precollected histograms; and improved analytics via Window functions and CTEs. Armed with this extra information, you’ll be able to better tune problematic queries and better model a database schema, especially for large-scale datasets.
Vicențiu focuses on MariaDB’s optimizer point of view; however, he examines other database systems where it’s relevant.
Vicențiu Ciorbaru is a server developer for the MariaDB Foundation and de facto team lead of junior developers and new contributors. His past projects include roles in MariaDB, Window functions, and custom aggregate functions. He also ensures MariaDB remains stable and up-to-date in Linux distributions by handling distribution-specific bugs, especially in Debian.
Comments on this page are now closed.
©2019, O'Reilly Media, Inc. • (800) 889-8969 or (707) 827-7019 • Monday-Friday 7:30am-5pm PT • All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners. • firstname.lastname@example.org