Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
last_insert_id - он уникален для ...(+) (Сугубый) 17/07/2003 - 14:59:03
      Re: last_insert_id - он уникален для ...(+) (Валентин) 17/07/2003 - 15:24:02
      Re: last_insert_id - он уникален для ...(+) (walrus) 17/07/2003 - 16:31:35
      Re: last_insert_id - он уникален для ...(+) (Сугубый) 17/07/2003 - 16:36:39
      Re: last_insert_id - он уникален для ...(+) (Валентин) 17/07/2003 - 17:08:38
      Re: last_insert_id - он уникален для ...(+) (walrus) 17/07/2003 - 18:51:29
      Re: last_insert_id - он уникален для ...(+) (Dinky) 18/07/2003 - 01:25:09
      Re: last_insert_id - он уникален для ...(+) (walrus) 18/07/2003 - 02:31:32
      Re: last_insert_id - он уникален для ...(+) (Vodkin) 18/07/2003 - 12:40:07
      Re: last_insert_id - он уникален для ...(+) (Dinky) 18/07/2003 - 18:11:58

> Original message text:
> From: Сугубый - 17/07/2003 - 14:59:03
> Subject:last_insert_id - он уникален для ...(+)
> -----------------
> Доброго времени суток!
>
> Здесь такое дело: веб приложение, коннект к базе один, на каждый HTTP запрос к странице создается курсор (работаем в технологии ZOPE). На страничке выполняется что-то типа:
> INSERT INTO table1 (mess) values ('сообщение пользователя');
> INSERT INTO table2 (ref_id, ...) values (last_insert_id(), ...);
> (table2.ref_id является форейн кеем к table1.id, который AUTO INCREMENT)
>
> Так вот вопрос следующий: last_insert_id - он уникален для коннекта или для курсора? В доке написано: "Значение последнего сгенерированного ID сохраняется на сервере для данного конкретного соединения и не будет изменено другим клиентом." Значит ли это что при интенсивных конкурирующих запросах на одном коннекте возможно перемешивание last_id?
>
> А если уникальность гарантируется на соединение, то может кто сталкивался (задачка-то достаточно стандартная) - как решали?
>
> Заранее спасибо.
>
>


From: Валентин - 17/07/2003 - 15:24:02
Subject:last_insert_id - он уникален для ...(+)
-----------------
Функция last_insert_id() возвращает последнее значения поля auto_inctement в любой транзакции, открыток до последнего изменения или после него.
Насчет конкурирующих запросов. Почитайте еще раз мануал в разделе InnoDB.
При конкурирующих запросах в любом случае создается очередь вставки, и встевляют потоки в таблицу только в порядке очереди . Очередь строится в памяти по времени запроса на добавление.
Поэтому на самом деле нет параллельных попыток вставить запись. Время для процессора квантуется и не может быть одновременой обработке в кванте времени 2-х процессов с одним ядром сервера БД даже на много процессорной системе, потому что основной процесс сервера обрабатывается в одном пространстве одним процессором.
Это обязательное условие в любом сервере баз данных и не только в мускуле. Реализуют все со своими приколами, но правило все стараются ударжать одно.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
9664



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |