Хотя Digital Q.DataBase обеспечивает неблокирующий доступ на чтение/запись к данным таблиц, неблокирующий доступ на чтение/запись в настоящее время реализован не для каждого метода доступа к индексам в Digital Q.DataBase. Различные типы индексов обрабатываются следующим образом:
Для доступа на чтение/запись используются кратковременные разделяемые или исключительные блокировки на уровне страниц. доступа на чтение/запись. Блокировки снимаются сразу после того, как каждая индексная строка будет извлечена или вставлена. Данные типы индексов обеспечивают наивысший уровень управления одновременным доступом без возникновения условий взаимной блокировки.
Для операций чтения и записи используются разделяемые и исключительные блокировки на уровне хеш-корзин доступа. Блокировки освобождаются после завершения обработки всей корзины. Блокировки на уровне корзин обеспечивают более эффективное управление одновременным доступом, чем блокировки на уровне индекса, однако возможна взаимная блокировка, так как блокировки удерживаются дольше, чем длится одна операция с индексом.
Для доступа на чтение/запись используются кратковременные разделяемые или исключительные блокировки на уровне страниц. доступа на чтение/запись. Блокировки снимаются сразу после того, как каждая индексная строка будет извлечена или вставлена. Однако следует учитывать, что вставка значения в индекс GIN обычно приводит к вставке нескольких индексных ключей для каждой строки, поэтому метод GIN может выполнять значительный объем работы при вставке одного значения.
В настоящее время B-деревья обеспечивают наилучшую производительность для приложений с одновременным доступом; поскольку они также обладают большей функциональностью, чем хеш-индексы, они являются рекомендуемым типом индекса для приложений с одновременным доступом, которым необходимо индексировать скалярные данные. При работе с нескалярными данными B-деревья неэффективны, и вместо них следует использовать индексы GiST, SP-GiST или GIN.