Assessing the Occurrence of Blocking Operations in Database Schema Evolution: A Case Study
During the evolution of a database schema, some schema-changing operations (e.g., the “ALTER TABLE” command) require the underlying database management system to lock tables until the opera-tion is finished. We call these schema-changing operations blocking operations. During the execution of blocking operations, a soft-ware application may behave abnormally, varying from a slow page loading to an error caused by a web request taking too long to return. Despite their potential negative impact on important qual-ity attributes, blocking operations have not yet been empirically investigated in the context of software evolution. To fill this gap, we conducted a large industrial case study in the context of a Brazilian software company. We analyzed 1,499 atomic schema-changing operations from a period of 6 years to explore which blocking operations the developers frequently performed during the evolution of the database schema of a target system. The intention behind this case study is better understanding the problem in its original context to outline strategies to correct or mitigate it in the future. Our results show that blocking operations were very common, though not all of them seemed to cause observable downtime periods. We also present some mitigating strategies already in use by the devel-opment team of the target system to cope with blocking operation during software evolution, avoiding their negative impact.
Anthony Cleve, Maxime Gobert, Loup Meurice, Jerome Maes, and Jens Weber. 2015. Understanding database schema evolution: A case study. Science of Computer Programming 97 (2015), 113–121.
J. Delplanque, A. Etien, N. Anquetil, and O. Auverlot. 2018. Relational Database Schema Evolution: An Industrial Case Study. In 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME). IEEE, 635–644. https://doi.org/10.1109/ICSME.2018.00073
Michael De Jong. 2017. Zero-downtime SQL database schema evolution for continuous deployment. Proceedings - 2017 IEEE/ACM 39th International Conference on Software Engineering: Software Engineering in Practice Track, ICSE-SEIP 2017 (2017), 143–152.
Michael De Jong and Arie Van Deursen. 2015. Continuous Deployment and Schema Evolution in SQL Databases. In 3rd IEEE/ACM International Workshop on Release Engineering (RELENG). 16–19.
Henry F. Korth. 1983. Locking Primitives in a Database System. J. ACM 30, 1 (1983), 55–79.
Dien-Yen Lin and Iulian Neamtiu. 2009. Collateral evolution of applications and databases. In Proceedings of the joint international and annual ERCIM workshops on Principles of software evolution (IWPSE) and software evolution (Evol) workshops. 31.
Dong Qiu, Bixin Li, and Zhendong Su. 2013. An Empirical Analysis of the Co-evolution of Schema andCode in Database Applications. ESEC/FSE (2013), 18–26.
K. Rajamani, G. Viswanathan,W. Li, and C. Iyer. 2005. MINIMIZING DOWNTIME FOR APPLICATION CHANGES IN DATABASE SYSTEMS. [link].
Václav T. Rajlich and Keith H. Bennett. 2000. A staged model for the software life cycle. Computer 33, 7 (2000), 66–71.
Per Runeson, Martin Host, Austen Rainer, and Bjorn Regnell. 2012. CASE STUDY RESEARCH IN SOFTWARE ENGINEERING. John Wiley & Sons.
Dag Sjøberg. 1993. Quantifying Schema Evolution. Information and Software Technology 35 (1993), 35–44.