{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,2]],"date-time":"2026-05-02T14:54:06Z","timestamp":1777733646279,"version":"3.51.4"},"reference-count":21,"publisher":"Association for Computing Machinery (ACM)","issue":"2","content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Database Syst."],"published-print":{"date-parts":[[2005,6]]},"abstract":"<jats:p>Snapshot Isolation (SI) is a multiversion concurrency control algorithm, first described in Berenson et al. [1995]. SI is attractive because it provides an isolation level that avoids many of the common concurrency anomalies, and has been implemented by Oracle and Microsoft SQL Server (with certain minor variations). SI does not guarantee serializability in all cases, but the TPC-C benchmark application [TPC-C], for example, executes under SI without serialization anomalies. All major database system products are delivered with default nonserializable isolation levels, often ones that encounter serialization anomalies more commonly than SI, and we suspect that numerous isolation errors occur each day at many large sites because of this, leading to corrupt data sometimes noted in data warehouse applications. The classical justification for lower isolation levels is that applications can be run under such levels to improve efficiency when they can be shown not to result in serious errors, but little or no guidance has been offered to application programmers and DBAs by vendors as to how to avoid such errors. This article develops a theory that characterizes when nonserializable executions of applications can occur under SI. Near the end of the article, we apply this theory to demonstrate that the TPC-C benchmark application has no serialization anomalies under SI, and then discuss how this demonstration can be generalized to other applications. We also present a discussion on how to modify the program logic of applications that are nonserializable under SI so that serializability will be guaranteed.<\/jats:p>","DOI":"10.1145\/1071610.1071615","type":"journal-article","created":{"date-parts":[[2005,8,3]],"date-time":"2005-08-03T08:30:55Z","timestamp":1123057855000},"page":"492-528","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":217,"title":["Making snapshot isolation serializable"],"prefix":"10.1145","volume":"30","author":[{"given":"Alan","family":"Fekete","sequence":"first","affiliation":[{"name":"University of Sydney, Australia"}]},{"given":"Dimitrios","family":"Liarokapis","sequence":"additional","affiliation":[{"name":"University of Massachusetts"}]},{"given":"Elizabeth","family":"O'Neil","sequence":"additional","affiliation":[{"name":"University of Massachusetts"}]},{"given":"Patrick","family":"O'Neil","sequence":"additional","affiliation":[{"name":"University of Massachusetts"}]},{"given":"Dennis","family":"Shasha","sequence":"additional","affiliation":[{"name":"Courant Institute, New York, NY"}]}],"member":"320","published-online":{"date-parts":[[2005,6]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.5555\/846219.847380"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/276304.276347"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/223784.223785"},{"key":"e_1_2_1_4_1","volume-title":"Graphs and Hypergraphs","author":"Berge C.","unstructured":"Berge , C. 1976. Graphs and Hypergraphs ( 2 nd edition). North-Holland Mathematical Library , Volume 6. Berge, C. 1976. Graphs and Hypergraphs (2nd edition). North-Holland Mathematical Library, Volume 6.","edition":"2"},{"key":"e_1_2_1_5_1","unstructured":"Bernstein P. Hadzilacos V. and Goodman N. 1987. Concurrency Control and Recovery in Database Systems. Addison-Wesley. (This text is now out of print but can be downloaded from http:\/\/research.microsoft.com\/pubs\/ccontrol\/default.htm)   Bernstein P. Hadzilacos V. and Goodman N. 1987. Concurrency Control and Recovery in Database Systems. Addison-Wesley. (This text is now out of print but can be downloaded from http:\/\/research.microsoft.com\/pubs\/ccontrol\/default.htm)"},{"key":"e_1_2_1_6_1","volume-title":"Proceedings of IEEE International Conference on Data Engineering (Feb.). IEEE Computer Society Press, Los Alamitos, Calif., 57--66","author":"Bernstein A.","unstructured":"Bernstein , A. , Lewis , P. , and Lu , S . 2000. Semantic conditions for correctness at different isolation levels . In Proceedings of IEEE International Conference on Data Engineering (Feb.). IEEE Computer Society Press, Los Alamitos, Calif., 57--66 . Bernstein, A., Lewis, P., and Lu, S. 2000. Semantic conditions for correctness at different isolation levels. In Proceedings of IEEE International Conference on Data Engineering (Feb.). IEEE Computer Society Press, Los Alamitos, Calif., 57--66."},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/304182.304191"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/358769.358784"},{"key":"e_1_2_1_9_1","volume-title":"Tech. Rep. IC\/2004\/21, EPFL, Mar.","author":"Elnikety S.","year":"2004","unstructured":"Elnikety , S. , Pedone , F. , and Zwaenepoel , W . 2004 . Generalized snapshot isolation and a prefix-consistent implementation. Tech. Rep. IC\/2004\/21, EPFL, Mar. Elnikety, S., Pedone, F., and Zwaenepoel, W. 2004. Generalized snapshot isolation and a prefix-consistent implementation. Tech. Rep. IC\/2004\/21, EPFL, Mar."},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/360363.360369"},{"key":"e_1_2_1_11_1","volume-title":"Proceedings of the Australian Database Conference","author":"Fekete A.","year":"1999","unstructured":"Fekete , A. 1999 . Serializability and snapshot isolation . In Proceedings of the Australian Database Conference ( Auckland, New Zealand, Jan.). 201--210. Fekete, A. 1999. Serializability and snapshot isolation. In Proceedings of the Australian Database Conference (Auckland, New Zealand, Jan.). 201--210."},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/1031570.1031573"},{"key":"e_1_2_1_13_1","unstructured":"Gray J. (Ed.). 1993. The Benchmark Handbook (2nd edition). Morgan-Kaufmann San Francisco Calif.  Gray J. (Ed.). 1993. The Benchmark Handbook (2nd edition). Morgan-Kaufmann San Francisco Calif."},{"key":"e_1_2_1_14_1","volume-title":"Transaction Processing: Concepts and Techniques. Morgan-Kaufmann","author":"Gray J.","year":"1993","unstructured":"Gray , J. and Reuter , A . 1993 . Transaction Processing: Concepts and Techniques. Morgan-Kaufmann , San Francisco , Calif . Gray, J. and Reuter, A. 1993. Transaction Processing: Concepts and Techniques. Morgan-Kaufmann, San Francisco, Calif."},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/233269.233330"},{"key":"e_1_2_1_16_1","volume-title":"Concurrency Control: Transaction Isolation and Serializability in SQL92 and Oracle7. Oracle White Paper, Part No. A33745 (July).","author":"Jacobs K.","year":"1995","unstructured":"Jacobs , K. , Bamford , R. , Doherty , G. , Haas , K. , Holt , M. , Putzolu , F. , and Quigley , B . 1995 . Concurrency Control: Transaction Isolation and Serializability in SQL92 and Oracle7. Oracle White Paper, Part No. A33745 (July). Jacobs, K., Bamford, R., Doherty, G., Haas, K., Holt, M., Putzolu, F., and Quigley, B. 1995. Concurrency Control: Transaction Isolation and Serializability in SQL92 and Oracle7. Oracle White Paper, Part No. A33745 (July)."},{"key":"e_1_2_1_18_1","volume-title":"The Theory of Database Concurrency Control","author":"Papadimitriou C.","unstructured":"Papadimitriou , C. 1986. The Theory of Database Concurrency Control . Computer Science Press . Papadimitriou, C. 1986. The Theory of Database Concurrency Control. Computer Science Press."},{"key":"e_1_2_1_19_1","volume-title":"Database Tuning: Principles, Experiments, and Troubleshooting Techniques. Morgan-Kaufmann","author":"Shasha D.","year":"2002","unstructured":"Shasha , D. and Bonnet , P . 2002 . Database Tuning: Principles, Experiments, and Troubleshooting Techniques. Morgan-Kaufmann , San Francisco , Calif . Shasha, D. and Bonnet, P. 2002. Database Tuning: Principles, Experiments, and Troubleshooting Techniques. Morgan-Kaufmann, San Francisco, Calif."},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/211414.211427"},{"key":"e_1_2_1_21_1","volume-title":"Proceedings of 5th IFCIS International Conference on Cooperative Information Systems (CoopIS 2000)","author":"Schenkel R.","unstructured":"Schenkel , R. and Weikum , G . 2000. Integrating snapshot isolation into transactional federations . In Proceedings of 5th IFCIS International Conference on Cooperative Information Systems (CoopIS 2000) (Sept.), 90--101. Schenkel, R. and Weikum, G. 2000. Integrating snapshot isolation into transactional federations. In Proceedings of 5th IFCIS International Conference on Cooperative Information Systems (CoopIS 2000) (Sept.), 90--101."},{"key":"e_1_2_1_22_1","unstructured":"TPC-C Benchmark Specification available at http:\/\/www.tpc.org\/tpcc\/.  TPC-C Benchmark Specification available at http:\/\/www.tpc.org\/tpcc\/."}],"container-title":["ACM Transactions on Database Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1071610.1071615","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,12,28]],"date-time":"2022-12-28T16:25:04Z","timestamp":1672244704000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1071610.1071615"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2005,6]]},"references-count":21,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2005,6]]}},"alternative-id":["10.1145\/1071610.1071615"],"URL":"https:\/\/doi.org\/10.1145\/1071610.1071615","relation":{},"ISSN":["0362-5915","1557-4644"],"issn-type":[{"value":"0362-5915","type":"print"},{"value":"1557-4644","type":"electronic"}],"subject":[],"published":{"date-parts":[[2005,6]]},"assertion":[{"value":"2005-06-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}