{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,14]],"date-time":"2026-03-14T09:54:30Z","timestamp":1773482070665,"version":"3.50.1"},"reference-count":15,"publisher":"Association for Computing Machinery (ACM)","issue":"12","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Proc. VLDB Endow."],"published-print":{"date-parts":[[2019,8]]},"abstract":"<jats:p>Azure SQL Database and the upcoming release of SQL Server introduce a novel database recovery mechanism that combines traditional ARIES recovery with multi-version concurrency control to achieve database recovery in constant time, regardless of the size of user transactions. Additionally, our algorithm enables continuous transaction log truncation, even in the presence of long running transactions, thereby allowing large data modifications using only a small, constant amount of log space. These capabilities are particularly important for any Cloud database service given a) the constantly increasing database sizes, b) the frequent failures of commodity hardware, c) the strict availability requirements of modern, global applications and d) the fact that software upgrades and other maintenance tasks are managed by the Cloud platform, introducing unexpected failures for the users. This paper describes the design of our recovery algorithm and demonstrates how it allowed us to improve the availability of Azure SQL Database by guaranteeing consistent recovery times of under 3 minutes for 99.999% of recovery cases in production.<\/jats:p>","DOI":"10.14778\/3352063.3352131","type":"journal-article","created":{"date-parts":[[2019,9,18]],"date-time":"2019-09-18T18:36:11Z","timestamp":1568831771000},"page":"2143-2154","source":"Crossref","is-referenced-by-count":21,"title":["Constant time recovery in Azure SQL database"],"prefix":"10.14778","volume":"12","author":[{"given":"Panagiotis","family":"Antonopoulos","sequence":"first","affiliation":[{"name":"Microsoft"}]},{"given":"Peter","family":"Byrne","sequence":"additional","affiliation":[{"name":"Microsoft"}]},{"given":"Wayne","family":"Chen","sequence":"additional","affiliation":[{"name":"Microsoft"}]},{"given":"Cristian","family":"Diaconu","sequence":"additional","affiliation":[{"name":"Microsoft"}]},{"given":"Raghavendra Thallam","family":"Kodandaramaih","sequence":"additional","affiliation":[{"name":"Microsoft"}]},{"given":"Hanuma","family":"Kodavalla","sequence":"additional","affiliation":[{"name":"Microsoft"}]},{"given":"Prashanth","family":"Purnananda","sequence":"additional","affiliation":[{"name":"Microsoft"}]},{"given":"Adrian-Leonard","family":"Radu","sequence":"additional","affiliation":[{"name":"Microsoft"}]},{"given":"Chaitanya Sreenivas","family":"Ravella","sequence":"additional","affiliation":[{"name":"Microsoft"}]},{"given":"Girish Mittur","family":"Venkataramanappa","sequence":"additional","affiliation":[{"name":"Microsoft"}]}],"member":"320","published-online":{"date-parts":[[2019,8]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/2723372.2749441"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/2517349.2522724"},{"key":"e_1_2_1_3_1","volume-title":"Microsoft Press","author":"Delaney K.","year":"2009"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/2063576.2063977"},{"key":"e_1_2_1_5_1","unstructured":"IBM IBM DB2 Crash recovery. https:\/\/www.ibm.com\/support\/knowledgecenter\/en\/SSEPGG_11.1.0\/com.ibm.db2.luw.admin.ha.doc\/doc\/c0005962.html  IBM IBM DB2 Crash recovery. https:\/\/www.ibm.com\/support\/knowledgecenter\/en\/SSEPGG_11.1.0\/com.ibm.db2.luw.admin.ha.doc\/doc\/c0005962.html"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.14778\/1453856.1453951"},{"key":"e_1_2_1_7_1","unstructured":"Microsoft Accelerated Database Recovery. https:\/\/docs.microsoft.com\/en-us\/azure\/sql-database\/sql-database-accelerated-database-recovery  Microsoft Accelerated Database Recovery. https:\/\/docs.microsoft.com\/en-us\/azure\/sql-database\/sql-database-accelerated-database-recovery"},{"key":"e_1_2_1_8_1","unstructured":"Microsoft Offload read-only workload to secondary replica of an Always On availability group. https:\/\/docs.microsoft.com\/en-us\/sql\/database-engine\/availability-groups\/windows\/active-secondaries-readable-secondary-replicas-always-on-availability-groups?view=sql-server-2017  Microsoft Offload read-only workload to secondary replica of an Always On availability group. https:\/\/docs.microsoft.com\/en-us\/sql\/database-engine\/availability-groups\/windows\/active-secondaries-readable-secondary-replicas-always-on-availability-groups?view=sql-server-2017"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/128765.128770"},{"key":"e_1_2_1_10_1","unstructured":"MySQL InnoDB Recovery. https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-recovery.html  MySQL InnoDB Recovery. https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-recovery.html"},{"key":"e_1_2_1_11_1","unstructured":"Oracle Using Fast-Start On-Demand Rollback https:\/\/docs.oracle.com\/cd\/B10500_01\/server.920\/a96533\/instreco.htm#429546  Oracle Using Fast-Start On-Demand Rollback https:\/\/docs.oracle.com\/cd\/B10500_01\/server.920\/a96533\/instreco.htm#429546"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/2619228.2619236"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/16894.16888"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/3183713.3196937"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.14778\/2732951.2732960"}],"container-title":["Proceedings of the VLDB Endowment"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.14778\/3352063.3352131","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,12,28]],"date-time":"2022-12-28T10:33:10Z","timestamp":1672223590000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.14778\/3352063.3352131"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019,8]]},"references-count":15,"journal-issue":{"issue":"12","published-print":{"date-parts":[[2019,8]]}},"alternative-id":["10.14778\/3352063.3352131"],"URL":"https:\/\/doi.org\/10.14778\/3352063.3352131","relation":{},"ISSN":["2150-8097"],"issn-type":[{"value":"2150-8097","type":"print"}],"subject":[],"published":{"date-parts":[[2019,8]]}}}