Медлительность подсистем физического диска, как правило, является единственной величайшей проблемой, которую необходимо решить при попытке масштабирования базы данных для обслуживания очень большого числа одновременно работающих авторов. Но это не «практически невозможно» оптимизировать записи в реляционную базу данных. Это может быть сделано. И все же есть компромисс: когда вы оптимизируете записи, выборка больших подмножеств логически связанных данных обычно происходит медленнее.
Запись первичных данных на диск и перебалансировка деревьев индексов могут быть интенсивными на диске. Обслуживание кластеризованных индексов, в соответствии с которыми строки, которые логически связаны друг с другом, хранятся физически смежно на диске, также требует интенсивного использования диска. Такие индексы ускоряют процесс выбора (чтения) при замедлении записи. Поэтому таблица с высокой степенью индексации плохо масштабируется, и чем меньше мощность индекса, тем меньше она масштабируется.
Одной из оптимизаций, направленных на повышение скорости одновременной записи, является использование разреженных таблиц с хешированными первичными ключами и минимальным индексированием. Этот подход устраняет необходимость в индексе по значению первичного ключа и позволяет немедленно искать место на диске, где находится строка, «немедленное» в том смысле, что посредник при чтении индекса не требуется. Алгоритм хешированного первичного ключа возвращает физический адрес строки, используя само значение первичного ключа - простое вычисление, не требующее доступа к диску.
Разреженная таблица является полной противоположностью хранения логически связанных данных, поэтому они физически смежны. В разреженной таблице писатели, так сказать, не наступают друг на друга. Письма похожи на капли дождя, падающие на большое поле, а не на толпу людей на платформе метро, пытающихся шагнуть в поезд через несколько открытых дверей. Разреженная таблица помогает устранить узкие места при записи.
Однако, поскольку логически связанные данные не являются физически смежными, а разбросаны, процесс сбора всех строк в определенном почтовом индексе, скажем, дорогой. Таким образом, эта оптимизация разреженной таблицы hashed-pk является оптимальной только в том случае, когда преобладающим действием является вставка записей, обновление отдельных записей и поиск данных, относящихся к одному объекту за раз, а не к большому набору объектов, как, скажем, в системе ввода заказов. Компания, которая продала товары по телевизору и должна была обслуживать десятки тысяч одновременных заказчиков, размещающих заказы, будет хорошо обслуживаться системой, которая использует разреженные таблицы с хешированными первичными ключами. База данных национальной безопасности, которая опирается на связанные списки, также будет хорошо обслуживаться этим подходом. Многие приложения для социальных сетей также могут использовать его с пользой.