Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server - Que se passe-t-il lorsqu'une ligne d'une table est mise à jour ?

Faux. Les données sont modifiées sur place, dans la même page dans la plupart des cas. Avec SQL Server 2008, vous pouvez réellement interroger l'emplacement des données sur le disque, ce qui en révélera autant.

Après l'avoir regardé maintenant, je reprends tout :

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

Cela peut être facilement testé sur SQL Server 2008. (code modifié de l'article lié)

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