Форум: "Базы";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];
ВнизГенератор уникального значения Найти похожие ветки
← →
Ш-К (2005-01-13 15:09) [0]Как в MSSQL сгенирировать уникальный 4-х байтный идентификатор. Генератор общий на всю базу.
← →
Stanislav © (2005-01-13 15:17) [1]А Identy зачем или GUID ?
← →
sniknik © (2005-01-13 15:18) [2]сделай автоинкремент в левой таблице, при любом добавлеии в базу добавляй и туда, потом получившийся автоинкремент используй как это уникальное значение. (попробуй это в тригере реализовать, тогда не нужно будет заботится при каждой записи)
← →
sniknik © (2005-01-13 15:21) [3]Stanislav © (13.01.05 15:17) [1]
так первое не "сквозное" на всю базу а второе 16 байт. ;о))
а Ш-К явно в MSSQL с IB/или клона перебрался, у них мозги по другому повернуты, с их отличной от других системой генераторов. ;о)).
← →
Ш-К (2005-01-13 15:30) [4]sniknik © (13.01.05 15:18) [2]
Каждая тр. на вставку будет блокировать таблицу. В тормоза жуткие выльеца. Не говоря о дидлоках.
sniknik © (13.01.05 15:21) [3]
Да перебрался.)
← →
Ega23 © (2005-01-13 15:33) [5]Каждая тр. на вставку будет блокировать таблицу. В тормоза жуткие выльеца. Не говоря о дидлоках.
Ничего не выльется. Хочешь уникальности - на тебе Identity. Не хочешь -
Declare @X int Select @X=Max(ID)+1 from Table1
Insert into Table1 (ID) Values (@X)
← →
Polevi © (2005-01-13 15:39) [6]CREATE PROCEDURE GETID @Id INT OUT AS
UPDATE SEEDS SET ID=ID+@How, @Id=ID
GO
← →
Ш-К (2005-01-13 15:49) [7]Ega23 © (13.01.05 15:33) [5]
А когда много клиентов?
Polevi © (13.01.05 15:39) [6]
Такое не оттранслируется.
All
А ели брать чексум то GUID? Так не проще будет? Где больше подводных камней?
← →
Ega23 © (2005-01-13 15:57) [8]А когда много клиентов?
Ну и что? Много - это сколько?
← →
Ш-К (2005-01-13 16:03) [9]Ega23 © (13.01.05 15:57) [8]
Два юзера будут делать вставку в Table1 одновременно.
← →
Ega23 © (2005-01-13 16:09) [10]Два юзера будут делать вставку в Table1 одновременно.
На одной таблице не могут 2 транзакции одновременно пройти. Они встанут в очередь. Так что сначала один, а потом - второй. Ну а если identity - вааще по барабану, сервер сам всё отследит.
← →
Ш-К (2005-01-13 16:24) [11]Ega23 © (13.01.05 16:09) [10]
Генератор общий на всю базу.
Не на одну таблицу.
В итоге все транзакции на вставку по всем таблицам (где я юзаю идентификатор) ставятся в очередь. Вот и тормоза.
← →
Ega23 © (2005-01-13 16:26) [12]Генератор общий на всю базу.
Не на одну таблицу.
В итоге все транзакции на вставку по всем таблицам (где я юзаю идентификатор) ставятся в очередь. Вот и тормоза.
?????????? Несколько раз прочитал, ничего не понял.
Какой генератор?
← →
Ш-К (2005-01-13 16:32) [13]Не генератор - идентификатор о котором и речь. Тот, что 4 байта. Он общий для всех таблиц.
← →
Ega23 © (2005-01-13 16:36) [14]Не генератор - идентификатор о котором и речь. Тот, что 4 байта. Он общий для всех таблиц.
Изврат какой-то...
← →
sniknik © (2005-01-13 20:45) [15]> Изврат какой-то...
нормальная практика в IB (зачем к примеру "рисовать" кучу генераторов если все таблици на один можно "повесить", вот и получился "сквозной" через всю базу. но попробуй эту логику в другие базы перенести, и ... ;о)))
> В итоге все транзакции на вставку по всем таблицам (где я юзаю идентификатор) ставятся в очередь. Вот и тормоза.
ты что в монопольной транзакции при начале редактирования ту таблицу открываеш? ;о)) (записал, прочитал, бросил, вот достойная логика, и никаких тормозов ;)
← →
Val © (2005-01-14 09:45) [16]>[3] sniknik © (13.01.05 15:21)
у них мозги по другому повернуты, с их отличной от других системой генераторов.
>[15] sniknik © (13.01.05 20:45)
но попробуй эту логику в другие базы перенести, и ...
Думаю, абсолютно спокойно можно провести аналогию с оракловскими сиквенсес, например.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.045 c