• UAH
  • USD
  • RUB
  • EUR
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепропетровск
  • +38(062) 210-24-93  Донецк
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 449-04-21  Life
  • +38(067) 400-88-44  Киевстар
  • +38(095) 007-72-35  MTC
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

MySQL. Проблема з INSERT IGNORE та innodb_autoinc_lock_mode

Форумы MySQL Проблема з INSERT IGNORE та innodb_autoinc_lock_mode
dabeedj
01.06.2016 18:19
хостинг: есть
домен: нет
Проблема з INSERT IGNORE та innodb_autoinc_lock_mode
Доброго дня
Пропоную змінити параметер у mysql.ini
Замість стандартного значення прописати
innodb_autoinc_lock_mode = 0
На даний момент при спробі INSERTу дубляжу унікального ключа за допомогою INSERT IGNORE вставка не відбувається (як і має бути), але спрацьовує auto_increment
Таким чином, якщо, для прикладу, поточний primiry key auto_increment = 1 і зробити 10 вставок з дублями, кількість рядків не збільшиться, а auto_increment буде = 11
Наскіьки мені відомо, на нормально роботузвичайних запитів воно не вплине
Хотів би почути вашу думку
Илья
02.06.2016 01:59
хостинг: есть
домен: есть
1
Режим consecutive был создан для того, чтоб дать возможность одновременно выполнять несколько простых INSERT в таблицу без необходимости блокировать другие INSERT запросы. Этого нет в traditional, который был до версии 5.1 - там любой INSERT запрос блокирует другой INSERT. Да, минусом в этом случае является увеличение значения auto increment при MIXED INSERT и INSERT ON DUPLICATE KEY UPDATE
dabeedj
02.06.2016 02:04
хостинг: есть
домен: нет
І що, в даному випадку, білше зло?:)
Для мене consecutive.
Можливо є якесь рішення, як обійти це і не завалити ресурси сервака, про яке я не знаю?:)
Илья
02.06.2016 02:08
хостинг: есть
домен: есть
1
Можливо є якесь рішення, як обійти це і не завалити ресурси сервака, про яке я не знаю © dabeedj

Возможно перевод этой таблицы на MyISAM решит проблему? Если транзакций нет, то вполне возможно это будет выход из ситуации?
dabeedj
02.06.2016 02:11
хостинг: есть
домен: нет
Якби не були потрібні зовнішні ключі, то я б так і зробив
Илья
02.06.2016 03:04
хостинг: есть
домен: есть
А на что влияет рост значения id в таблице? почему не получается просто проигнорировать этот факт?
dabeedj
02.06.2016 03:26
хостинг: есть
домен: нет
Як в одному анекдот - "нєакуратнєнько виходіт":)
Таких "прольотів" може бути тисячі за раз і букавальне за пару днів можна добратись до 7-8-значних id, при тому, що реально записів буде декілька сотень
info620
02.06.2016 11:00
хостинг: есть
домен: есть
2
Таких "прольотів" може бути тисячі за раз і букавальне за пару днів можна добратись до 7-8-значних id, при тому, що реально записів буде декілька сотень
© dabeedj


Оберіть коли навантаження найменше та по крону запускайте в цей час скрипт що буде перевстановлювати ID - якщо у вас UPDATE для ключів CASCADE тоді ключи оновлюяться автоматично - профіт!
Або перейдіть на UUID тоді проблема відстрочиться на ...... багато там щось ~ 10^42 варіантів + UUID генерується по часу якщо я правельно пам'ятаю :)

І доречі з огляду на ACID consecutive все ж добро ;)

Update ~10^38 точніше 2^128 ) трошки менше але це все рівно більше ніж BIGINT в якому 2^64
dabeedj
02.06.2016 21:30
хостинг: есть
домен: нет
Хороша ідея, загалом:) Але я з тих "бувших", які мали 48кБ RAM на початках і я терпіти не можу таку "розточітєльность":)))
info620
03.06.2016 11:12
хостинг: есть
домен: есть
Хороша ідея, загалом:) Але я з тих "бувших", які мали 48кБ RAM © dabeedj


Не повірите але не ви один :) Проте час іде і треба еволюціонувати ;)

P.S. Добре добре в мене не 48КБ було вже, а в мегабайтах. Але 8МБ це було мега круто і пакування данних через бітові поля в Сях було нормою:)
dabeedj
03.06.2016 15:56
хостинг: есть
домен: нет
Я взагалі на Сях намагався максимум, що можу, на ассемблері ембедити:) Ібо ібо:)
Участвовать в общении на этом форуме могут только
зарегистрированные пользователи.

Если вы уже зарегистрированы Вам необходимо войти на форум.

Тема закрыта по истечению срока давности.
Горячая линия
(044)
392 74 33
другие города