2009-10-14 6 views
4

Верно ли, что в базах данных Oracle может быть обеспечен лучший параллелизм, чем в базах данных MS SQL Server? В частности, в сценарии OLTP, таком как ERP-система?Лучше параллелизм в Oracle, чем SQL Server?

Я подслушал консультанта SAP, делающего это заявление, ссылаясь на методы блокировки Oracle, такие как блокировка строк и согласованность чтения нескольких версий и журнал повтора.

+0

Я так считаю, так как один пользователь mssql отказался от решения своей проблемы параллелизма из-за неконтролируемой блокировки блокировки mssql http://stackoverflow.com/questions/1483725/select-for-update-with-sql-server – Hao

+0

в типичном Веб-среда OLTP, чтобы гарантировать, что вы записываете данные, которые вы прочитали, вы имплементируете управление версиями, см. Http: // stackoverflow.com/questions/7455726/handling-the-concurrent-request-while-pers-in-oracle-database/7460154 # 7460154 –

ответ

8

Из коробки у Oracle будет более высокая пропускная способность транзакции, но это связано с тем, что по умолчанию она равна MVCC. SQL Server по умолчанию блокирует выбор в незафиксированных обновлениях, но его можно также изменить на MVCC, чтобы разница в основном исчезла. См. Read Committed Isolation Level.

См. Enabling Row Versioning-Based Isolation Levels.

Когда параметр базы данных ALLOW_SNAPSHOT_ISOLATION установлен ВКЛ, экземпляра Microsoft SQL Server Database Engine не генерирует Row версии для измененных данных, пока всех активных операций, которые изменили данных в базе полной , Если есть активная модификация транзакций, SQL Server устанавливает состояние для параметра PENDING_ON. После завершения всех изменений транзакции завершены, состояние опция заменена на ON. Пользователи не могут запустить транзакцию моментального снимка в этой базе данных до тех пор, пока она не станет полностью включенной. База данных проходит через состояние PENDING_OFF, когда администратор базы данных устанавливает опцию ALLOW_SNAPSHOT_ISOLATION на OFF.

+0

+1 Отличный ответ! – Christian13467

+1

Я бы также добавил, что MS SQL pesimistically хранит старые версии данных в хранилище версий при каждом изменении, в то время как Oracle может создавать старые версии «на лету» при необходимости. AFAIK Oracle может позволить себе это сделать, поскольку разделение потоков отмены и повтора в журнале, позволяющее быстро отменять последовательность, создавать образ данных в тот момент, когда читателю это нужно. –

+0

Хорошо, возможно, что блок Oracle выбирает незафиксированные обновления. Это происходит со мной. – user960567

2

На сервере Sql есть блокировка строк, несколько разных уровней изоляции транзакций и журнал транзакций, который можно воспроизвести.

Возможно, он имеет в виду Access, которого у них нет.

Возможно, он полагает, что Oracle использует лучшие дефолты. У него может быть лучший аргумент, но с любой СУБД, если вы говорите о ERP, вам лучше иметь DBA, который знает достаточно о системе, чтобы правильно ее настроить.

5

Он/она, вероятно, ссылаясь на факты, которые:

  • В читателей Oracle не блокируют писателей и писатели не блокируют читателей
  • Oracle не поддерживает список блокировок строк, так что нет значительных накладных расходов при блокировке, и блокировки никогда не переходят на уровень таблицы.
3

Начиная с SQL 2005 это уже не так - вы можете включить изоляцию моментальных снимков, и ваши авторы не будут блокировать ваших читателей, как в Oracle.

Смежные вопросы