Все современные транзакционные базы данных (современные средства, разработанные в последнее десятилетие) используют журналирование транзакций.
Это означает, что все изменения в базе данных последовательно записываются в специальный файл (называемый журналом транзакций), а затем специальный выделенный процесс анализирует этот файл и применяет изменения к фактическим данным. Это называется CHECKPOINT
.
Если десять потоков вставят десять записей в таблицу со столбцом IDENTITY
, механизм создаст десять записей журнала транзакций (записанных одна за другой одним процессом, называемым Log Writer
), а затем, когда придет время CHECKPOINT
, эти записи будут записаны на соответствующие страницы данных (также одним процессом, называемым Checkpoint
).
Поскольку они являются непрерывными, наиболее вероятно, что они будут записаны в одну страницу данных в одной операции I/O
, и разделение страниц не может произойти, поскольку после них нет данных.
Таким образом, кластеризованный индекс для постоянно увеличивающегося ключа на более эффективнее, чем для случайного ключа.