Detecting performance anti-patterns for applications developed using object-relational mapping

Object-Relational Mapping (ORM) provides developers a conceptual abstraction for mapping the application code to the underlying databases. ORM is widely used in industry due to its convenience; permitting developers to focus on developing the business logic without worrying too much about the database access details. However, developers often write ORM code without considering the impact of such code on database performance, leading to cause transactions with timeouts or hangs in large-scale systems. Unfortunately, there is little support to help developers automatically detect suboptimal database accesses. In this paper, we propose an automated framework to detect ORM performance anti-patterns. Our framework automatically flags performance anti-patterns in the source code. Furthermore, as there could be hundreds or even thousands of instances of anti-patterns, our framework provides sup- port to prioritize performance bug fixes based on a statistically rigorous performance assessment. We have successfully evaluated our framework on two open source and one large-scale industrial systems. Our case studies show that our framework can detect new and known real-world performance bugs and that fixing the detected performance anti- patterns can improve the system response time by up to 98%.

[1]  Ugo Buy,et al.  Preventing database deadlocks in applications , 2013, ESEC/FSE 2013.

[2]  Dongmei Zhang,et al.  Context-sensitive delta inference for identifying workload-dependent performance bottlenecks , 2013, ISSTA.

[3]  Tevfik Bultan,et al.  Data model property inference and repair , 2013, ISSTA.

[4]  Tomas Kalibera,et al.  Rigorous benchmarking in reasonable time , 2013, ISMM '13.

[5]  Shan Lu,et al.  Toddler: Detecting performance problems via similar memory-access patterns , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[6]  Patrick Martin,et al.  Assisting developers of Big Data Analytics Applications when deploying on Hadoop clouds , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[7]  Ugo Buy,et al.  Testing Database-Centric Applications for Causes of Database Deadlocks , 2013, 2013 IEEE Sixth International Conference on Software Testing, Verification and Validation.

[8]  Phil McMinn,et al.  Search-Based Testing of Relational Schema Integrity Constraints Across Multiple Database Management Systems , 2013, 2013 IEEE Sixth International Conference on Software Testing, Verification and Validation.

[9]  Alexander Aiken,et al.  Understanding the behavior of database operations under program control , 2012, OOPSLA '12.

[10]  Vittorio Cortellessa,et al.  Software Performance Antipatterns: Modeling and Analysis , 2012, SFM.

[11]  Matthias Hauswirth,et al.  Algorithmic profiling , 2012, PLDI.

[12]  Shan Lu,et al.  Understanding and detecting real-world performance bugs , 2012, PLDI.

[13]  Matthias Hauswirth,et al.  Catch me if you can: performance bug detection in the wild , 2011, OOPSLA '11.

[14]  Matthew Arnold,et al.  Software bloat analysis: finding, removing, and preventing performance problems in modern large-scale object-oriented applications , 2010, FoSER '10.

[15]  Edith Schonberg,et al.  Finding low-utility data structures , 2010, PLDI '10.

[16]  Adriana E. Chis Automatic detection of memory anti-patterns , 2008, OOPSLA Companion.

[17]  Gail E. Harris Companion to the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications , 2008, OOPSLA 2008.

[18]  B. Sinha,et al.  Statistical Meta-Analysis with Applications , 2008 .

[19]  Tore Dybå,et al.  A systematic review of effect size in software engineering experiments , 2007, Inf. Softw. Technol..

[20]  I. Cuthill,et al.  Effect size, confidence interval and statistical significance: a practical guide for biologists , 2007, Biological reviews of the Cambridge Philosophical Society.

[21]  Lieven Eeckhout,et al.  Statistically rigorous java performance evaluation , 2007, OOPSLA.

[22]  Simon Goldsmith,et al.  Measuring empirical computational complexity , 2007, ESEC-FSE '07.

[23]  Bart Smaalders,et al.  Performance Anti-Patterns , 2006, ACM Queue.

[24]  Michael Evans,et al.  Introduction to the Practice of Statistics Minitab Manual and Minitab Version 14 , 2005 .

[25]  Jeremy D. Zawodny,et al.  High Performance MySQL , 2004 .

[26]  Jeremy D. Zawodny,et al.  High Performance MySQL: Optimization, Backups, Replication, Load-balancing, and More , 2004 .

[27]  S. Mohan,et al.  Performance Solutions: A Practical Guide to Creating Responsive, Scalable Software [Book Review] , 2003, IEEE Software.

[28]  Matthew Arnold,et al.  Online feedback-directed optimization of Java , 2002, OOPSLA '02.

[29]  Connie U. Smith,et al.  New Book - Performance Solutions: A Practical Guide to Creating Responsive, Scalable Software , 2001, Int. CMG Conference.

[30]  Connie U. Smith,et al.  Software performance antipatterns , 2000, WOSP '00.

[31]  Neal Leavitt,et al.  Whatever Happened to Object-Oriented Databases? , 2000, Computer.

[32]  Robert V. Binder,et al.  Testing Object-Oriented Systems: Models, Patterns, and Tools , 1999 .

[33]  Douglas K. Barry,et al.  Solving the Java Object Storage Problem , 1998, Computer.

[34]  Gul A. Agha Concurrent object-oriented programming , 1990, CACM.

[35]  H. J. Arnold Introduction to the Practice of Statistics , 1990 .

[36]  Stephen Travis Pope,et al.  A cookbook for using the model-view controller user interface paradigm in Smalltalk-80 , 1988 .

[37]  Paul A. Herzberg,et al.  Principles of Statistics , 1983 .

[38]  Uwe Fink,et al.  Performance Solutions A Practical Guide To Creating Responsive Scalable Software , 2016 .

[39]  Jeff Linwood,et al.  Beginning Hibernate , 2014, Apress.

[40]  Sam Ruby,et al.  RESTful Web Services , 2007 .

[41]  Jeff Linwood,et al.  Beginning Hibernate, Second Edition , 2006 .

[42]  Rod Johnson,et al.  J2EE Development Frameworks , 2005, Computer.

[43]  T. Parsons A Framework for Automatically Detecting and Assessing Performance Antipatterns in Component Based Systems using Run-Time Analysis , 2004 .

[44]  Connie U. Smith,et al.  More New Software Antipatterns: Even More Ways to Shoot Yourself in the Foot , 2003, Int. CMG Conference.

[45]  M. Bishop What Is Computer Security? , 2003, IEEE Secur. Priv..

[46]  C. U. Smith More New Software Performance Antipatterns : Even More Ways to Shoot Yourself in the Foot , 2000 .