"Occur when one transaction reads a set of rows that satisfy a search condition, and then a second transaction modifies the data (through an insert, delete, update, and so on). If the first transaction repeats the read with the same search conditions, it obtains a different set of rows." (Karen Paulsell et al, "Sybase SQL Server: Performance and Tuning Guide", 1996)
"A phenomenon that occurs when a transaction attempts to select a row that does not exist and a second transaction inserts the row before the first transaction finishes. If the row is inserted, the row appears as a phantom to the first transaction, inconsistently appearing and disappearing." (Microsoft Corporation, "SQL Server 7.0 System Administration Training Kit", 1999)
"A problem arising with concurrent transactions. The Phantom problem occurs when a transaction reads multiple rows twice; once before and once after another transaction does a data change that affects the search condition in the first transaction's reads. The result is that Transaction #1 gets a different (larger) result set back from its second read. You can avoid Phantoms by using an isolation level of SERIALIZABLE." (Peter Gulutzan & Trudy Pelzer, "SQL Performance Tuning", 2002)
"A phantom read (or phantom row) describes the occurrence of data returned by a statement in a transaction which was not returned by an earlier statement (with the same WHERE clause) within the same transaction." (Sara Morganand & Tobias Thernstrom , "MCITP Self-Paced Training Kit : Designing and Optimizing Data Access by Using Microsoft SQL Server 2005 - Exam 70-442", 2007)
"A problem with uncontrolled concurrent use of a database that occurs when a transaction reads data for the second time and determines that new rows have been inserted by another transaction." (Jan L Harrington, "Relational Database Design and Implementation, 3rd Ed.", 2009)
"The difference in result tables that occurs when a nonserialized transaction reads the same data twice and different rows are retrieved as a result of the actions of other interleaves transactions." (Jan L Harrington, "SQL Clearly Explained 3rd Ed. ", 2010)
"A table row that can be read by application processes that are executing with any isolation level except repeatable read. When an application process issues the same query multiple times within a single unit of work, additional rows can appear between queries because of the data being inserted and committed by application processes that are running concurrently." (Sybase, "Open Server Server-Library/C Reference Manual", 2019)
"Pertaining to the insertion of a new row or the deletion of an existing row in a range of rows that were previously read by another task, where that task has not yet committed its transaction." (Microsoft, "SQL Server 2012 Glossary", 2012)
No comments:
Post a Comment