Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Генерация уникальных значений
|
|||
|---|---|---|---|
|
#18+
Необходимо для нескольких клиентов генерировать уникальные целочисленные значения в пределах пяти суток. Раньше были рандомы, но при увиличении нагрузки стали появляться дубликаты. Т.к. все приложения пользуют одну БД решили сделять через спец. таблицу плюс ХП которая вызывает для нее GET_IDENTITY. Сегодня после перегрузки сервера БД по питанию (UPS сдох) началась генерации с значений которые были сгенерированы некоторое время до этого. Я так понял, что это значения которые были сгенерированы после последнего checkpoint'a. Вопрос заключается в том как избежать повторных генераций? У меня есть идея, которая заключается в том что GET_IDENTITY не пишется в transaction log и если сгенерированное значение сохранять в таблице(делать INSERT + @@identity), то можно этого избежать. Но при этом неизбежно возникнут издержки. Может у кого есть лучшие идеи? Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 14:30 |
|
||
|
Генерация уникальных значений
|
|||
|---|---|---|---|
|
#18+
а сколько примерно записей за 5 суток генерится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 15:00 |
|
||
|
Генерация уникальных значений
|
|||
|---|---|---|---|
|
#18+
Порядка 400-500 тыс. Но для нас важными яалются порядка 40%, т.е. эти значения не должны повторятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 15:10 |
|
||
|
Генерация уникальных значений
|
|||
|---|---|---|---|
|
#18+
moteus пишет: > Может у кого есть лучшие идеи? СУБД -то какая ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 15:39 |
|
||
|
Генерация уникальных значений
|
|||
|---|---|---|---|
|
#18+
Сорри. ASA 9.0.2.3044 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 15:40 |
|
||
|
Генерация уникальных значений
|
|||
|---|---|---|---|
|
#18+
сори за кривизну и непроверенность на то, действительно ли уникальные значения генерируются... просто с ходу, а вдруг ;) Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 18:56 |
|
||
|
Генерация уникальных значений
|
|||
|---|---|---|---|
|
#18+
на мой взгляд - такие задачи лучше делать через свой счётчик (1 таблица в базе) тогда ты точно знаешь какое значение будет следующим, знаешь как он работает, можешь повлиять на процесс генерации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 20:52 |
|
||
|
Генерация уникальных значений
|
|||
|---|---|---|---|
|
#18+
moteusВопрос заключается в том как избежать повторных генераций?А зачем их избегать? Сгенировал новый ID, проверил его в базе, если есть такой уже - сгенерируй новый ID и проверь его. И сиди в цикле генерации Id и проверки до тех пор пока не сделаешь уникальный ID. Его и запишешь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 23:06 |
|
||
|
Генерация уникальных значений
|
|||
|---|---|---|---|
|
#18+
а так не пойдет ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2007, 02:33 |
|
||
|
Генерация уникальных значений
|
|||
|---|---|---|---|
|
#18+
White Owl авторА зачем их избегать? Сгенировал новый ID, проверил его в базе, если есть такой уже - сгенерируй новый ID и проверь его. И сиди в цикле генерации Id и проверки до тех пор пока не сделаешь уникальный ID. Его и запишешь... Я не сохраняю значения при генерации, а просто отдаю их клиентам. Далее клиент если делает определенные запросы - посылает это и это число. На практике один запрос может прийти несколько раз и это число используется для того чтобы проверить бал ли такой запрос ранее и выполнить его только один раз. Именно в этот момент и происходит сохранение этого числа в базе, но сохраняются примерно 40%. Я думаю сделать как предложил Марсель , но не встовлять записи со сгенерированными значениями в таблицу, а обновлять одну запись новым значением. Вот только не возникнут ли DeadLock. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2007, 12:32 |
|
||
|
Генерация уникальных значений
|
|||
|---|---|---|---|
|
#18+
А я сделал табличку с полями regid счетчик, a1 integer, t1 timestamp, ну и вызываю свою функцию, в которой определяю дату/время через tx=NOW(), вставляю это значение в таблицу, поле a1 integer по умолчанию = 1, затем select sum(a1) where t1<=tx и отдаю это значение. Ночью проверяю подключения, беру всю сумму, удаляю все значения, ставлю счетчик в 0 и вставляю сумму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2007, 14:02 |
|
||
|
Генерация уникальных значений
|
|||
|---|---|---|---|
|
#18+
В общем сделал так Код: plaintext 1. 2. 3. 4. 5. Всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2007, 15:42 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=34726856&tid=2011949]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 333ms |

| 0 / 0 |
