Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server - O que acontece quando uma linha em uma tabela é atualizada?


Falso. Os dados são alterados no local, na mesma página na maioria das circunstâncias. Com o SQL Server 2008, você pode realmente interrogar onde os dados residem no disco, o que revelará isso.

Tendo realmente olhado para isso agora, retiro tudo:

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

Isso pode ser facilmente testado no SQL Server 2008. (código modificado do artigo vinculado)
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