Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server - Was passiert, wenn eine Zeile in einer Tabelle aktualisiert wird?

Falsch. Die Daten werden an Ort und Stelle geändert, in den meisten Fällen innerhalb derselben Seite. Mit SQL Server 2008 können Sie tatsächlich abfragen, wo sich die Daten auf der Festplatte befinden, was auch viel verraten wird.

Nachdem ich es mir jetzt tatsächlich angeschaut habe, nehme ich alles zurück:

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

Dies kann leicht auf SQL Server 2008 getestet werden. (Code aus verlinktem Artikel geändert)

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