arXivDaily arXiv每日学术速递 周一至周五更新
arXiv 1208.0271cs.DB
收藏

数据库应用程序的自动分区

Automatic Partitioning of Database Applications

Alvin Cheung, Owen Arden, Samuel Madden, Andrew C. Myers

摘要:

数据库支持的应用程序在我们的日常生活中几乎无处不在。对数据库进行多次小访问的应用程序给开发人员带来了两个挑战:增加延迟和大量网络往返浪费资源。提高事务数据库应用程序性能的一种众所周知的技术是将应用程序的一部分转换为在数据库服务器上执行的存储过程。不幸的是,这种转换往往是困难的。在本文中,我们描述了Pyxis,一个系统,它采用数据库支持的应用程序,并自动将其代码划分为两部分,其中一部分在应用程序服务器上执行,另一部分在数据库服务器上执行。Pyxis分析应用程序和服务器负载,静态分析代码的依赖关系,并生成一个分区,最大限度地减少控制传输的数量以及每次传输期间发送的数据量。我们使用TPC-C和TPC-W的实验表明,与传统的非分区实现相比,Pyxis能够生成延迟减少3倍的分区,吞吐量提高1.7倍,并且具有与自定义存储过程实现相当的性能。

英文摘要:

Database-backed applications are nearly ubiquitous in our daily lives. Applications that make many small accesses to the database create two challenges for developers: increased latency and wasted resources from numerous network round trips. A well-known technique to improve transactional database application performance is to convert part of the application into stored procedures that are executed on the database server. Unfortunately, this conversion is often difficult. In this paper we describe Pyxis, a system that takes database-backed applications and automatically partitions their code into two pieces, one of which is executed on the application server and the other on the database server. Pyxis profiles the application and server loads, statically analyzes the code's dependencies, and produces a partitioning that minimizes the number of control transfers as well as the amount of data sent during each transfer. Our experiments using TPC-C and TPC-W show that Pyxis is able to generate partitions with up to 3x reduction in latency and 1.7x improvement in throughput when compared to a traditional non-partitioned implementation and has comparable performance to that of a custom stored procedure implementation.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑