[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Autoincrement и блокировка
Страницы: 1, 2
maximka787
Парни, подскажите, кто знает.

Есть таблицы InnoDB

Cron раз в час будет изменять autoincrement на +N (для накручивания видмости роста сайта)

Вопрос.

1. Можно ли злоупотреблять изменением autoincrement как в плюс так и обратно? при условии конечно же, что новое значение будет не ниже последнего ID.

2. Тк InnoDB таблицы не блокируются, может ли быть такое, что при выполнении нескольких UPDATE (одного скрипта) выполнился UPDATE другого пользователя. влезшего между запросами с первого? Тоесть нужно как то сделать так, чтоб пока скрипт не выполнит все 10 запросов, то никаких данные в таблицу никто вставить не мог. Понимаю, шанс одновременного выполнения скрипта в долях секунд совпасть наврятли может, но вот если вдруг выполнится то база полетит.

3. Можно ли получить текущий autoincrement таблицы (не последний id, а именно autoincrement)? Без бубна.

_____________
..Работает - не трогай!
Игорь_Vasinsky
Цитата
Cron раз в час будет изменять autoincrement на +N

точно?

Цитата
Можно ли получить текущий autoincrement

http://php.net/manual/ru/function.mysql-insert-id.php может быть, хотя я не уверен

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
maximka787
Цитата (Игорь_Vasinsky @ 24.07.2015 - 14:57)
Цитата
Cron раз в час будет изменять autoincrement на +N

точно?

Цитата
Можно ли получить текущий autoincrement

http://php.net/manual/ru/function.mysql-insert-id.php может быть, хотя я не уверен

Запрос выполняется без проблем. Если не кроном, то просто фоновой подгрузкой функции.

Что касается "получения текущего autoincrement" можно не смотреть.
Я искал везде, понял, что это сложно. С помощью last insert ID он не даст AI. Он даст последний ID.

Самое важное, это вопрос 2.

_____________
..Работает - не трогай!
Valick
Цитата (maximka787 @ 24.07.2015 - 17:40)
пока скрипт не выполнит все 10 запросов, то никаких данные в таблицу никто вставить не мог

для этого существуют транзакции, но судя по вопросу у вас сильная каша в голове, так бывает когда не читаешь книг.

_____________
Стимулятор ~yoomoney - 41001303250491
Игорь_Vasinsky
Цитата
не читаешь книг.

user posted image

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
sergeiss
Цитата (maximka787 @ 24.07.2015 - 18:40)
3. Можно ли получить текущий autoincrement таблицы (не последний id, а именно autoincrement)? Без бубна.

В MySQL нет, в PostgreSQL - да: http://phpforum.su/index.php?showtopic=83967 То есть, в Постгре ты можешь получить все данные, которые были на самом деле вставлены в таблицу. И пофиг, какой там автоинкремент smile.gif Ты получишь айди именно твоей записи.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Guest
Цитата (sergeiss @ 24.07.2015 - 23:28)
В MySQL нет
sergeiss
Цитата (Guest @ 24.07.2015 - 23:43)
Что???
https://dev.mysql.com/doc/refman/5.0/en/sho...ble-status.html

Ты прочитай, что спрашивает ТС. Не только в начале темы, но и в ее середине. И ты поймешь, что мой ответ был верным smile.gif Он хочет получить именно тот айди, что был назначен его записи.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Valick
Цитата (sergeiss @ 24.07.2015 - 23:09)
И ты поймешь, что мой ответ был верным smile.gif Он хочет получить именно тот айди

Цитата (maximka787 @ 24.07.2015 - 17:40)
Можно ли получить текущий autoincrement таблицы (не последний id, а именно autoincrement)?

sergeiss, бухаешь чтоль?)


_____________
Стимулятор ~yoomoney - 41001303250491
maximka787
Ну лан ребят, я почти во всем разобрался. И все таки скажите, где про кашу писали в голове.. Если один скрипт содержит 10 запросов, быстрых, простых. То если одновременно выполнить этот же скрипт на другой машине, могут ли они выполниться параллельно? Или сначала один, потом другой? Тут знания уже глубокие, а информация мне не попадалась.

_____________
..Работает - не трогай!
Valick
Цитата (maximka787 @ 27.07.2015 - 09:47)
могут ли они выполниться параллельно

да
Цитата (maximka787 @ 27.07.2015 - 09:47)
а информация мне не попадалась

а где искал-то?

_____________
Стимулятор ~yoomoney - 41001303250491
maximka787
Оказывается AI вытаскивается вот этим запросом. Guest ответил верно.
SHOW TABLE STATUS FROM `database` LIKE 'users'


А можно как-то заблокировать выполнение других скриптов, пока не выполнится один конкретный?

_____________
..Работает - не трогай!
maximka787
Ладно...
Сокращу до минимума :)

$result = mysql_query("SHOW TABLE STATUS FROM `dbname` LIKE 'users'");
$row = mysql_fetch_array($result);

$new_ai = $row['Auto_increment'] + rand(30,100);
mysql_query("ALTER TABLE `users` AUTO_INCREMENT = ".intval($new_ai));


В рамках данного скрипта может пролезть какой-то запрос?

Теоретически нет, но не знаю, как работает список задач сервера, не могу ничего утверждать. Как вы считаете, безопасно использовать такой скрипт? Мне главное целостность данных сохранить и без ошибок чтобы все прописывалось.

_____________
..Работает - не трогай!
Valick
maximka787, абсолютно нет никакого желания вам помогать, потому что вы не слушаете, что вам говорят и не отвечаете на наводящие вопросы.


_____________
Стимулятор ~yoomoney - 41001303250491
maximka787
Цитата (Valick @ 27.07.2015 - 10:47)
maximka787, абсолютно нет никакого желания вам помогать, потому что вы не слушаете, что вам говорят и не отвечаете на наводящие вопросы.

да я с радостью отвечу, только я не видел вопроса..

Цитата
для этого существуют транзакции, но судя по вопросу у вас сильная каша в голове, так бывает когда не читаешь книг.

а на это я не знаю что ответить. Транзакции это наверно их другой степи, тк тут 2 независимых запроса..

_____________
..Работает - не трогай!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.