Я знаю теорию о том, что чтение с блокировками диапазона & блокировки записи хранятся в течение транзакции в сериализованном уровне изоляции. Я могу понять, что кто-то делает заявление «При прочих равных условиях, Сериализуемая изоляция МОЖЕТ, НО НЕОБХОДИМО, приведет к снижению параллелизма, чем к любому другому уровню изоляции». Но, как утверждают все блоги/документация, более низкий параллелизм и более высокий тупик кажутся определенными. Я пытаюсь понять, почему это должно быть в практическом смысле в моем конкретном случае. Вот вопросы, которые яПочему уровень Serializable Isolation приводит к проблемам взаимоблокировки и параллелизма?
Если сериализации уровня изоляции привести к снижению параллелизма, если различные соединения не имеет доступ к такому же набору записей? Я предполагаю «точно настроенную» OLTP-систему, где каждый запрос является «точечным запросом», возвращающим только несколько строк, а оптимизатор подходит к большим планам. Я также думаю о страницах данных, а не об индексах.
Зачем нужны тупики? Это связано с обновлением индексированных страниц? Но это может произойти на любом уровне изоляции, отличном от изоляции моментальных снимков. Итак, зачем выделять уровень Serializable Isolation?
Я, конечно же, отвечу на ответ, в котором говорится: «Вы никогда не знаете, когда ваши планы выполнения ухудшатся в зависимости от ввода пользователя. вы ухудшаете ситуацию, устанавливая более высокий уровень изоляции. Поэтому установите самый высокий уровень изоляции, который наилучшим образом подходит для вас.
Я бы с вами согласился, если соединения действительно занимают блокировки. Но отвечаете ли вы все еще хорошо, если было бы редко для двух разных пользовательских подключений получать доступ к одной и той же записи/странице? – QFirstLast
С блокировками диапазона вы блокируете метаструктуру. То есть, данные не требуются даже для операции, которая пытается модифицировать ее для блокировки (см. Пункты выше). Итак, если вы знаете, что ваши два (или более) приложения будут изменять непересекающиеся диапазоны, тогда вы добры. Но я бы ответил: зачем вам сериализуемую изоляцию в этот момент? –
Спасибо, Бен. Что касается «зачем вам сериализуемую изоляцию в этот момент?», Мы еще не приняли решение.Мы находимся в процессе понимания характеристик, плюсов и минусов каждого уровня изоляции и применения его к нашей ситуации. Ваш ответ помог. Я попытаюсь отметить ответ в качестве ответа. В прошлый раз, когда я пробовал, сайт не позволял мне сказать: «Мне нужно было несколько х пунктов, прежде чем я смог это сделать». – QFirstLast