How not to Structure Your Database-Backed Web Applications: A Study of Performance Bugs in the Wild
How not to Structure Your Database-Backed Web Applications: A Study of Performance Bugs in the Wild
复制标题
DOI:
10.1145/3180155.3180194
复制
发表时间:
2018-05
期刊:
影响因子:
--
通讯作者:
Junwen Yang;Pranav Subramaniam;Shan Lu;Cong Yan;Alvin Cheung
中科院分区:
文献类型:
--
作者:
Junwen Yang;Pranav Subramaniam;Shan Lu;Cong Yan;Alvin Cheung
Many web applications use databases for persistent data storage, and using Object Relational Mapping (ORM) frameworks is a common way to develop such database-backed web applications. Unfortunately, developing efficient ORM applications is challenging, as the ORM framework hides the underlying database query generation and execution. This problem is becoming more severe as these applications need to process an increasingly large amount of persistent data. Recent research has targeted specific aspects of performance problems in ORM applications. However, there has not been any systematic study to identify common performance anti-patterns in real-world such applications, how they affect resulting application performance, and remedies for them. In this paper, we try to answer these questions through a comprehensive study of 12 representative real-world ORM applications. We generalize 9 ORM performance anti-patterns from more than 200 performance issues that we obtain by studying their bug-tracking systems and profiling their latest versions. To prove our point, we manually fix 64 performance issues in their latest versions and obtain a median speedup of 2× (and up to 39× max) with fewer than 5 lines of code change in most cases. Many of the issues we found have been confirmed by developers, and we have implemented ways to identify other code fragments with similar issues as well.