270 likes | 387 Vues
This document discusses the use of predictive modeling to enhance transaction execution in parallel online transaction processing (OLTP) systems. By employing models to estimate transaction behavior before execution, databases can significantly optimize performance. Key topics include the execution of multiple queries across partitions, the determination of which optimizations to enable in the database management system (DBMS), and empirical evaluations illustrating performance improvements in high-volume transaction processing environments.
E N D
On Predictive Modeling for Distributed Databases @andy_pavlo VLDB - August 28th, 2012
Databases? Evan Jones?
Putin is going to get re-elected! Romney has a Swiss bank account! Muammar Gaddafi is in trouble!
High-Volume Transaction Processing z , ?
Main Memory•Parallel•Shared-Nothing H-Store: A High-Performance, DistributedMain Memory Transaction Processing SystemProc. VLDB Endow., vol. 1, iss. 2, pp. 1496-1499, 2008.
Fast Repetitive Small
Transaction Execution Proc. Name Input Params Transaction Result Client Database Cluster Database Cluster
? P1 P2 P3 P4 ? ? Client Database Cluster Database Cluster
This transaction will execute 4 queries on partitions 1,3, and 6!
Pro Tip: Canadians do notlike unnecessary surgeries.
Main Idea: Use models to predict transaction behavior before execution. On Predictive Modeling for OptimizingTransaction Execution in Parallel OLTP SystemsProc. VLDB Endow., vol. 5, iss. 2, pp. 85-96, 2011.
Client Database Cluster Database Cluster
Step #1: Estimate the path that the transaction will take.
Current State Input Parameters: w_id=0 i_w_ids=[0,0] i_ids=[1001,1002] ? ? GetWarehouse: SELECT * FROM WAREHOUSEWHERE W_ID = ?
Step #2: Determine which optimizations to enable in the DBMS.
Input Parameters: +1 w_id=0 i_w_ids=[0,0] i_ids=[1001,1002] +1 Optimizations: • Best Partition? • Touched Partitions? +1 • Finished Partitions? +1 +1
Current State Input Parameters: w_id=0 i_w_ids=[0,1] i_ids=[1001,1002] ? ? CheckStock: SELECT S_QTY FROM STOCKWHERE S_W_ID = ?AND S_I_ID = ?; ? InsertOrder: X INSERTINTO ORDERS (o_id, o_w_id) VALUES (?, ?);
w_id=0 i_w_ids=[0,1] i_ids=[1001,1002] HashValue(w_id) =0 =1 ArrayLength(i_w_ids) ArrayLength(i_w_ids) =1 =2 =1 =2
Experimental Evaluation
94.9% +1.86% 95.0% +1.17% 90.2% +8.15%
(txn/s) Houdini Assume Single-Partitioned TATP TPC-C AuctionM +57% +126% +117%
Conclusion: Scaling your OLTP DBMS must come from within.
http://hstore.cs.brown.edu https://github.com/apavlo/h-store