Последовательный (расческа) GUID для Oracle

Мы находимся в процессе переключения с Гуида C#. NewGuid () генератор гуида случайного выхода к последовательному алгоритму гуида, предложенному в этом сообщении. В то время как это, кажется, работает хорошо на SQL Server MS, я не уверен в последствиях для баз данных Oracle, в которых мы храним гуиды в сырых данных (16) поле. Делает у любого есть любое понимание относительно того, был ли этот алгоритм хорош для создания последовательных гуидов для Oracle, а также для SQL Server MS, или если другой вариант должен использоваться.

Спасибо!

6
задан Community 23 May 2017 в 11:47
поделиться

2 ответа

Использование raw (16) кажется разумным типом данных для GUID. Максимальный размер необработанных данных составляет 2000 байт и поддерживается в Oracle 9i, 10g и 11.

Также существует функция sql для генерации GUID, она называется SYS_GUID. см. Документацию здесь-> http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/functions153.htm

Возможно, вас заинтересует эта статья -> http: // feueroughtts .blogspot.com / 2006/02 / watch-out-for-sequence-oracle-guids.html

2
ответ дан 17 December 2019 в 18:12
поделиться

Когда индексный блок «переполнен» для еще одной записи, он разделяется.

Oracle имеет два пути: один оптимизирован для значений «последовательного» стиля, а другой - для значений «случайного» типа. Если новая запись находится в самом правом конце индекса, вы получите разделение 90-10. Если он находится где-то посередине, вы получите 50-50. Если вы хотите, чтобы «новые» значения были сгруппированы вместе в индексе, полезно использовать последовательное значение. Если вы хотите, чтобы они были разбросаны (например, чтобы избежать конкуренции за «горячие» блоки), тогда полезно использовать случайные значения.

Будет ли эта техника «хороша» для Oracle, зависит от того, какую проблему вы пытаетесь решить.

1
ответ дан 17 December 2019 в 18:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: