Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL Server:cosa succede quando viene aggiornata una riga in una tabella?

Falso. I dati vengono modificati sul posto, all'interno della stessa pagina nella maggior parte dei casi. Con SQL Server 2008, puoi effettivamente interrogare dove risiedono i dati sul disco, il che rivelerà altrettanto.

Avendolo effettivamente guardato ora, riprendo tutto indietro:

http://www.sqlskills.com/BLOGS/PAUL/category/On-Disk-Structures.aspx

Questo può essere facilmente testato su SQL Server 2008. (codice modificato dall'articolo collegato)

CREATE TABLE test (c1 INT, c2 VARCHAR (2000));
GO
CREATE CLUSTERED INDEX test_cl ON test (c1);
GO
CHECKPOINT;
GO
INSERT INTO test VALUES (1, REPLICATE ('Paul', 500));
GO
CHECKPOINT;
select %%physloc%%, * from test    -- 0x3E01000001000000
GO
UPDATE test SET c1 = 2 WHERE c1 =1;
GO
select %%physloc%%, * from test    -- 0x3E01000001000100
                                                     ^
                                                     |
                                    notice it has changed location